diff --git a/docs/ConnectionType.html b/docs/ConnectionType.html deleted file mode 100644 index c2bf08a1b..000000000 --- a/docs/ConnectionType.html +++ /dev/null @@ -1,656 +0,0 @@ - - - - - JSDoc: Class: ConnectionType - - - - - - - - - - -
- -

Class: ConnectionType

- - - - - - -
- -
- -

ConnectionType

- -
Enumerates connection types. - -Based on enums.h in monero-project.
- - -
- -
-
- - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - -

Members

- - - -

(static) I2P

- - - - -
- I2P connection type (value=4). -
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

(static) INVALID

- - - - -
- Invalid connection type (value=0). -
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

(static) IPV4

- - - - -
- IPV4 connection type (value=1). -
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

(static) IPV6

- - - - -
- IPV6 connection type (value=2). -
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

(static) TOR

- - - - -
- TOR connection type (value=3). -
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - -

Methods

- - - - - - - -

(static) isValid()

- - - - - - -
- Indicates if the given connection type is valid or not. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(static) validate()

- - - - - - -
- Asserts that the given connection type is valid. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/GenUtils.html b/docs/GenUtils.html deleted file mode 100644 index ca9d3e739..000000000 --- a/docs/GenUtils.html +++ /dev/null @@ -1,14400 +0,0 @@ - - - - - JSDoc: Class: GenUtils - - - - - - - - - - -
- -

Class: GenUtils

- - - - - - -
- -
- -

GenUtils()

- -
Collection of general purpose utilities. - -TODO: could pull in assert and remove these asserts -TODO: needs cleanup as ES6+ utility class
- - -
- -
-
- - - - -

Constructor

- - - -

new GenUtils()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

(static) arrToCsv(arr)

- - - - - - -
- Converts the given array to a CSV string. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
arr - - is a 2-dimensional array of strings
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the CSV string -
- - - - - - - - - - - - - - - -

(static) arrayContains(arr, obj, compareByReference)

- - - - - - -
- Indicates if the given array contains the given object. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
arr - - -Array.<object> - - - - array that may or may not contain the object
obj - - -object - - - - object to check for inclusion in the array
compareByReference - - -boolean - - - - compare strictly by reference, forgoing deep equality check
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if the array contains the object, false otherwise -
- - - - - - - - - - - - - - - -

(static) arraysEqual(arr1, arr2)

- - - - - - -
- Determines if two arrays are equal. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
arr1 - - is an array to compare
arr2 - - is an array to compare
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if the arrays are equal, false otherwise -
- - - - - - - - - - - - - - - -

(static) assertArray(arg, msg)

- - - - - - -
- Asserts that the given argument is an array. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
arg - - is the argument to assert as an array
msg - - is the message to throw if the argument is not an array
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(static) assertBase58(arg, msg)

- - - - - - -
- Asserts that the given argument is base58. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
arg - - is the argument to assert as base58
msg - - is the message to throw if the argument is not base58
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(static) assertBase64(arg, msg)

- - - - - - -
- Asserts that the given argument is base64. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
arg - - is the argument to assert as base64
msg - - is the message to throw if the argument is not base64
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(static) assertBoolean(arg, msg)

- - - - - - -
- Asserts that the given argument is a boolean. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
arg - - is the argument to assert as a boolean
msg - - is the message to throw if the argument is not a boolean
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(static) assertDefined(arg, msg)

- - - - - - -
- Asserts that the given argument is defined. Throws an exception if undefined. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
arg - - is the argument to assert defined
msg - - is the message to throw if arg is undefined (optional)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(static) assertEquals(arg1, arg2, msg)

- - - - - - -
- Asserts that the given arguments are equal. Throws an exception if not equal. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
arg1 - - is an argument to assert as equal
arg2 - - is an argument to assert as equal
msg - - is the message to throw if the arguments are not equal
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(static) assertFalse(bool, msg)

- - - - - - -
- Asserts that the given boolean is false. Throws an exception if not a boolean or true. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
bool - - is the boolean to assert false
msg - - is the message to throw if bool is true (optional)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(static) assertFunction(arg, msg)

- - - - - - -
- Asserts that the given argument is a static. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
arg - - is the argument to assert as a static
msg - - is the message to throw if the argument is not a static
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(static) assertHex(arg, msg)

- - - - - - -
- Asserts that the given argument is hex. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
arg - - is the argument to assert as hex
msg - - is the message to throw if the argument is not hex
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(static) assertInitialized(arg, msg)

- - - - - - -
- Asserts that the given argument is initialized. Throws an exception if not initialized. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
arg - - is the argument to assert as initialized
msg - - is the message to throw if arg is not initialized (optional)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(static) assertInt(arg, msg)

- - - - - - -
- Asserts that the given argument is an integer. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
arg - - is the argument to assert as an integer
msg - - is the message to throw if the argument is not an integer
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(static) assertNotEquals(arg1, arg2, msg)

- - - - - - -
- Asserts that the given arguments are not equal. Throws an exception if equal. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
arg1 - - is an argument to assert as not equal
arg2 - - is an argument to assert as not equal
msg - - is the message to throw if the arguments are equal
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(static) assertNotNull(arg, msg)

- - - - - - -
- Asserts that the given argument is not null. Throws an exception if null. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
arg - - is the argument to assert not null
msg - - is the message to throw if arg is null (optional)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(static) assertNull(arg, msg)

- - - - - - -
- Asserts that the given argument is null. Throws an exception if not null. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
arg - - is the argument to assert null
msg - - is the message to throw if arg is not null (optional)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(static) assertNumber(arg, msg)

- - - - - - -
- Asserts that the given argument is a number. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
arg - - is the argument to assert as a number
msg - - is the message to throw if the argument is not a number
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(static) assertObject(arg, obj, msg)

- - - - - - -
- Asserts that the given argument is an object with the given name. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
arg - - is the argument to test
obj - - is an object to assert arg instanceof obj (optional)
msg - - is the message to throw if the argument is not the specified object
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(static) assertString(arg, msg)

- - - - - - -
- Asserts that the given argument is a string. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
arg - - is the argument to assert as a string
msg - - is the message to throw if the argument is not a string
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(static) assertTrue(bool, msg)

- - - - - - -
- Asserts that the given boolean is true. Throws an exception if not a boolean or false. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
bool - - is the boolean to assert true
msg - - is the message to throw if bool is false (optional)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(static) assertUndefined(arg, msg)

- - - - - - -
- Asserts that the given argument is undefined. Throws an exception if defined. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
arg - - is the argument to assert undefined
msg - - is the message to throw if arg is defined (optional)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(static) assertUninitialized(arg, msg)

- - - - - - -
- Asserts that the given argument is uninitialized. Throws an exception if initialized. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
arg - - is the argument to assert as uninitialized
msg - - is the message to throw if arg is initialized (optional)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(static) buildHtmlDocument(content)

- - - - - - -
- Manually builds an HTML document string. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
content - - specifies optional document content - content.div is a pre-existing div to stringify and add to the body - content.title is the title of the new tab - content.dependencyPaths specifies paths to js, css, or img paths - content.internalCss is css to embed in the html document - content.metas are meta elements with keys/values to include
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- str is the document string -
- - - - - - - - - - - - - - - -

(static) copyArray(arr)

- - - - - - -
- Copies the given array. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
arr - - is the array to copy
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- a copy of the given array -
- - - - - - - - - - - - - - - -

(static) copyProperties(obj)

- - - - - - -
- Copies properties in the given object to a new object. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
obj - - is object to copy properties for
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- a new object with properties copied from the given object -
- - - - - - - - - - - - - - - -

(static) countNonWhitespaceCharacters(str)

- - - - - - -
- Counts the number of non-whitespace characters in the given string. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
str - - is the string to count the number of non-whitespace characters in
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- int is the number of non-whitespace characters in the given string -
- - - - - - - - - - - - - - - -

(static) csvToArr(csv)

- - - - - - -
- Converts a CSV string to a 2-dimensional array of strings. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
csv - - is the CSV string to convert
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- a 2-dimensional array of strings -
- - - - - - - - - - - - - - - -

(static) deleteProperties(obj)

- - - - - - -
- Deletes all properties in the given object. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
obj - - is the object to delete properties from
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(static) deleteUndefinedKeys(obj)

- - - - - - -
- Deletes properties from the object that are undefined. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
obj - - is the object to delete undefined keys from
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(static) equals(arg1, arg2)

- - - - - - -
- Determines if two arguments are deep equal. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
arg1 - - is an argument to compare
arg2 - - is an argument to compare
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if the arguments are deep equals, false otherwise -
- - - - - - - - - - - - - - - -

(static) fail(msg)

- - - - - - -
- Throws an exception with the given message. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
msg - - defines the message to throw the exception with (optional)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(static) getCombinations(arr, combinationSize)

- - - - - - -
- Returns combinations of the given array of the given size. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
arr - - is the array to get combinations from
combinationSize - - specifies the size of each combination
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(static) getDownloadableA(name, contents)

- - - - - - -
- Gets an 'a' element that is downloadable when clicked. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
name - - is the name of the file to download
contents - - are the string contents of the file to download
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- 'a' dom element with downloadable file -
- - - - - - - - - - - - - - - -

(static) getIEVersion()

- - - - - - -
- Gets the IE version number. - -Credit: https://stackoverflow.com/questions/19999388/check-if-user-is-using-ie-with-jquery/21712356#21712356 -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the IE version number or null if not IE -
- - - - - - - - - - - - - - - -

(static) getImages(paths, onDone(err,)

- - - - - - -
- Fetches the given list of images. - -Prerequisite: async.js. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
paths - - are the paths to the images to fetch
onDone(err, - - images) is called when done
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(static) getIndent(length) → {string}

- - - - - - -
- Returns a string indentation of the given length; -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
length - - is the length of the indentation
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- is an indentation string of the given length -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(static) getIndices(size)

- - - - - - -
- Returns an array of indices of the given size. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
size - - specifies the size to get indices for
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- array of the given size with indices starting at 0 -
- - - - - - - - - - - - - - - -

(static) getInternalStyleSheet()

- - - - - - -
- Returns the document's first stylesheet which has no href. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- StyleSheet is the internal stylesheet -
- - - - - - - - - - - - - - - -

(static) getInternalStyleSheetText()

- - - - - - -
- Returns the document's internal stylesheet as text. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- str is the document's internal stylesheet -
- - - - - - - - - - - - - - - -

(static) getLines(str, string[)

- - - - - - -
- Returns lines separated by newlines from the given string. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
str - - is the string to get lines from
string[ - - are the lines separated by newlines within the string
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(static) getOuterHtml(node)

- - - - - - -
- Returns the given node's outer HTML. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
node - - is the node to get outer HTML for
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the outer HTML of the given node -
- - - - - - - - - - - - - - - -

(static) getParameterByName(name, url)

- - - - - - -
- Gets a parameter value. - -Credit: https://stackoverflow.com/questions/901115/how-can-i-get-query-string-values-in-javascript -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
name - - is the name of the parameter to get the value of
url - - is a URL to get the parameter from, uses the window's current href if not given
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the parameter's value -
- - - - - - - - - - - - - - - -

(static) getPowerSet(arr)

- - - - - - -
- Returns the power set of the given array. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
arr - - is the array to get the power set of
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- [][] is the power set of the given array -
- - - - - - - - - - - - - - - -

(static) getPowerSetOfLength(arr, size)

- - - - - - -
- Returns the power set of the given array whose elements are the given size. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
arr - - is the array to get the power set of
size - - is the required size of the elements within the power set -returns [][] is the power set of the given array whose elements are the given size
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(static) getRandomInt(min, max)

- - - - - - -
- Gets a non-cryptographically secure random number within a given range. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
min - - is the minimum range of the int to generate, inclusive
max - - is the maximum range of the int to generate, inclusive - -Source: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/random
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(static) getRandomInts(min, max, count)

- - - - - - -
- Gets random ints. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
min - - is the minimum range of the ints to generate, inclusive
max - - is the maximum range of the ints to generate, inclusive
count - - is the number of random ints to get
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(static) getUUID()

- - - - - - -
- Generates a v4 UUID. - -Source: https://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(static) getUniqueRandomInts(min, max, count)

- - - - - - -
- Gets a given number of unique random ints within a range. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
min - - is the minimum range of the ints to generate, inclusive
max - - is the maximum range of the ints to generate, inclusive
count - - is the number of unique random ints to get
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(static) getWhitespaceTokens(str)

- - - - - - -
- Returns tokens separated by whitespace from the given string. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
str - - is the string to get tokens from
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- string[] are the tokens separated by whitespace within the string -
- - - - - - - - - - - - - - - -

(static) hasWhitespace(str)

- - - - - - -
- Indicates if the given string contains whitespace. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
str - - is the string to test
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if the string contains whitespace, false otherwise -
- - - - - - - - - - - - - - - -

(static) imgToDataUrl(img, quality)

- - - - - - -
- Converts the given image to a base64 encoded data url. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
img - - is the image to convert
quality - - is a number between 0 and 1 specifying the image quality
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(static) inheritsFrom(child, parent)

- - - - - - -
- Sets the child's prototype to the parent's prototype. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
child - - is the child class
parent - - is the parent class
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(static) initPolyfills()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(static) invoke()

- - - - - - -
- Invokes functions with arguments. - -arguments[0] is assumed to be an array of functions to invoke -arguments[1...n] are args to invoke the functions with -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(static) isArray(arg)

- - - - - - -
- Indicates if the given argument is an array. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
arg - - is the argument to test as being an array
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if the argument is an array, false otherwise -
- - - - - - - - - - - - - - - -

(static) isBase32()

- - - - - - -
- Determines if the given string is base32. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(static) isBase58()

- - - - - - -
- Determines if the given string is base58. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(static) isBase64()

- - - - - - -
- Determines if the given string is base64. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(static) isBoolean(arg)

- - - - - - -
- Determines if the given argument is a boolean. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
arg - - is the argument to test as being a boolean
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if the argument is a boolean, false otherwise -
- - - - - - - - - - - - - - - -

(static) isBrowser() → {boolean}

- - - - - - -
- Indicates if the current environment is a browser. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if the environment is a browser, false otherwise -
- - - -
-
- Type -
-
- -boolean - - -
-
- - - - - - - - - - - - - -

(static) isCsvFile(file)

- - - - - - -
- Determines if the given file is a csv file. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
file - - is a file
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if the given file is a csv file, false otherwise -
- - - - - - - - - - - - - - - -

(static) isDefined(arg)

- - - - - - -
- Indicates if the given argument is defined. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
arg - - is the arg to test
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if the given arg is defined, false otherwise -
- - - - - - - - - - - - - - - -

(static) isFirefox() → {boolean}

- - - - - - -
- Indicates if the current environment is a firefox-based browser. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if the environment is a firefox-based browser, false otherwise -
- - - -
-
- Type -
-
- -boolean - - -
-
- - - - - - - - - - - - - -

(static) isFunction(arg)

- - - - - - -
- Determines if the given argument is a static. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
arg - - is the argument to test as being a static
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if the argument is a static, false otherwise -
- - - - - - - - - - - - - - - -

(static) isHex(str)

- - - - - - -
- Indicates if the given argument is a hexidemal string. - -Credit: https://github.com/roryrjb/is-hex/blob/master/is-hex.js. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
str - - is the string to test
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if the given string is hexidecimal, false otherwise -
- - - - - - - - - - - - - - - -

(static) isImageAccessible(url, timeout, onDone(bool))

- - - - - - -
- Determines if the image at the given URL is accessible. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
url - - is the url to an image
timeout - - is the maximum time to wait
onDone(bool) - - when the image is determined to be accessible or not
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(static) isInitialized(arg)

- - - - - - -
- Indicates if the given arg is initialized. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
arg - - is the arg to test
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if the given arg is initialized, false otherwise -
- - - - - - - - - - - - - - - -

(static) isInt(arg)

- - - - - - -
- Indicates if the given argument is an integer. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
arg - - is the argument to test
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if the given argument is an integer, false otherwise -
- - - - - - - - - - - - - - - -

(static) isJsonFile(file)

- - - - - - -
- Determines if the given file is a json file. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
file - - is a file
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if the given file is a json file, false otherwise -
- - - - - - - - - - - - - - - -

(static) isLowerCase(str, true)

- - - - - - -
- Determines if all alphabet characters in the given string are lower case. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
str - - is the string to test
true - - if the string is lower case, false otherwise
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(static) isNewline(char)

- - - - - - -
- Indicates if the given character is a newline. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
char - - is the character to test
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if the given character is a newline, false otherwise -
- - - - - - - - - - - - - - - -

(static) isNumber(arg)

- - - - - - -
- Indicates if the given argument is a number. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
arg - - is the argument to test
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if the argument is a number, false otherwise -
- - - - - - - - - - - - - - - -

(static) isObject(arg, obj)

- - - - - - -
- Indicates if the given argument is an object and optionally if it has the given constructor name. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
arg - - is the argument to test
obj - - is an object to test arg instanceof obj (optional)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if the given argument is an object and optionally has the given constructor name -
- - - - - - - - - - - - - - - -

(static) isString(arg)

- - - - - - -
- Indicates if the given argument is a string. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
arg - - is the argument to test as being a string
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if the argument is a string, false otherwise -
- - - - - - - - - - - - - - - -

(static) isTxtFile(file)

- - - - - - -
- Determines if the given file is a txt file. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
file - - is a file
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if the given file is a txt file, false otherwise -
- - - - - - - - - - - - - - - -

(static) isUndefined(arg)

- - - - - - -
- Indicates if the given argument is undefined. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
arg - - is the arg to test
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if the given arg is undefined, false otherwise -
- - - - - - - - - - - - - - - -

(static) isUninitialized(arg)

- - - - - - -
- Indicates if the given arg is uninitialized. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
arg - - is the arg to test
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if the given arg is uninitialized, false otherwise -
- - - - - - - - - - - - - - - -

(static) isUpperCase(str)

- - - - - - -
- Determines if all alphabet characters in the given string are upper case. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
str - - is the string to test
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if the string is upper case, false otherwise -
- - - - - - - - - - - - - - - -

(static) isWhitespace(char)

- - - - - - -
- Indicates if the given character is whitespace. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
char - - is the character to test
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if the given character is whitespace, false otherwise -
- - - - - - - - - - - - - - - -

(static) isZipFile(file)

- - - - - - -
- Determines if the given file is a zip file. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
file - - is a file
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if the given file is a zip file, false otherwise -
- - - - - - - - - - - - - - - -

(async, static) killProcess(process, signal) → {Promise.<(number|undefined)>}

- - - - - - -
- Kill the given nodejs child process. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
process - - -process - - - - the nodejs child process to kill
signal - - -string -| - -undefined - - - - the kill signal, e.g. SIGTERM, SIGKILL, SIGINT (default)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the exit code from killing the process -
- - - -
-
- Type -
-
- -Promise.<(number|undefined)> - - -
-
- - - - - - - - - - - - - -

(static) kvLine(key, value, indent, newline, ignoreUndefined) → {string}

- - - - - - -
- Returns a human-friendly key value line. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDefaultDescription
key - - - - is the key
value - - - - is the value
indent - - - - 0 - - indents the line
newline - - - - true - - specifies if the string should be terminated with a newline or not
ignoreUndefined - - - - true - - specifies if undefined values should return an empty string
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- is the human-friendly key value line -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(static) listify(arrOrElem)

- - - - - - -
- Listifies the given argument. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
arrOrElem - - is an array or an element in the array
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- an array which is the given arg if it's an array or an array with the given arg as an element -
- - - - - - - - - - - - - - - -

(static) newWindow(content, onLoad(err,)

- - - - - - -
- Opens the given div in a new window. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
content - - specifies optional window content - content.div is a pre-existing div to stringify and add to the body - content.title is the title of the new tab - content.dependencyPaths specifies paths to js, css, or img paths - content.internalCss is css to embed in the html document - content.metas are meta elements with keys/values to include
onLoad(err, - - window) is invoked with a reference to the window when available
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(static) normalizeUri(uri) → {string}

- - - - - - -
- Normalize a URI. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
uri - - -string - - - - the URI to normalize
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the normalized URI -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(static) objectsEqual(map1, map2)

- - - - - - -
- Determines if two objects are deep equal. - -Undefined values are considered equal to non-existent keys. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
map1 - - is a map to compare
map2 - - is a map to compare
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if the maps have identical keys and values, false otherwise -
- - - - - - - - - - - - - - - -

(static) printStackTrace(msg)

- - - - - - -
- Print the current stack trace. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
msg - - -string - - - - optional message to print with the trace
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(static) reconcile(val1, val2, config, errMsg)

- - - - - - -
- Reconciles two values. - -TODO: remove custom error message -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
val1 - - is a value to reconcile
val2 - - is a value to reconcile
config - - specifies reconciliation configuration - config.resolveDefined uses defined value if true or undefined, undefined if false - config.resolveTrue uses true over false if true, false over true if false, must be equal if undefined - config.resolveMax uses max over min if true, min over max if false, must be equal if undefined
errMsg - - is the error message to throw if the values cannot be reconciled (optional)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the reconciled value if reconcilable, throws error otherwise -
- - - - - - - - - - - - - - - -

(static) remove(arr, val)

- - - - - - -
- Removes every instance of the given value from the given array. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
arr - - is the array to remove the value from
val - - is the value to remove from the array
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if the value is found and removed, false otherwise -
- - - - - - - - - - - - - - - -

(static) safeSet(obj, getFn, setFn, val, config, errMsg)

- - - - - - -
- Sets the given value ensuring a previous value is not overwritten. - -TODO: remove for portability because function passing not supported in other languages, use reconcile only -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
obj - - is the object to invoke the getter and setter on
getFn - - gets the current value
setFn - - sets the current value
val - - is the value to set iff it does not overwrite a previous value
config - - specifies reconciliation configuration - config.resolveDefined uses defined value if true or undefined, undefined if false - config.resolveTrue uses true over false if true, false over true if false, must be equal if undefined - config.resolveMax uses max over min if true, min over max if false, must be equal if undefined
errMsg - - is the error message to throw if the values cannot be reconciled (optional)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(static) shuffle()

- - - - - - -
- Randomize array element order in-place using Durstenfeld shuffle algorithm. - -Credit: https://stackoverflow.com/questions/2450954/how-to-randomize-shuffle-a-javascript-array -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(static) sort(the)

- - - - - - -
- Sorts an array by natural ordering. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
the - - array to sort
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(static) strContains(str, substring)

- - - - - - -
- Indicates if the given string contains the given substring. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
str - - is the string to search for a substring
substring - - is the substring to searchin within the string
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if the substring is within the string, false otherwise -
- - - - - - - - - - - - - - - -

(static) stringifyBIs(str) → {string}

- - - - - - -
- Replace big integers (16 or more consecutive digits) with strings in order -to preserve numeric precision. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
str - - -string - - - - is the string to be modified
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the modified string with big numbers converted to strings -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(static) toLowerCaseArray(arr)

- - - - - - -
- Returns a copy of the given array where each element is lowercase. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
arr - - is the array to convert to lowercase
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- a copy of the given array where each element is lowercase -
- - - - - - - - - - - - - - - -

(static) toUniqueArray(arr)

- - - - - - -
- Returns a new array containing unique elements of the given array. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
arr - - is the array to return unique elements from
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- a new array with the given array's unique elements -
- - - - - - - - - - - - - - - -

(async, static) waitFor(durationMs)

- - - - - - -
- Wait for the duration. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
durationMs - - -number - - - - the duration to wait for in milliseconds
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/HttpClient.html b/docs/HttpClient.html deleted file mode 100644 index 35e084bd9..000000000 --- a/docs/HttpClient.html +++ /dev/null @@ -1,786 +0,0 @@ - - - - - JSDoc: Class: HttpClient - - - - - - - - - - -
- -

Class: HttpClient

- - - - - - -
- -
- -

HttpClient

- -
Handle HTTP requests with a uniform interface.
- - -
- -
-
- - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

(static) digestAuthRequest()

- - - - - - -
- Modification of digest auth request by @inorganik. - -Dependent on CryptoJS MD5 hashing: http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/md5.js - -MIT licensed. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async, static) request(request) → {object|string|object|Uint8Array|number|String|object}

- - - - - - -
-

Make a HTTP request.

-

- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
request - - -object - - - - configures the request to make -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
method - - -string - - - - HTTP method ("GET", "PUT", "POST", "DELETE", etc)
uri - - -string - - - - uri to request
body - - -string -| - -object -| - -Uint8Array - - - - request body
username - - -string - - - - username to authenticate the request (optional)
password - - -string - - - - password to authenticate the request (optional)
headers - - -object - - - - headers to add to the request (optional)
requestApi - - -string - - - - one of "fetch" or "xhr" (default "fetch")
resolveWithFullResponse - - -boolean - - - - return full response if true, else body only (default false)
rejectUnauthorized - - -boolean - - - - whether or not to reject self-signed certificates (default true)
timeout - - -number - - - - maximum time allowed in milliseconds
proxyToWorker - - -number - - - - proxy request to worker thread
- -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
-
    -
  • -
    - response - the response object -
    - - - -
    -
    - Type -
    -
    - -object - - -
    -
    -
  • - -
  • -
    - response.body - the response body -
    - - - -
    -
    - Type -
    -
    - -string -| - -object -| - -Uint8Array - - -
    -
    -
  • - -
  • -
    - response.statusCode - the response code -
    - - - -
    -
    - Type -
    -
    - -number - - -
    -
    -
  • - -
  • -
    - response.statusText - the response message -
    - - - -
    -
    - Type -
    -
    - -String - - -
    -
    -
  • - -
  • -
    - response.headers - the response headers -
    - - - -
    -
    - Type -
    -
    - -object - - -
    -
    -
  • -
- - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/LibraryUtils.html b/docs/LibraryUtils.html deleted file mode 100644 index 7c1ce4e25..000000000 --- a/docs/LibraryUtils.html +++ /dev/null @@ -1,1956 +0,0 @@ - - - - - JSDoc: Class: LibraryUtils - - - - - - - - - - -
- -

Class: LibraryUtils

- - - - - - -
- -
- -

LibraryUtils

- -
Collection of helper utilities for the library.
- - -
- -
-
- - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

(static) deserializeError()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(static) getLogLevel() → {int}

- - - - - - -
- Get the library's log level. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the library's log level -
- - - -
-
- Type -
-
- -int - - -
-
- - - - - - - - - - - - - -

(async, static) getWasmMemoryUsed() → {int}

- - - - - - -
- Get the total memory used by WebAssembly. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the total memory used by WebAssembly -
- - - -
-
- Type -
-
- -int - - -
-
- - - - - - - - - - - - - -

(static) getWasmModule()

- - - - - - -
- Get the WebAssembly module in the current context (nodejs, browser main thread or worker). -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async, static) getWorker() → {Worker}

- - - - - - -
- Get a singleton instance of a worker to share. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- a worker to share among wallet instances -
- - - -
-
- Type -
-
- -Worker - - -
-
- - - - - - - - - - - - - -

(async, static) invokeWorker(objectId, fnName, args) → {any}

- - - - - - -
- Invoke a worker function and get the result with error handling. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
objectId - - -string - - - - identifies the worker object to invoke (default random id)
fnName - - -string - - - - is the name of the function to invoke
args - - -Array.<any> - - - - are function arguments to invoke with
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- resolves with response payload from the worker or an error -
- - - -
-
- Type -
-
- -any - - -
-
- - - - - - - - - - - - - -

(static) isRejectUnauthorized(fnId)

- - - - - - -
- Indicate if unauthorized requests should be rejected. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
fnId - - -string - - - - uniquely identifies the function
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async, static) loadFullModule()

- - - - - - -
- Load the WebAssembly full module with caching. - -The full module is a superset of the keys module and overrides it. - -TODO: this is separate static function from loadKeysModule() because webpack cannot bundle worker using runtime param for conditional import -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async, static) loadKeysModule()

- - - - - - -
- Load the WebAssembly keys module with caching. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(static) log(level, msg)

- - - - - - -
- Log a message. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
level - - -int - - - - log level of the message
msg - - -string - - - - message to log
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(static) serializeError()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async, static) setLogLevel(level)

- - - - - - -
- Set the library's log level with 0 being least verbose. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
level - - -int - - - - the library's log level
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(static) setRejectUnauthorizedFn(fnId, fn)

- - - - - - -
- Register a function by id which informs if unauthorized requests (e.g. -self-signed certificates) should be rejected. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
fnId - - -string - - - - unique identifier for the function
fn - - -function - - - - function to inform if unauthorized requests should be rejected
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(static) setWorkerDistPath(workerDistPath)

- - - - - - -
- Set the path to load the worker. Defaults to "/monero_web_worker.js" in the browser -and "./MoneroWebWorker.js" in node. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
workerDistPath - - -string - - - - path to load the worker
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async, static) terminateWorker()

- - - - - - -
- Terminate monero-javascript's singleton worker. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroAccount.html b/docs/MoneroAccount.html deleted file mode 100644 index 261b35ba6..000000000 --- a/docs/MoneroAccount.html +++ /dev/null @@ -1,1350 +0,0 @@ - - - - - JSDoc: Class: MoneroAccount - - - - - - - - - - -
- -

Class: MoneroAccount

- - - - - - -
- -
- -

MoneroAccount()

- -
Monero account model.
- - -
- -
-
- - - - -

Constructor

- - - -

new MoneroAccount()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

getBalance()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getIndex()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getPrimaryAddress()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getSubaddresses()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getTag()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getUnlockedBalance()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setBalance()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIndex()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setPrimaryAddress()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setSubaddresses()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setTag()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setUnlockedBalance()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toJson()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toString()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroAccountTag.html b/docs/MoneroAccountTag.html deleted file mode 100644 index 0b12a74f1..000000000 --- a/docs/MoneroAccountTag.html +++ /dev/null @@ -1,678 +0,0 @@ - - - - - JSDoc: Class: MoneroAccountTag - - - - - - - - - - -
- -

Class: MoneroAccountTag

- - - - - - -
- -
- -

MoneroAccountTag()

- -
Represents an account tag.
- - -
- -
-
- - - - -

Constructor

- - - -

new MoneroAccountTag()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

getAccountIndices()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getLabel()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getTag()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setAccountIndices()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setLabel()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setTag()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroAddressBookEntry.html b/docs/MoneroAddressBookEntry.html deleted file mode 100644 index 5a9e2ba6b..000000000 --- a/docs/MoneroAddressBookEntry.html +++ /dev/null @@ -1,930 +0,0 @@ - - - - - JSDoc: Class: MoneroAddressBookEntry - - - - - - - - - - -
- -

Class: MoneroAddressBookEntry

- - - - - - -
- -
- -

MoneroAddressBookEntry()

- -
Monero address book entry model
- - -
- -
-
- - - - -

Constructor

- - - -

new MoneroAddressBookEntry()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

getAddress()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getDescription()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getIndex()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getPaymentId()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setAddress()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setDescription()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIndex()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setPaymentId()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toJson()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroAltChain.html b/docs/MoneroAltChain.html deleted file mode 100644 index caa7b103c..000000000 --- a/docs/MoneroAltChain.html +++ /dev/null @@ -1,1098 +0,0 @@ - - - - - JSDoc: Class: MoneroAltChain - - - - - - - - - - -
- -

Class: MoneroAltChain

- - - - - - -
- -
- -

MoneroAltChain()

- -
Models an alternative chain seen by the node.
- - -
- -
-
- - - - -

Constructor

- - - -

new MoneroAltChain()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

getBlockHashes()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getDifficulty()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getHeight()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getLength()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getMainChainParentBlockHash()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setBlockHashes()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setDifficulty()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setHeight()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setLength()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setMainChainParentBlockHash()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toJson()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroBan.html b/docs/MoneroBan.html deleted file mode 100644 index c87997d8f..000000000 --- a/docs/MoneroBan.html +++ /dev/null @@ -1,930 +0,0 @@ - - - - - JSDoc: Class: MoneroBan - - - - - - - - - - -
- -

Class: MoneroBan

- - - - - - -
- -
- -

MoneroBan()

- -
Monero banhammer.
- - -
- -
-
- - - - -

Constructor

- - - -

new MoneroBan()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

getHost()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getIp()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getSeconds()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isBanned()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setHost()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIp()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsBanned()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setSeconds()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toJson()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroBlock.html b/docs/MoneroBlock.html deleted file mode 100644 index 585c5a036..000000000 --- a/docs/MoneroBlock.html +++ /dev/null @@ -1,4600 +0,0 @@ - - - - - JSDoc: Class: MoneroBlock - - - - - - - - - - -
- -

Class: MoneroBlock

- - - - - - -
- -
- -

MoneroBlock(state, txType)

- -
Models a Monero block in the blockchain.
- - -
- -
-
- - - - -

Constructor

- - - -

new MoneroBlock(state, txType)

- - - - - - -
- Construct the model. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
state - - -MoneroBlock -| - -MoneroBlockHeader -| - -object - - - - is existing state to initialize from (optional)
txType - - -MoneroBlock.DeserializationType - - - - informs the tx deserialization type (MoneroTx, MoneroTxWallet, MoneroTxQuery)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - -

Extends

- - - - - - - - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

copy()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getCumulativeDifficulty()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getDepth()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getDifficulty()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getHash()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getHeight() → {number}

- - - - - - -
- Return the block's height which is the total number of blocks that have occurred before. -
- - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the block's height -
- - - -
-
- Type -
-
- -number - - -
-
- - - - - - - - - - - - - -

getHex()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getLongTermWeight()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getMajorVersion()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getMinerTx()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getMinerTxHash()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getMinorVersion()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getNonce()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getNumTxs()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getOrphanStatus()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getPowHash()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getPrevHash()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getReward()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getSize()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getTimestamp()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getTxHashes()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getTxs()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getWeight()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

merge()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setCumulativeDifficulty()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setDepth()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setDifficulty()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setHash()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setHeight(height) → {MoneroBlockHeader}

- - - - - - -
- Set the block's height which is the total number of blocks that have occurred before. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
height - - -number - - - - is the block's height to set
- - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- a reference to this header for chaining -
- - - -
-
- Type -
-
- -MoneroBlockHeader - - -
-
- - - - - - - - - - - - - -

setHex()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setLongTermWeight()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setMajorVersion()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setMinerTx()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setMinerTxHash()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setMinorVersion()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setNonce()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setNumTxs()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setOrphanStatus()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setPowHash()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setPrevHash()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setReward()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setSize()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setTimestamp()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setTxHashes()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setTxs()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setWeight()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toJson()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toString()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroBlockHeader.html b/docs/MoneroBlockHeader.html deleted file mode 100644 index 621d2ce88..000000000 --- a/docs/MoneroBlockHeader.html +++ /dev/null @@ -1,3691 +0,0 @@ - - - - - JSDoc: Class: MoneroBlockHeader - - - - - - - - - - -
- -

Class: MoneroBlockHeader

- - - - - - -
- -
- -

MoneroBlockHeader(state)

- -
Models a Monero block header which contains information about the block.
- - -
- -
-
- - - - -

Constructor

- - - -

new MoneroBlockHeader(state)

- - - - - - -
- Construct the model. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
state - - -MoneroBlockHeader -| - -object - - - - is existing state to initialize from (optional)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

copy()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getCumulativeDifficulty()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getDepth()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getDifficulty()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getHash()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getHeight() → {number}

- - - - - - -
- Return the block's height which is the total number of blocks that have occurred before. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the block's height -
- - - -
-
- Type -
-
- -number - - -
-
- - - - - - - - - - - - - -

getLongTermWeight()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getMajorVersion()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getMinerTxHash()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getMinorVersion()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getNonce()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getNumTxs()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getOrphanStatus()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getPowHash()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getPrevHash()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getReward()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getSize()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getTimestamp()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getWeight()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

merge()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setCumulativeDifficulty()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setDepth()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setDifficulty()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setHash()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setHeight(height) → {MoneroBlockHeader}

- - - - - - -
- Set the block's height which is the total number of blocks that have occurred before. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
height - - -number - - - - is the block's height to set
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- a reference to this header for chaining -
- - - -
-
- Type -
-
- -MoneroBlockHeader - - -
-
- - - - - - - - - - - - - -

setLongTermWeight()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setMajorVersion()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setMinerTxHash()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setMinorVersion()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setNonce()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setNumTxs()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setOrphanStatus()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setPowHash()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setPrevHash()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setReward()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setSize()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setTimestamp()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setWeight()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toJson()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toString()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroBlockTemplate.html b/docs/MoneroBlockTemplate.html deleted file mode 100644 index bedf6115d..000000000 --- a/docs/MoneroBlockTemplate.html +++ /dev/null @@ -1,2022 +0,0 @@ - - - - - JSDoc: Class: MoneroBlockTemplate - - - - - - - - - - -
- -

Class: MoneroBlockTemplate

- - - - - - -
- -
- -

MoneroBlockTemplate()

- -
Monero block template to mine.
- - -
- -
-
- - - - -

Constructor

- - - -

new MoneroBlockTemplate()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

getBlockHashingBlob()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getBlockTemplateBlob()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getDifficulty()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getExpectedReward()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getHeight()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getNextSeedHash()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getPrevHash()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getReservedOffset()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getSeedHash()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getSeedHeight()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setBlockHashingBlob()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setBlockTemplateBlob()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setDifficulty()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setExpectedReward()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setHeight()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setNextSeedHash()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setPrevHash()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setReservedOffset()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setSeedHash()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setSeedHeight()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toJson()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toJson()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroCheck.html b/docs/MoneroCheck.html deleted file mode 100644 index a7f6f5b8a..000000000 --- a/docs/MoneroCheck.html +++ /dev/null @@ -1,342 +0,0 @@ - - - - - JSDoc: Class: MoneroCheck - - - - - - - - - - -
- -

Class: MoneroCheck

- - - - - - -
- -
- -

MoneroCheck()

- -
Base class for results from checking a transaction or reserve proof.
- - -
- -
-
- - - - -

Constructor

- - - -

new MoneroCheck()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

isGood()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsGood()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroCheckReserve.html b/docs/MoneroCheckReserve.html deleted file mode 100644 index 765e4786c..000000000 --- a/docs/MoneroCheckReserve.html +++ /dev/null @@ -1,783 +0,0 @@ - - - - - JSDoc: Class: MoneroCheckReserve - - - - - - - - - - -
- -

Class: MoneroCheckReserve

- - - - - - -
- -
- -

MoneroCheckReserve()

- -
Results from checking a reserve proof.
- - -
- -
-
- - - - -

Constructor

- - - -

new MoneroCheckReserve()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - -

Extends

- - - - - - - - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

getTotalAmount()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getUnconfirmedSpentAmount()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isGood()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsGood()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setTotalAmount()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setUnconfirmedSpentAmount()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toJson()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroCheckTx.html b/docs/MoneroCheckTx.html deleted file mode 100644 index 72f62ba0b..000000000 --- a/docs/MoneroCheckTx.html +++ /dev/null @@ -1,951 +0,0 @@ - - - - - JSDoc: Class: MoneroCheckTx - - - - - - - - - - -
- -

Class: MoneroCheckTx

- - - - - - -
- -
- -

MoneroCheckTx()

- -
Results from checking a transaction key.
- - -
- -
-
- - - - -

Constructor

- - - -

new MoneroCheckTx()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - -

Extends

- - - - - - - - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

getNumConfirmations()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getReceivedAmount()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

inTxPool()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isGood()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setInTxPool()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsGood()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setNumConfirmations()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setReceivedAmount()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toJson()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroConnectionManager.html b/docs/MoneroConnectionManager.html deleted file mode 100644 index cace26b1c..000000000 --- a/docs/MoneroConnectionManager.html +++ /dev/null @@ -1,3851 +0,0 @@ - - - - - JSDoc: Class: MoneroConnectionManager - - - - - - - - - - -
- -

Class: MoneroConnectionManager

- - - - - - -
- -
- -

MoneroConnectionManager(proxyToWorker)

- -

Manages a collection of prioritized connections to daemon or wallet RPC endpoints.

- -

Example usage:

- - -// imports
-const monerojs = require("monero-javascript");
-const MoneroRpcConnection = monerojs.MoneroRpcConnection;
-const MoneroConnectionManager = monerojs.MoneroConnectionManager;
-const MoneroConnectionManagerListener = monerojs.MoneroConnectionManagerListener;

- -// create connection manager
-let connectionManager = new MoneroConnectionManager();

- -// add managed connections with priorities
-connectionManager.addConnection(new MoneroRpcConnection("http://localhost:38081").setPriority(1)); // use localhost as first priority
-connectionManager.addConnection(new MoneroRpcConnection("http://example.com")); // default priority is prioritized last

- -// set current connection
-connectionManager.setConnection(new MoneroRpcConnection("http://foo.bar", "admin", "password")); // connection is added if new

- -// check connection status
-await connectionManager.checkConnection();
-console.log("Connection manager is connected: " + connectionManager.isConnected());
-console.log("Connection is online: " + connectionManager.getConnection().isOnline());
-console.log("Connection is authenticated: " + connectionManager.getConnection().isAuthenticated());

- -// receive notifications of any changes to current connection
-connectionManager.addListener(new class extends MoneroConnectionManagerListener {
-   onConnectionChanged(connection) {
-     console.log("Connection changed to: " + connection);
-   }
-});

- -// start polling for best connection every 10 seconds and automatically switch
-connectionManager.startPolling(10000);

- -// automatically switch to best available connection if disconnected
-connectionManager.setAutoSwitch(true);

- -// get best available connection in order of priority then response time
-let bestConnection = await connectionManager.getBestAvailableConnection();

- -// check status of all connections
-await connectionManager.checkConnections();

- -// get connections in order of current connection, online status from last check, priority, and name
-let connections = connectionManager.getConnections();

- -// clear connection manager
-connectionManager.clear(); -
- - -
- -
-
- - - - -

Constructor

- - - -

new MoneroConnectionManager(proxyToWorker)

- - - - - - -
- Construct a connection manager. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
proxyToWorker - - -boolean - - - - configure all connections to proxy to worker (default true)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - -

Members

- - - -

PollType

- - - - -
- Specify behavior when polling. - -One of PRIORITIZED (poll connections in order of priority until connected; default), CURRENT (poll current connection), or ALL (poll all connections). -
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - -

Methods

- - - - - - - -

(async) addConnection(uriOrConnection) → {Promise.<MoneroConnectionManager>}

- - - - - - -
- Add a connection. The connection may have an elevated priority for this manager to use. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
uriOrConnection - - -string -| - -MoneroRpcConnection - - - - uri or connection to add
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- this connection manager for chaining -
- - - -
-
- Type -
-
- -Promise.<MoneroConnectionManager> - - -
-
- - - - - - - - - - - - - -

addListener(listener) → {MoneroConnectionManager}

- - - - - - -
- Add a listener to receive notifications when the connection changes. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
listener - - -MoneroConnectionManagerListener - - - - the listener to add
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- this connection manager for chaining -
- - - -
-
- Type -
-
- -MoneroConnectionManager - - -
-
- - - - - - - - - - - - - -

(async) checkConnection() → {Promise.<MoneroConnectionManager>}

- - - - - - -
- Check the current connection. If disconnected and auto switch enabled, switches to best available connection. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- this connection manager for chaining -
- - - -
-
- Type -
-
- -Promise.<MoneroConnectionManager> - - -
-
- - - - - - - - - - - - - -

checkConnectionPromises() → {Array.<Promise>}

- - - - - - -
- Check all managed connections, returning a promise for each connection check. -Does not auto switch if disconnected. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- a promise for each connection in the order of getConnections(). -
- - - -
-
- Type -
-
- -Array.<Promise> - - -
-
- - - - - - - - - - - - - -

(async) checkConnections() → {Promise.<MoneroConnectionManager>}

- - - - - - -
- Check all managed connections. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- this connection manager for chaining -
- - - -
-
- Type -
-
- -Promise.<MoneroConnectionManager> - - -
-
- - - - - - - - - - - - - -

(async) clear() → {Promise.<MoneroConnectonManager>}

- - - - - - -
- Remove all connections. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- this connection manager for chaining -
- - - -
-
- Type -
-
- -Promise.<MoneroConnectonManager> - - -
-
- - - - - - - - - - - - - -

(async) disconnect() → {Promise.<MoneroConnectionManager>}

- - - - - - -
- Disconnect from the current connection. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- this connection manager for chaining -
- - - -
-
- Type -
-
- -Promise.<MoneroConnectionManager> - - -
-
- - - - - - - - - - - - - -

getAutoSwitch() → {boolean}

- - - - - - -
- Get if auto switch is enabled or disabled. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if auto switch enabled, false otherwise -
- - - -
-
- Type -
-
- -boolean - - -
-
- - - - - - - - - - - - - -

(async) getBestAvailableConnection(excludedConnections) → {Promise.<MoneroRpcConnection>}

- - - - - - -
- Get the best available connection in order of priority then response time. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
excludedConnections - - -Array.<MoneroRpcConnection> - - - - connections to be excluded from consideration (optional)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the best available connection in order of priority then response time, undefined if no connections available -
- - - -
-
- Type -
-
- -Promise.<MoneroRpcConnection> - - -
-
- - - - - - - - - - - - - -

getConnection() → {MoneroRpcConnection}

- - - - - - -
- Get the current connection. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the current connection or undefined if no connection set -
- - - -
-
- Type -
-
- -MoneroRpcConnection - - -
-
- - - - - - - - - - - - - -

getConnectionByUri(uri) → {MoneroRpcConnection}

- - - - - - -
- Get a connection by URI. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
uri - - -string - - - - is the URI of the connection to get
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the connection with the URI or undefined if no connection with the URI exists -
- - - -
-
- Type -
-
- -MoneroRpcConnection - - -
-
- - - - - - - - - - - - - -

getConnections() → {Array.<MoneroRpcConnection>}

- - - - - - -
- Get all connections in order of current connection (if applicable), online status, priority, and name. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the list of sorted connections -
- - - -
-
- Type -
-
- -Array.<MoneroRpcConnection> - - -
-
- - - - - - - - - - - - - -

getListeners() → {Array.<MoneroConnectionManagerListener>}

- - - - - - -
- Get all listeners. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- all listeners -
- - - -
-
- Type -
-
- -Array.<MoneroConnectionManagerListener> - - -
-
- - - - - - - - - - - - - -

(async) getPeerConnections() → {Promise.<Array.<MoneroRpcConnection>>}

- - - - - - -
- Collect connectable peers of the managed connections. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- connectable peers -
- - - -
-
- Type -
-
- -Promise.<Array.<MoneroRpcConnection>> - - -
-
- - - - - - - - - - - - - -

getTimeout() → {int}

- - - - - - -
- Get the request timeout. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the request timeout before a connection is considered offline -
- - - -
-
- Type -
-
- -int - - -
-
- - - - - - - - - - - - - -

hasConnection(uri) → {boolean}

- - - - - - -
- Indicates if this manager has a connection with the given URI. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
uri - - -string - - - - URI of the connection to check
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if this manager has a connection with the given URI, false otherwise -
- - - -
-
- Type -
-
- -boolean - - -
-
- - - - - - - - - - - - - -

isConnected() → {boolean|undefined}

- - - - - - -
- Indicates if the connection manager is connected to a node. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if the current connection is set, online, and not unauthenticated, undefined if unknown, false otherwise -
- - - -
-
- Type -
-
- -boolean -| - -undefined - - -
-
- - - - - - - - - - - - - -

(async) removeConnection(uri) → {Promise.<MoneroConnectionManager>}

- - - - - - -
- Remove a connection. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
uri - - -string - - - - of the the connection to remove
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- this connection manager for chaining -
- - - -
-
- Type -
-
- -Promise.<MoneroConnectionManager> - - -
-
- - - - - - - - - - - - - -

removeListener(listener) → {MoneroConnectionManager}

- - - - - - -
- Remove a listener. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
listener - - -MoneroConnectionManagerListener - - - - the listener to remove
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- this connection manager for chaining -
- - - -
-
- Type -
-
- -MoneroConnectionManager - - -
-
- - - - - - - - - - - - - -

removeListeners() → {MoneroConnectionManager}

- - - - - - -
- Remove all listeners. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- this connection manager for chaining -
- - - -
-
- Type -
-
- -MoneroConnectionManager - - -
-
- - - - - - - - - - - - - -

reset() → {MoneroConnectonManager}

- - - - - - -
- Reset to default state. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- this connection manager for chaining -
- - - -
-
- Type -
-
- -MoneroConnectonManager - - -
-
- - - - - - - - - - - - - -

setAutoSwitch(autoSwitch) → {MoneroConnectionManager}

- - - - - - -
- Automatically switch to the best available connection as connections are polled, based on priority, response time, and consistency. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
autoSwitch - - -boolean - - - - specifies if the connection should auto switch to a better connection
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- this connection manager for chaining -
- - - -
-
- Type -
-
- -MoneroConnectionManager - - -
-
- - - - - - - - - - - - - -

(async) setConnection(uriOrConnection) → {Promise.<MoneroConnectionManager>}

- - - - - - -
- Set the current connection. -Provide a URI to select an existing connection without updating its credentials. -Provide a MoneroRpcConnection to add new connection or replace existing connection with the same URI. -Notify if current connection changes. -Does not check the connection. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
uriOrConnection - - -string -| - -MoneroRpcConnection - - - - is the uri of the connection or the connection to make current (default undefined for no current connection)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- this connection manager for chaining -
- - - -
-
- Type -
-
- -Promise.<MoneroConnectionManager> - - -
-
- - - - - - - - - - - - - -

setTimeout(timeoutMs) → {MoneroConnectionManager}

- - - - - - -
- Set the maximum request time before its connection is considered offline. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
timeoutMs - - -int - - - - the timeout before the connection is considered offline
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- this connection manager for chaining -
- - - -
-
- Type -
-
- -MoneroConnectionManager - - -
-
- - - - - - - - - - - - - -

startPolling(periodMs, autoSwitch, timeoutMs, pollType, excludedConnections) → {MoneroConnectionManager}

- - - - - - -
- Start polling connections. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
periodMs - - -number - - - - poll period in milliseconds (default 20s)
autoSwitch - - -boolean - - - - specifies to automatically switch to the best connection (default true unless changed)
timeoutMs - - -number - - - - specifies the timeout to poll a single connection (default 5s unless changed)
pollType - - -number - - - - one of PRIORITIZED (poll connections in order of priority until connected; default), CURRENT (poll current connection), or ALL (poll all connections)
excludedConnections - - -Array.<MoneroRpcConnection> - - - - connections excluded from being polled
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- this connection manager for chaining -
- - - -
-
- Type -
-
- -MoneroConnectionManager - - -
-
- - - - - - - - - - - - - -

stopPolling() → {MoneroConnectionManager}

- - - - - - -
- Stop polling connections. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- this connection manager for chaining -
- - - -
-
- Type -
-
- -MoneroConnectionManager - - -
-
- - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroConnectionManagerListener.html b/docs/MoneroConnectionManagerListener.html deleted file mode 100644 index c03ad340e..000000000 --- a/docs/MoneroConnectionManagerListener.html +++ /dev/null @@ -1,311 +0,0 @@ - - - - - JSDoc: Class: MoneroConnectionManagerListener - - - - - - - - - - -
- -

Class: MoneroConnectionManagerListener

- - - - - - -
- -
- -

MoneroConnectionManagerListener()

- -
Default connection manager listener which takes no action on notifications.
- - -
- -
-
- - - - -

Constructor

- - - -

new MoneroConnectionManagerListener()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

(async) onConnectionChanged(connection)

- - - - - - -
- Notified on connection change events. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
connection - - -MoneroRpcConnection - - - - the connection manager's current connection
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroConnectionSpan.html b/docs/MoneroConnectionSpan.html deleted file mode 100644 index abdb63dca..000000000 --- a/docs/MoneroConnectionSpan.html +++ /dev/null @@ -1,1434 +0,0 @@ - - - - - JSDoc: Class: MoneroConnectionSpan - - - - - - - - - - -
- -

Class: MoneroConnectionSpan

- - - - - - -
- -
- -

MoneroConnectionSpan()

- -
Monero daemon connection span.
- - -
- -
-
- - - - -

Constructor

- - - -

new MoneroConnectionSpan()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

getConnectionId()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getNumBlocks()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getRate()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getRemoteAddress()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getSize()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getSpeed()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getStartHeight()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setConnectionId()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setNumBlocks()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setRate()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setRemoteAddress()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setSize()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setSpeed()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setStartHeight()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toJson()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroDaemon.html b/docs/MoneroDaemon.html deleted file mode 100644 index bbeec3b70..000000000 --- a/docs/MoneroDaemon.html +++ /dev/null @@ -1,9924 +0,0 @@ - - - - - JSDoc: Interface: MoneroDaemon - - - - - - - - - - -
- -

Interface: MoneroDaemon

- - - - - - -
- -
- -

MoneroDaemon

- -
Monero daemon interface and default implementations.
- - -
- -
-
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

(async) addListener(listener)

- - - - - - -
- Register a listener to receive daemon notifications. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
listener - - -MoneroDaemonListener - - - - listener to receive daemon notifications
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) checkForUpdate() → {MoneroDaemonUpdateCheckResult}

- - - - - - -
- Check for update. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the result -
- - - -
-
- Type -
-
- -MoneroDaemonUpdateCheckResult - - -
-
- - - - - - - - - - - - - -

(async) downloadUpdate(path) → {MoneroDaemonUpdateDownloadResult}

- - - - - - -
- Download an update. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
path - - -string - - - - path to download the update (optional)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the result -
- - - -
-
- Type -
-
- -MoneroDaemonUpdateDownloadResult - - -
-
- - - - - - - - - - - - - -

(async) flushTxPool(hashes)

- - - - - - -
- Flush transactions from the tx pool. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
hashes - - -string -| - -Array.<string> - - - - specific transactions to flush (defaults to all)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) getAltBlockHashes() → {Array.<string>}

- - - - - - -
- Get known block hashes which are not on the main chain. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- known block hashes which are not on the main chain -
- - - -
-
- Type -
-
- -Array.<string> - - -
-
- - - - - - - - - - - - - -

(async) getAltChains() → {Array.<MoneroAltChain>}

- - - - - - -
- Get alternative chains seen by the node. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- alternative chains -
- - - -
-
- Type -
-
- -Array.<MoneroAltChain> - - -
-
- - - - - - - - - - - - - -

(async) getBlockByHash(blockHash) → {MoneroBlock}

- - - - - - -
- Get a block by hash. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
blockHash - - -string - - - - hash of the block to get
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- with the given hash -
- - - -
-
- Type -
-
- -MoneroBlock - - -
-
- - - - - - - - - - - - - -

(async) getBlockByHeight(height) → {MoneroBlock}

- - - - - - -
- Get a block by height. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
height - - -int - - - - height of the block to get
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- with the given height -
- - - -
-
- Type -
-
- -MoneroBlock - - -
-
- - - - - - - - - - - - - -

(async) getBlockHash(height) → {string}

- - - - - - -
- Get a block's hash by its height. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
height - - -int - - - - height of the block hash to get
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the block's hash at the given height -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) getBlockHashes(blockHashes, startHeight) → {Array.<string>}

- - - - - - -
- Get block hashes as a binary request to the daemon. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
blockHashes - - -Array.<string> - - - - specify block hashes to fetch; first 10 blocks hash goes - sequential, next goes in pow(2,n) offset, like 2, 4, 8, 16, 32, 64 - and so on, and the last one is always genesis block
startHeight - - -int - - - - starting height of block hashes to return
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- requested block hashes -
- - - -
-
- Type -
-
- -Array.<string> - - -
-
- - - - - - - - - - - - - -

(async) getBlockHeaderByHash(blockHash) → {MoneroBlockHeader}

- - - - - - -
- Get a block header by its hash. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
blockHash - - -string - - - - hash of the block to get the header of
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- block's header -
- - - -
-
- Type -
-
- -MoneroBlockHeader - - -
-
- - - - - - - - - - - - - -

(async) getBlockHeaderByHeight(height) → {MoneroBlockHeader}

- - - - - - -
- Get a block header by its height. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
height - - -int - - - - height of the block to get the header of
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- block's header -
- - - -
-
- Type -
-
- -MoneroBlockHeader - - -
-
- - - - - - - - - - - - - -

(async) getBlockHeadersByRange(startHeight, endHeight) → {Array.<MoneroBlockHeader>}

- - - - - - -
- Get block headers for the given range. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
startHeight - - -int - - - - start height lower bound inclusive (optional)
endHeight - - -int - - - - end height upper bound inclusive (optional)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- for the given range -
- - - -
-
- Type -
-
- -Array.<MoneroBlockHeader> - - -
-
- - - - - - - - - - - - - -

(async) getBlockTemplate(walletAddress, reserveSize) → {MoneroBlockTemplate}

- - - - - - -
- Get a block template for mining a new block. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
walletAddress - - -string - - - - address of the wallet to receive miner transactions if block is successfully mined
reserveSize - - -int - - - - reserve size (optional)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- is a block template for mining a new block -
- - - -
-
- Type -
-
- -MoneroBlockTemplate - - -
-
- - - - - - - - - - - - - -

(async) getBlocksByHash(blockHashes, startHeight, prune) → {Array.<MoneroBlock>}

- - - - - - -
- Get blocks by hash. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
blockHashes - - -Array.<string> - - - - array of hashes; first 10 blocks hashes goes sequential, - next goes in pow(2,n) offset, like 2, 4, 8, 16, 32, 64 and so on, - and the last one is always genesis block
startHeight - - -int - - - - start height to get blocks by hash
prune - - -boolean - - - - specifies if returned blocks should be pruned (defaults to false) // TODO: test default
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- retrieved blocks -
- - - -
-
- Type -
-
- -Array.<MoneroBlock> - - -
-
- - - - - - - - - - - - - -

(async) getBlocksByHeight(heights) → {Array.<MoneroBlock>}

- - - - - - -
- Get blocks at the given heights. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
heights - - -Array.<int> - - - - heights of the blocks to get
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- are blocks at the given heights -
- - - -
-
- Type -
-
- -Array.<MoneroBlock> - - -
-
- - - - - - - - - - - - - -

(async) getBlocksByRange(startHeight, endHeight) → {Array.<MoneroBlock>}

- - - - - - -
- Get blocks in the given height range. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
startHeight - - -int - - - - start height lower bound inclusive (optional)
endHeight - - -int - - - - end height upper bound inclusive (optional)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- are blocks in the given height range -
- - - -
-
- Type -
-
- -Array.<MoneroBlock> - - -
-
- - - - - - - - - - - - - -

(async) getBlocksByRangeChunked(startHeight, endHeight, maxChunkSize) → {Array.<MoneroBlock>}

- - - - - - -
- Get blocks in the given height range as chunked requests so that each request is -not too big. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
startHeight - - -int - - - - start height lower bound inclusive (optional)
endHeight - - -int - - - - end height upper bound inclusive (optional)
maxChunkSize - - -int - - - - maximum chunk size in any one request (default 3,000,000 bytes)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- blocks in the given height range -
- - - -
-
- Type -
-
- -Array.<MoneroBlock> - - -
-
- - - - - - - - - - - - - -

(async) getDownloadLimit() → {int}

- - - - - - -
- Get the download bandwidth limit. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- download bandwidth limit -
- - - -
-
- Type -
-
- -int - - -
-
- - - - - - - - - - - - - -

(async) getFeeEstimate(graceBlocks) → {MoneroFeeEstimate}

- - - - - - -
- Get mining fee estimates per kB. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
graceBlocks - - -number - - - - TODO
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- mining fee estimates per kB -
- - - -
-
- Type -
-
- -MoneroFeeEstimate - - -
-
- - - - - - - - - - - - - -

(async) getHardForkInfo() → {MoneroHardForkInfo}

- - - - - - -
- Look up information regarding hard fork voting and readiness. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- contains hard fork information -
- - - -
-
- Type -
-
- -MoneroHardForkInfo - - -
-
- - - - - - - - - - - - - -

(async) getHeight() → {int}

- - - - - - -
- Get the number of blocks in the longest chain known to the node. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the number of blocks -
- - - -
-
- Type -
-
- -int - - -
-
- - - - - - - - - - - - - -

(async) getInfo() → {MoneroDaemonInfo}

- - - - - - -
- Get general information about the state of the node and the network. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- is general information about the node and network -
- - - -
-
- Type -
-
- -MoneroDaemonInfo - - -
-
- - - - - - - - - - - - - -

(async) getKeyImageSpentStatus(keyImage) → {MoneroKeyImageSpentStatus}

- - - - - - -
- Get the spent status of the given key image. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
keyImage - - -string - - - - key image hex to get the status of
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- status of the key image -
- - - -
-
- Type -
-
- -MoneroKeyImageSpentStatus - - -
-
- - - - - - - - - - - - - -

(async) getKeyImageSpentStatuses(keyImages) → {Array.<MoneroKeyImageSpentStatus>}

- - - - - - -
- Get the spent status of each given key image. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
keyImages - - -Array.<string> - - - - are hex key images to get the statuses of
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- status for each key image -
- - - -
-
- Type -
-
- -Array.<MoneroKeyImageSpentStatus> - - -
-
- - - - - - - - - - - - - -

(async) getKnownPeers() → {Array.<MoneroPeer>}

- - - - - - -
- Get known peers including their last known online status. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the daemon's known peers -
- - - -
-
- Type -
-
- -Array.<MoneroPeer> - - -
-
- - - - - - - - - - - - - -

(async) getLastBlockHeader() → {MoneroBlockHeader}

- - - - - - -
- Get the last block's header. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- last block's header -
- - - -
-
- Type -
-
- -MoneroBlockHeader - - -
-
- - - - - - - - - - - - - -

getListeners() → {Array.<MoneroDaemonListener>}

- - - - - - -
- Get the listeners registered with the daemon. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the registered listeners -
- - - -
-
- Type -
-
- -Array.<MoneroDaemonListener> - - -
-
- - - - - - - - - - - - - -

(async) getMinerTxSum(height, numBlocks) → {MoneroMinerTxSum}

- - - - - - -
- Gets the total emissions and fees from the genesis block to the current height. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
height - - -int - - - - height to start computing the miner sum
numBlocks - - -int - - - - number of blocks to include in the sum
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- encapsulates the total emissions and fees since the genesis block -
- - - -
-
- Type -
-
- -MoneroMinerTxSum - - -
-
- - - - - - - - - - - - - -

(async) getMiningStatus() → {MoneroMiningStatus}

- - - - - - -
- Get the daemon's mining status. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- daemon's mining status -
- - - -
-
- Type -
-
- -MoneroMiningStatus - - -
-
- - - - - - - - - - - - - -

(async) getOutputDistribution(amounts, cumulative, startHeight, endHeight) → {Array.<MoneroOutputDistributionEntry>}

- - - - - - -
- Creates an output distribution. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
amounts - - -Array.<BigInteger> - - - - amounts of outputs to make the distribution with
cumulative - - -boolean - - - - specifies if the results should be cumulative (defaults to TODO)
startHeight - - -int - - - - start height lower bound inclusive (optional)
endHeight - - -int - - - - end height upper bound inclusive (optional)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- are entries meeting the parameters -
- - - -
-
- Type -
-
- -Array.<MoneroOutputDistributionEntry> - - -
-
- - - - - - - - - - - - - -

(async) getOutputHistogram(amounts, minCount, maxCount, isUnlocked, recentCutoff) → {Array.<MoneroOutputHistogramEntry>}

- - - - - - -
- Get a histogram of output amounts. For all amounts (possibly filtered by -parameters), gives the number of outputs on the chain for that amount. -RingCT outputs counts as 0 amount. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
amounts - - -Array.<BigInteger> - - - - amounts of outputs to make the histogram with
minCount - - -int - - - - TODO
maxCount - - -int - - - - TODO
isUnlocked - - -boolean - - - - makes a histogram with outputs with the specified lock state
recentCutoff - - -int - - - - TODO
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- are entries meeting the parameters -
- - - -
-
- Type -
-
- -Array.<MoneroOutputHistogramEntry> - - -
-
- - - - - - - - - - - - - -

(async) getOutputs(outputs) → {Array.<MoneroOutput>}

- - - - - - -
- Get outputs identified by a list of output amounts and indices as a binary -request. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
outputs - - -Array.<MoneroOutput> - - - - identify each output by amount and index
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- identified outputs -
- - - -
-
- Type -
-
- -Array.<MoneroOutput> - - -
-
- - - - - - - - - - - - - -

(async) getPeerBans() → {Array.<MoneroBan>}

- - - - - - -
- Get peer bans. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- entries about banned peers -
- - - -
-
- Type -
-
- -Array.<MoneroBan> - - -
-
- - - - - - - - - - - - - -

(async) getPeers() → {Array.<MoneroPeer>}

- - - - - - -
- Get peers with active incoming or outgoing connections to the node. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the daemon's peers -
- - - -
-
- Type -
-
- -Array.<MoneroPeer> - - -
-
- - - - - - - - - - - - - -

(async) getSyncInfo() → {MoneroDaemonSyncInfo}

- - - - - - -
- Get synchronization information. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- contains sync information -
- - - -
-
- Type -
-
- -MoneroDaemonSyncInfo - - -
-
- - - - - - - - - - - - - -

(async) getTx(txHash, prune) → {MoneroTx}

- - - - - - -
- Get a transaction by hash. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDefaultDescription
txHash - - -string - - - - - - hash of the transaction to get
prune - - -boolean - - - - - - false - - specifies if the returned tx should be pruned (defaults to false)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- transaction with the given hash or undefined if not found -
- - - -
-
- Type -
-
- -MoneroTx - - -
-
- - - - - - - - - - - - - -

(async) getTxHex(txHash, prune) → {string}

- - - - - - -
- Get a transaction hex by hash. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDefaultDescription
txHash - - -string - - - - - - hash of the transaction to get hex from
prune - - -boolean - - - - - - false - - specifies if the returned tx hex should be pruned (defaults to false)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- tx hex with the given hash -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) getTxHexes(txHashes, prune) → {Array.<string>}

- - - - - - -
- Get transaction hexes by hashes. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDefaultDescription
txHashes - - -Array.<string> - - - - - - hashes of transactions to get hexes from
prune - - -boolean - - - - - - false - - specifies if the returned tx hexes should be pruned (defaults to false)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- tx hexes -
- - - -
-
- Type -
-
- -Array.<string> - - -
-
- - - - - - - - - - - - - -

(async) getTxPool() → {Array.<MoneroTx>}

- - - - - - -
- Get valid transactions seen by the node but not yet mined into a block, as well -as spent key image information for the tx pool. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- are transactions in the transaction pool -
- - - -
-
- Type -
-
- -Array.<MoneroTx> - - -
-
- - - - - - - - - - - - - -

(async) getTxPoolBacklog() → {Array.<MoneroTxBacklogEntry>}

- - - - - - -
- Get all transaction pool backlog. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- backlog entries -
- - - -
-
- Type -
-
- -Array.<MoneroTxBacklogEntry> - - -
-
- - - - - - - - - - - - - -

(async) getTxPoolHashes() → {Array.<string>}

- - - - - - -
- Get hashes of transactions in the transaction pool. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- are hashes of transactions in the transaction pool -
- - - -
-
- Type -
-
- -Array.<string> - - -
-
- - - - - - - - - - - - - -

(async) getTxPoolStats() → {MoneroTxPoolStats}

- - - - - - -
- Get transaction pool statistics. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- contains statistics about the transaction pool -
- - - -
-
- Type -
-
- -MoneroTxPoolStats - - -
-
- - - - - - - - - - - - - -

(async) getTxs(txHashes, prune) → {Array.<MoneroTx>}

- - - - - - -
- Get transactions by hashes. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDefaultDescription
txHashes - - -Array.<string> - - - - - - hashes of transactions to get
prune - - -boolean - - - - - - false - - specifies if the returned txs should be pruned (defaults to false)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- found transactions with the given hashes -
- - - -
-
- Type -
-
- -Array.<MoneroTx> - - -
-
- - - - - - - - - - - - - -

(async) getUploadLimit() → {int}

- - - - - - -
- Get the upload bandwidth limit. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- upload bandwidth limit -
- - - -
-
- Type -
-
- -int - - -
-
- - - - - - - - - - - - - -

(async) getVersion() → {MoneroVersion}

- - - - - - -
- Gets the version of the daemon. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the version of the daemon -
- - - -
-
- Type -
-
- -MoneroVersion - - -
-
- - - - - - - - - - - - - -

(async) isConnected() → {boolean}

- - - - - - -
- Indicates if the client is connected to the daemon via RPC. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if the client is connected to the daemon, false otherwise -
- - - -
-
- Type -
-
- -boolean - - -
-
- - - - - - - - - - - - - -

(async) isTrusted() → {boolean}

- - - - - - -
- Indicates if the daemon is trusted xor untrusted. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if the daemon is trusted, false otherwise -
- - - -
-
- Type -
-
- -boolean - - -
-
- - - - - - - - - - - - - -

(async) pruneBlockchain(check) → {MoneroPruneResult}

- - - - - - -
- Prune the blockchain. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
check - - -boolean - - - - specifies to check the pruning (default false)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the prune result -
- - - -
-
- Type -
-
- -MoneroPruneResult - - -
-
- - - - - - - - - - - - - -

(async) relayTxByHash(txHash)

- - - - - - -
- Relays a transaction by hash. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
txHash - - -string - - - - hash of the transaction to relay
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) relayTxsByHash(txHashes)

- - - - - - -
- Relays transactions by hash. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
txHashes - - -Array.<string> - - - - hashes of the transactinos to relay
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) removeListener(listener)

- - - - - - -
- Unregister a listener to receive daemon notifications. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
listener - - -MoneroDaemonListener - - - - listener to unregister
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) resetDownloadLimit() → {int}

- - - - - - -
- Reset the download bandwidth limit. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- download bandwidth limit after resetting -
- - - -
-
- Type -
-
- -int - - -
-
- - - - - - - - - - - - - -

(async) resetUploadLimit() → {int}

- - - - - - -
- Reset the upload bandwidth limit. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- upload bandwidth limit after resetting -
- - - -
-
- Type -
-
- -int - - -
-
- - - - - - - - - - - - - -

(async) setDownloadLimit(limit) → {int}

- - - - - - -
- Set the download bandwidth limit. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
limit - - -int - - - - download limit to set (-1 to reset to default)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- new download limit after setting -
- - - -
-
- Type -
-
- -int - - -
-
- - - - - - - - - - - - - -

(async) setIncomingPeerLimit(limit)

- - - - - - -
- Limit number of incoming peers. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
limit - - -int - - - - maximum number of incoming peers
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) setOutgoingPeerLimit(limit)

- - - - - - -
- Limit number of outgoing peers. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
limit - - -int - - - - maximum number of outgoing peers
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) setPeerBan(ban)

- - - - - - -
- Ban a peer node. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
ban - - -MoneroBan - - - - contains information about a node to ban
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) setPeerBans(bans)

- - - - - - -
- Ban peers nodes. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
bans - - -Array.<MoneroBan> - - - - specify which peers to ban
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) setUploadLimit(limit) → {int}

- - - - - - -
- Set the upload bandwidth limit. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
limit - - upload limit to set (-1 to reset to default)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- new upload limit after setting -
- - - -
-
- Type -
-
- -int - - -
-
- - - - - - - - - - - - - -

(async) startMining(address, numThreads, isBackground, ignoreBattery)

- - - - - - -
- Start mining. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
address - - -string - - - - address given miner rewards if the daemon mines a block
numThreads - - -integer - - - - number of mining threads to run
isBackground - - -boolean - - - - specifies if the miner should run in the background or not
ignoreBattery - - -boolean - - - - specifies if the battery state (e.g. on laptop) should be ignored or not
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) stop()

- - - - - - -
- Safely disconnect and shut down the daemon. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) stopMining()

- - - - - - -
- Stop mining. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) submitBlock(blockBlob)

- - - - - - -
- Submit a mined block to the network. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
blockBlob - - -string - - - - mined block to submit
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) submitBlocks(blockBlobs)

- - - - - - -
- Submit mined blocks to the network. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
blockBlobs - - -Array.<string> - - - - mined blocks to submit
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) submitTxHex(txHex, doNotRelay) → {MoneroSubmitTxResult}

- - - - - - -
- Submits a transaction to the daemon's pool. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
txHex - - -string - - - - raw transaction hex to submit
doNotRelay - - -boolean - - - - specifies if the tx should be relayed (optional)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- contains submission results -
- - - -
-
- Type -
-
- -MoneroSubmitTxResult - - -
-
- - - - - - - - - - - - - -

(async) waitForNextBlockHeader() → {MoneroBlockHeader}

- - - - - - -
- Get the header of the next block added to the chain. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- header of the next block added to the chain -
- - - -
-
- Type -
-
- -MoneroBlockHeader - - -
-
- - - - - - - - - - - - - -

(static) parseNetworkType(network) → {MoneroNetworkType}

- - - - - - -
- Parses a network string to an enumerated type. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
network - - -string - - - - network string to parse
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- enumerated network type -
- - - -
-
- Type -
-
- -MoneroNetworkType - - -
-
- - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroDaemonConnection.html b/docs/MoneroDaemonConnection.html deleted file mode 100644 index 484da565a..000000000 --- a/docs/MoneroDaemonConnection.html +++ /dev/null @@ -1,3282 +0,0 @@ - - - - - JSDoc: Class: MoneroDaemonConnection - - - - - - - - - - -
- -

Class: MoneroDaemonConnection

- - - - - - -
- -
- -

MoneroDaemonConnection()

- -
Monero daemon connection.
- - -
- -
-
- - - - -

Constructor

- - - -

new MoneroDaemonConnection()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

getAvgDownload()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getAvgUpload()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getCurrentDownload()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getCurrentUpload()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getHeight()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getId()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getLiveTime()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getNumReceives()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getNumSends()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getNumSupportFlags()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getPeer()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getReceiveIdleTime()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getSendIdleTime()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getState()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getType()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isIncoming()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isLocalHost()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isLocalIp()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setAvgDownload()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setAvgUpload()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setCurrentDownload()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setCurrentUpload()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setHeight()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setId()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsIncoming()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsLocalHost()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsLocalIp()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setLiveTime()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setNumReceives()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setNumSends()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setNumSupportFlags()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setPeer()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setReceiveIdleTime()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setSendIdleTime()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setState()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setType()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toJson()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.6.7 on Thu Dec 30 2021 13:46:54 GMT-0500 (Eastern Standard Time) -
- - - - - \ No newline at end of file diff --git a/docs/MoneroDaemonConnectionSpan.html b/docs/MoneroDaemonConnectionSpan.html deleted file mode 100644 index 23648c849..000000000 --- a/docs/MoneroDaemonConnectionSpan.html +++ /dev/null @@ -1,1434 +0,0 @@ - - - - - JSDoc: Class: MoneroDaemonConnectionSpan - - - - - - - - - - -
- -

Class: MoneroDaemonConnectionSpan

- - - - - - -
- -
- -

MoneroDaemonConnectionSpan()

- -
Monero daemon connection span.
- - -
- -
-
- - - - -

Constructor

- - - -

new MoneroDaemonConnectionSpan()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

getConnectionId()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getNumBlocks()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getRate()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getRemoteAddress()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getSize()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getSpeed()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getStartHeight()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setConnectionId()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setNumBlocks()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setRate()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setRemoteAddress()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setSize()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setSpeed()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setStartHeight()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toJson()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.6.7 on Thu Dec 30 2021 13:46:54 GMT-0500 (Eastern Standard Time) -
- - - - - \ No newline at end of file diff --git a/docs/MoneroDaemonInfo.html b/docs/MoneroDaemonInfo.html deleted file mode 100644 index 5478772d9..000000000 --- a/docs/MoneroDaemonInfo.html +++ /dev/null @@ -1,5802 +0,0 @@ - - - - - JSDoc: Class: MoneroDaemonInfo - - - - - - - - - - -
- -

Class: MoneroDaemonInfo

- - - - - - -
- -
- -

MoneroDaemonInfo()

- -
Monero daemon info.
- - -
- -
-
- - - - -

Constructor

- - - -

new MoneroDaemonInfo()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

getAdjustedTimestamp()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getBlockSizeLimit()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getBlockSizeMedian()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getBlockWeightLimit()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getBlockWeightMedian()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getBootstrapDaemonAddress()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getCredits()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getCumulativeDifficulty()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getDatabaseSize()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getDifficulty()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getFreeSpace()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getHeight()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getHeightWithoutBootstrap()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getNetworkType()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getNumAltBlocks()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getNumIncomingConnections()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getNumOfflinePeers()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getNumOnlinePeers()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getNumOutgoingConnections()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getNumRpcConnections()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getNumTxs()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getNumTxsPool()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getStartTimestamp()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getTarget()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getTargetHeight()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getTopBlockHash()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getUpdateAvailable()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getVersion()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getWasBootstrapEverUsed()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isBusySyncing()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isOffline()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isRestricted()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isSynchronized()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setAdjustedTimestamp()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setBlockSizeLimit()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setBlockSizeMedian()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setBlockWeightLimit()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setBlockWeightMedian()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setBootstrapDaemonAddress()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setCredits()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setCumulativeDifficulty()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setDatabaseSize()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setDifficulty()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setFreeSpace()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setHeight()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setHeightWithoutBootstrap()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsBusySyncing()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsOffline()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsRestricted()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsSynchronized()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setNetworkType()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setNumAltBlocks()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setNumIncomingConnections()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setNumOfflinePeers()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setNumOnlinePeers()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setNumOutgoingConnections()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setNumRpcConnections()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setNumTxs()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setNumTxsPool()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setStartTimestamp()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setTarget()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setTargetHeight()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setTopBlockHash()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setUpdateAvailable()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setVersion()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setWasBootstrapEverUsed()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toJson()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroDaemonListener.html b/docs/MoneroDaemonListener.html deleted file mode 100644 index db7574c36..000000000 --- a/docs/MoneroDaemonListener.html +++ /dev/null @@ -1,421 +0,0 @@ - - - - - JSDoc: Class: MoneroDaemonListener - - - - - - - - - - -
- -

Class: MoneroDaemonListener

- - - - - - -
- -
- -

MoneroDaemonListener()

- -
Receives notifications as a daemon is updated.
- - -
- -
-
- - - - -

Constructor

- - - -

new MoneroDaemonListener()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

getLastBlockHeader() → {MoneroBlockHeader}

- - - - - - -
- Get the last notified block header. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the last notified block header -
- - - -
-
- Type -
-
- -MoneroBlockHeader - - -
-
- - - - - - - - - - - - - -

(async) onBlockHeader(header)

- - - - - - -
- Called when a new block is added to the chain. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
header - - -MoneroBlockHeader - - - - the header of the block added to the chain
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroDaemonPeer.html b/docs/MoneroDaemonPeer.html deleted file mode 100644 index 435ed132b..000000000 --- a/docs/MoneroDaemonPeer.html +++ /dev/null @@ -1,1797 +0,0 @@ - - - - - JSDoc: Class: MoneroDaemonPeer - - - - - - - - - - -
- -

Class: MoneroDaemonPeer

- - - - - - -
- -
- -

MoneroDaemonPeer()

- -
Models a peer to the daemon.
- - -
- -
-
- - - - -

Constructor

- - - -

new MoneroDaemonPeer()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

getAddress()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getHost()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getId()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getLastSeenTimestamp()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getPort()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getPruningSeed()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getRpcCreditsPerHash()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getRpcPort()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isOnline() → {boolean}

- - - - - - -
- Indicates if the peer was online when last checked (aka "white listed" as -opposed to "gray listed"). -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if peer was online when last checked, false otherwise -
- - - -
-
- Type -
-
- -boolean - - -
-
- - - - - - - - - - - - - -

setAddress()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setHost()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setId()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsOnline()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setLastSeenTimestamp()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setPort()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setPruningSeed()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setRpcCreditsPerHash()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setRpcPort()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toJson()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.6.7 on Thu Dec 30 2021 13:46:54 GMT-0500 (Eastern Standard Time) -
- - - - - \ No newline at end of file diff --git a/docs/MoneroDaemonRpc.html b/docs/MoneroDaemonRpc.html deleted file mode 100644 index 02c99a204..000000000 --- a/docs/MoneroDaemonRpc.html +++ /dev/null @@ -1,9920 +0,0 @@ - - - - - JSDoc: Class: MoneroDaemonRpc - - - - - - - - - - -
- -

Class: MoneroDaemonRpc

- - - - - - -
- -
- -

MoneroDaemonRpc

- -
Implements a MoneroDaemon as a client of monerod.
- - -
- -
-
- - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

(async) addListener(listener)

- - - - - - -
- Register a listener to receive daemon notifications. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
listener - - -MoneroDaemonListener - - - - listener to receive daemon notifications
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) checkForUpdate() → {MoneroDaemonUpdateCheckResult}

- - - - - - -
- Check for update. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the result -
- - - -
-
- Type -
-
- -MoneroDaemonUpdateCheckResult - - -
-
- - - - - - - - - - - - - -

(async) downloadUpdate(path) → {MoneroDaemonUpdateDownloadResult}

- - - - - - -
- Download an update. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
path - - -string - - - - path to download the update (optional)
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the result -
- - - -
-
- Type -
-
- -MoneroDaemonUpdateDownloadResult - - -
-
- - - - - - - - - - - - - -

(async) flushTxPool(hashes)

- - - - - - -
- Flush transactions from the tx pool. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
hashes - - -string -| - -Array.<string> - - - - specific transactions to flush (defaults to all)
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) getAltBlockHashes() → {Array.<string>}

- - - - - - -
- Get known block hashes which are not on the main chain. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- known block hashes which are not on the main chain -
- - - -
-
- Type -
-
- -Array.<string> - - -
-
- - - - - - - - - - - - - -

(async) getAltChains() → {Array.<MoneroAltChain>}

- - - - - - -
- Get alternative chains seen by the node. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- alternative chains -
- - - -
-
- Type -
-
- -Array.<MoneroAltChain> - - -
-
- - - - - - - - - - - - - -

(async) getBlockByHash(blockHash) → {MoneroBlock}

- - - - - - -
- Get a block by hash. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
blockHash - - -string - - - - hash of the block to get
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- with the given hash -
- - - -
-
- Type -
-
- -MoneroBlock - - -
-
- - - - - - - - - - - - - -

(async) getBlockByHeight(height) → {MoneroBlock}

- - - - - - -
- Get a block by height. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
height - - -int - - - - height of the block to get
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- with the given height -
- - - -
-
- Type -
-
- -MoneroBlock - - -
-
- - - - - - - - - - - - - -

(async) getBlockHash(height) → {string}

- - - - - - -
- Get a block's hash by its height. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
height - - -int - - - - height of the block hash to get
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the block's hash at the given height -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) getBlockHeaderByHash(blockHash) → {MoneroBlockHeader}

- - - - - - -
- Get a block header by its hash. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
blockHash - - -string - - - - hash of the block to get the header of
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- block's header -
- - - -
-
- Type -
-
- -MoneroBlockHeader - - -
-
- - - - - - - - - - - - - -

(async) getBlockHeaderByHeight(height) → {MoneroBlockHeader}

- - - - - - -
- Get a block header by its height. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
height - - -int - - - - height of the block to get the header of
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- block's header -
- - - -
-
- Type -
-
- -MoneroBlockHeader - - -
-
- - - - - - - - - - - - - -

(async) getBlockHeadersByRange(startHeight, endHeight) → {Array.<MoneroBlockHeader>}

- - - - - - -
- Get block headers for the given range. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
startHeight - - -int - - - - start height lower bound inclusive (optional)
endHeight - - -int - - - - end height upper bound inclusive (optional)
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- for the given range -
- - - -
-
- Type -
-
- -Array.<MoneroBlockHeader> - - -
-
- - - - - - - - - - - - - -

(async) getBlockTemplate(walletAddress, reserveSize) → {MoneroBlockTemplate}

- - - - - - -
- Get a block template for mining a new block. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
walletAddress - - -string - - - - address of the wallet to receive miner transactions if block is successfully mined
reserveSize - - -int - - - - reserve size (optional)
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- is a block template for mining a new block -
- - - -
-
- Type -
-
- -MoneroBlockTemplate - - -
-
- - - - - - - - - - - - - -

(async) getBlocksByHeight(heights) → {Array.<MoneroBlock>}

- - - - - - -
- Get blocks at the given heights. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
heights - - -Array.<int> - - - - heights of the blocks to get
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- are blocks at the given heights -
- - - -
-
- Type -
-
- -Array.<MoneroBlock> - - -
-
- - - - - - - - - - - - - -

(async) getBlocksByRange(startHeight, endHeight) → {Array.<MoneroBlock>}

- - - - - - -
- Get blocks in the given height range. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
startHeight - - -int - - - - start height lower bound inclusive (optional)
endHeight - - -int - - - - end height upper bound inclusive (optional)
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- are blocks in the given height range -
- - - -
-
- Type -
-
- -Array.<MoneroBlock> - - -
-
- - - - - - - - - - - - - -

(async) getBlocksByRangeChunked(startHeight, endHeight, maxChunkSize) → {Array.<MoneroBlock>}

- - - - - - -
- Get blocks in the given height range as chunked requests so that each request is -not too big. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
startHeight - - -int - - - - start height lower bound inclusive (optional)
endHeight - - -int - - - - end height upper bound inclusive (optional)
maxChunkSize - - -int - - - - maximum chunk size in any one request (default 3,000,000 bytes)
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- blocks in the given height range -
- - - -
-
- Type -
-
- -Array.<MoneroBlock> - - -
-
- - - - - - - - - - - - - -

(async) getDownloadLimit() → {int}

- - - - - - -
- Get the download bandwidth limit. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- download bandwidth limit -
- - - -
-
- Type -
-
- -int - - -
-
- - - - - - - - - - - - - -

(async) getFeeEstimate(graceBlocks) → {MoneroFeeEstimate}

- - - - - - -
- Get mining fee estimates per kB. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
graceBlocks - - -number - - - - TODO
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- mining fee estimates per kB -
- - - -
-
- Type -
-
- -MoneroFeeEstimate - - -
-
- - - - - - - - - - - - - -

(async) getHardForkInfo() → {MoneroHardForkInfo}

- - - - - - -
- Look up information regarding hard fork voting and readiness. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- contains hard fork information -
- - - -
-
- Type -
-
- -MoneroHardForkInfo - - -
-
- - - - - - - - - - - - - -

(async) getHeight() → {int}

- - - - - - -
- Get the number of blocks in the longest chain known to the node. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the number of blocks -
- - - -
-
- Type -
-
- -int - - -
-
- - - - - - - - - - - - - -

(async) getInfo() → {MoneroDaemonInfo}

- - - - - - -
- Get general information about the state of the node and the network. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- is general information about the node and network -
- - - -
-
- Type -
-
- -MoneroDaemonInfo - - -
-
- - - - - - - - - - - - - -

(async) getKeyImageSpentStatus(keyImage) → {MoneroKeyImageSpentStatus}

- - - - - - -
- Get the spent status of the given key image. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
keyImage - - -string - - - - key image hex to get the status of
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- status of the key image -
- - - -
-
- Type -
-
- -MoneroKeyImageSpentStatus - - -
-
- - - - - - - - - - - - - -

(async) getKeyImageSpentStatuses(keyImages) → {Array.<MoneroKeyImageSpentStatus>}

- - - - - - -
- Get the spent status of each given key image. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
keyImages - - -Array.<string> - - - - are hex key images to get the statuses of
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- status for each key image -
- - - -
-
- Type -
-
- -Array.<MoneroKeyImageSpentStatus> - - -
-
- - - - - - - - - - - - - -

(async) getKnownPeers() → {Array.<MoneroPeer>}

- - - - - - -
- Get known peers including their last known online status. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the daemon's known peers -
- - - -
-
- Type -
-
- -Array.<MoneroPeer> - - -
-
- - - - - - - - - - - - - -

(async) getLastBlockHeader() → {MoneroBlockHeader}

- - - - - - -
- Get the last block's header. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- last block's header -
- - - -
-
- Type -
-
- -MoneroBlockHeader - - -
-
- - - - - - - - - - - - - -

getListeners() → {Array.<MoneroDaemonListener>}

- - - - - - -
- Get the listeners registered with the daemon. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the registered listeners -
- - - -
-
- Type -
-
- -Array.<MoneroDaemonListener> - - -
-
- - - - - - - - - - - - - -

(async) getMinerTxSum(height, numBlocks) → {MoneroMinerTxSum}

- - - - - - -
- Gets the total emissions and fees from the genesis block to the current height. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
height - - -int - - - - height to start computing the miner sum
numBlocks - - -int - - - - number of blocks to include in the sum
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- encapsulates the total emissions and fees since the genesis block -
- - - -
-
- Type -
-
- -MoneroMinerTxSum - - -
-
- - - - - - - - - - - - - -

(async) getMiningStatus() → {MoneroMiningStatus}

- - - - - - -
- Get the daemon's mining status. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- daemon's mining status -
- - - -
-
- Type -
-
- -MoneroMiningStatus - - -
-
- - - - - - - - - - - - - -

(async) getOutputDistribution(amounts, cumulative, startHeight, endHeight) → {Array.<MoneroOutputDistributionEntry>}

- - - - - - -
- Creates an output distribution. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
amounts - - -Array.<BigInteger> - - - - amounts of outputs to make the distribution with
cumulative - - -boolean - - - - specifies if the results should be cumulative (defaults to TODO)
startHeight - - -int - - - - start height lower bound inclusive (optional)
endHeight - - -int - - - - end height upper bound inclusive (optional)
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- are entries meeting the parameters -
- - - -
-
- Type -
-
- -Array.<MoneroOutputDistributionEntry> - - -
-
- - - - - - - - - - - - - -

(async) getOutputHistogram(amounts, minCount, maxCount, isUnlocked, recentCutoff) → {Array.<MoneroOutputHistogramEntry>}

- - - - - - -
- Get a histogram of output amounts. For all amounts (possibly filtered by -parameters), gives the number of outputs on the chain for that amount. -RingCT outputs counts as 0 amount. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
amounts - - -Array.<BigInteger> - - - - amounts of outputs to make the histogram with
minCount - - -int - - - - TODO
maxCount - - -int - - - - TODO
isUnlocked - - -boolean - - - - makes a histogram with outputs with the specified lock state
recentCutoff - - -int - - - - TODO
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- are entries meeting the parameters -
- - - -
-
- Type -
-
- -Array.<MoneroOutputHistogramEntry> - - -
-
- - - - - - - - - - - - - -

(async) getPeerBans() → {Array.<MoneroBan>}

- - - - - - -
- Get peer bans. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- entries about banned peers -
- - - -
-
- Type -
-
- -Array.<MoneroBan> - - -
-
- - - - - - - - - - - - - -

(async) getPeers() → {Array.<MoneroPeer>}

- - - - - - -
- Get peers with active incoming or outgoing connections to the node. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the daemon's peers -
- - - -
-
- Type -
-
- -Array.<MoneroPeer> - - -
-
- - - - - - - - - - - - - -

getProcess()

- - - - - - -
- Get the internal process running monerod. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the process running monerod, undefined if not created from new process -
- - - - - - - - - - - - - - - -

(async) getRpcConnection() → {MoneroRpcConnection}

- - - - - - -
- Get the daemon's RPC connection. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the daemon's rpc connection -
- - - -
-
- Type -
-
- -MoneroRpcConnection - - -
-
- - - - - - - - - - - - - -

(async) getSyncInfo() → {MoneroDaemonSyncInfo}

- - - - - - -
- Get synchronization information. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- contains sync information -
- - - -
-
- Type -
-
- -MoneroDaemonSyncInfo - - -
-
- - - - - - - - - - - - - -

(async) getTx(txHash, prune) → {MoneroTx}

- - - - - - -
- Get a transaction by hash. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDefaultDescription
txHash - - -string - - - - - - hash of the transaction to get
prune - - -boolean - - - - - - false - - specifies if the returned tx should be pruned (defaults to false)
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- transaction with the given hash or undefined if not found -
- - - -
-
- Type -
-
- -MoneroTx - - -
-
- - - - - - - - - - - - - -

(async) getTxHex(txHash, prune) → {string}

- - - - - - -
- Get a transaction hex by hash. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDefaultDescription
txHash - - -string - - - - - - hash of the transaction to get hex from
prune - - -boolean - - - - - - false - - specifies if the returned tx hex should be pruned (defaults to false)
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- tx hex with the given hash -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) getTxHexes(txHashes, prune) → {Array.<string>}

- - - - - - -
- Get transaction hexes by hashes. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDefaultDescription
txHashes - - -Array.<string> - - - - - - hashes of transactions to get hexes from
prune - - -boolean - - - - - - false - - specifies if the returned tx hexes should be pruned (defaults to false)
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- tx hexes -
- - - -
-
- Type -
-
- -Array.<string> - - -
-
- - - - - - - - - - - - - -

(async) getTxPool() → {Array.<MoneroTx>}

- - - - - - -
- Get valid transactions seen by the node but not yet mined into a block, as well -as spent key image information for the tx pool. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- are transactions in the transaction pool -
- - - -
-
- Type -
-
- -Array.<MoneroTx> - - -
-
- - - - - - - - - - - - - -

(async) getTxPoolBacklog() → {Array.<MoneroTxBacklogEntry>}

- - - - - - -
- Get all transaction pool backlog. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- backlog entries -
- - - -
-
- Type -
-
- -Array.<MoneroTxBacklogEntry> - - -
-
- - - - - - - - - - - - - -

(async) getTxPoolHashes() → {Array.<string>}

- - - - - - -
- Get hashes of transactions in the transaction pool. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- are hashes of transactions in the transaction pool -
- - - -
-
- Type -
-
- -Array.<string> - - -
-
- - - - - - - - - - - - - -

(async) getTxPoolStats() → {MoneroTxPoolStats}

- - - - - - -
- Get transaction pool statistics. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- contains statistics about the transaction pool -
- - - -
-
- Type -
-
- -MoneroTxPoolStats - - -
-
- - - - - - - - - - - - - -

(async) getTxs(txHashes, prune) → {Array.<MoneroTx>}

- - - - - - -
- Get transactions by hashes. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDefaultDescription
txHashes - - -Array.<string> - - - - - - hashes of transactions to get
prune - - -boolean - - - - - - false - - specifies if the returned txs should be pruned (defaults to false)
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- found transactions with the given hashes -
- - - -
-
- Type -
-
- -Array.<MoneroTx> - - -
-
- - - - - - - - - - - - - -

(async) getUploadLimit() → {int}

- - - - - - -
- Get the upload bandwidth limit. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- upload bandwidth limit -
- - - -
-
- Type -
-
- -int - - -
-
- - - - - - - - - - - - - -

(async) getVersion() → {MoneroVersion}

- - - - - - -
- Gets the version of the daemon. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the version of the daemon -
- - - -
-
- Type -
-
- -MoneroVersion - - -
-
- - - - - - - - - - - - - -

(async) isConnected() → {boolean}

- - - - - - -
- Indicates if the client is connected to the daemon via RPC. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if the client is connected to the daemon, false otherwise -
- - - -
-
- Type -
-
- -boolean - - -
-
- - - - - - - - - - - - - -

(async) isTrusted() → {boolean}

- - - - - - -
- Indicates if the daemon is trusted xor untrusted. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if the daemon is trusted, false otherwise -
- - - -
-
- Type -
-
- -boolean - - -
-
- - - - - - - - - - - - - -

(async) pruneBlockchain(check) → {MoneroPruneResult}

- - - - - - -
- Prune the blockchain. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
check - - -boolean - - - - specifies to check the pruning (default false)
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the prune result -
- - - -
-
- Type -
-
- -MoneroPruneResult - - -
-
- - - - - - - - - - - - - -

(async) relayTxsByHash(txHashes)

- - - - - - -
- Relays transactions by hash. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
txHashes - - -Array.<string> - - - - hashes of the transactinos to relay
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) removeListener(listener)

- - - - - - -
- Unregister a listener to receive daemon notifications. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
listener - - -MoneroDaemonListener - - - - listener to unregister
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) resetDownloadLimit() → {int}

- - - - - - -
- Reset the download bandwidth limit. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- download bandwidth limit after resetting -
- - - -
-
- Type -
-
- -int - - -
-
- - - - - - - - - - - - - -

(async) resetUploadLimit() → {int}

- - - - - - -
- Reset the upload bandwidth limit. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- upload bandwidth limit after resetting -
- - - -
-
- Type -
-
- -int - - -
-
- - - - - - - - - - - - - -

(async) setDownloadLimit(limit) → {int}

- - - - - - -
- Set the download bandwidth limit. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
limit - - -int - - - - download limit to set (-1 to reset to default)
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- new download limit after setting -
- - - -
-
- Type -
-
- -int - - -
-
- - - - - - - - - - - - - -

(async) setIncomingPeerLimit(limit)

- - - - - - -
- Limit number of incoming peers. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
limit - - -int - - - - maximum number of incoming peers
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) setOutgoingPeerLimit(limit)

- - - - - - -
- Limit number of outgoing peers. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
limit - - -int - - - - maximum number of outgoing peers
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) setPeerBan(ban)

- - - - - - -
- Ban a peer node. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
ban - - -MoneroBan - - - - contains information about a node to ban
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) setPeerBans(bans)

- - - - - - -
- Ban peers nodes. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
bans - - -Array.<MoneroBan> - - - - specify which peers to ban
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) setUploadLimit(limit) → {int}

- - - - - - -
- Set the upload bandwidth limit. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
limit - - upload limit to set (-1 to reset to default)
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- new upload limit after setting -
- - - -
-
- Type -
-
- -int - - -
-
- - - - - - - - - - - - - -

(async) startMining(address, numThreads, isBackground, ignoreBattery)

- - - - - - -
- Start mining. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
address - - -string - - - - address given miner rewards if the daemon mines a block
numThreads - - -integer - - - - number of mining threads to run
isBackground - - -boolean - - - - specifies if the miner should run in the background or not
ignoreBattery - - -boolean - - - - specifies if the battery state (e.g. on laptop) should be ignored or not
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) stop()

- - - - - - -
- Safely disconnect and shut down the daemon. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) stopMining()

- - - - - - -
- Stop mining. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) stopProcess(force) → {Promise.<(number|undefined)>}

- - - - - - -
- Stop the internal process running monerod, if applicable. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
force - - -boolean - - - - specifies if the process should be destroyed forcibly
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the exit code from stopping the process -
- - - -
-
- Type -
-
- -Promise.<(number|undefined)> - - -
-
- - - - - - - - - - - - - -

(async) submitBlock(blockBlob)

- - - - - - -
- Submit a mined block to the network. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
blockBlob - - -string - - - - mined block to submit
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) submitBlocks(blockBlobs)

- - - - - - -
- Submit mined blocks to the network. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
blockBlobs - - -Array.<string> - - - - mined blocks to submit
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) submitTxHex(txHex, doNotRelay) → {MoneroSubmitTxResult}

- - - - - - -
- Submits a transaction to the daemon's pool. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
txHex - - -string - - - - raw transaction hex to submit
doNotRelay - - -boolean - - - - specifies if the tx should be relayed (optional)
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- contains submission results -
- - - -
-
- Type -
-
- -MoneroSubmitTxResult - - -
-
- - - - - - - - - - - - - -

(async) waitForNextBlockHeader() → {MoneroBlockHeader}

- - - - - - -
- Get the header of the next block added to the chain. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- header of the next block added to the chain -
- - - -
-
- Type -
-
- -MoneroBlockHeader - - -
-
- - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroDaemonSyncInfo.html b/docs/MoneroDaemonSyncInfo.html deleted file mode 100644 index 9a6d12e54..000000000 --- a/docs/MoneroDaemonSyncInfo.html +++ /dev/null @@ -1,1602 +0,0 @@ - - - - - JSDoc: Class: MoneroDaemonSyncInfo - - - - - - - - - - -
- -

Class: MoneroDaemonSyncInfo

- - - - - - -
- -
- -

MoneroDaemonSyncInfo()

- -
Models daemon synchronization information.
- - -
- -
-
- - - - -

Constructor

- - - -

new MoneroDaemonSyncInfo()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

getCredits()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getHeight()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getNextNeededPruningSeed()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getOverview()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getPeers()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getSpans()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getTargetHeight()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getTopBlockHash()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setCredits()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setHeight()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setNextNeededPruningSeed()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setOverview()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setPeers()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setSpans()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setTargetHeight()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setTopBlockHash()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toJson()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroDaemonUpdateCheckResult.html b/docs/MoneroDaemonUpdateCheckResult.html deleted file mode 100644 index 609bb0bbe..000000000 --- a/docs/MoneroDaemonUpdateCheckResult.html +++ /dev/null @@ -1,1197 +0,0 @@ - - - - - JSDoc: Class: MoneroDaemonUpdateCheckResult - - - - - - - - - - -
- -

Class: MoneroDaemonUpdateCheckResult

- - - - - - -
- -
- -

MoneroDaemonUpdateCheckResult(is)

- -
Models the result of checking for a daemon update.
- - -
- -
-
- - - - -

Constructor

- - - -

new MoneroDaemonUpdateCheckResult(is)

- - - - - - -
- Deep copy constructor. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
is - - -MoneroDaemonUpdateCheckResult - - - - an existing result to deep copy from
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

getAutoUri() → {string}

- - - - - - -
- Get the uri to automatically download the update. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- is the uri to automatically download the update -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

getHash() → {string}

- - - - - - -
- Get the update's hash. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- is the update's hash -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

getUserUri() → {string}

- - - - - - -
- Get the uri to manually download the update. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- is the uri to manually download the update -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

getVersion() → {string}

- - - - - - -
- Get the update's version. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- is the update's version -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

isUpdateAvailable() → {boolean}

- - - - - - -
- Indicates if an update is available. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if an update is available, false otherwise -
- - - -
-
- Type -
-
- -boolean - - -
-
- - - - - - - - - - - - - -

setAutoUri()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setHash()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsUpdateAvailable()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setUserUri()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setVersion()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroDaemonUpdateDownloadResult.html b/docs/MoneroDaemonUpdateDownloadResult.html deleted file mode 100644 index aa5e266d9..000000000 --- a/docs/MoneroDaemonUpdateDownloadResult.html +++ /dev/null @@ -1,421 +0,0 @@ - - - - - JSDoc: Class: MoneroDaemonUpdateDownloadResult - - - - - - - - - - -
- -

Class: MoneroDaemonUpdateDownloadResult

- - - - - - -
- -
- -

MoneroDaemonUpdateDownloadResult(is)

- -
Models the result of downloading an update.
- - -
- -
-
- - - - -

Constructor

- - - -

new MoneroDaemonUpdateDownloadResult(is)

- - - - - - -
- Construct a download result. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
is - - -MoneroDaemonUpdateCheckResult - - - - an existing result to copy from
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

getDownloadPath() → {string}

- - - - - - -
- Get the path the update was downloaded to. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- is the path the update was downloaded to -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

setDownloadPath()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroDestination.html b/docs/MoneroDestination.html deleted file mode 100644 index 3b58f23b5..000000000 --- a/docs/MoneroDestination.html +++ /dev/null @@ -1,847 +0,0 @@ - - - - - JSDoc: Class: MoneroDestination - - - - - - - - - - -
- -

Class: MoneroDestination

- - - - - - -
- -
- -

MoneroDestination(stateOrAddress, amount)

- -
Models an outgoing transfer destination.
- - -
- -
-
- - - - -

Constructor

- - - -

new MoneroDestination(stateOrAddress, amount)

- - - - - - -
- Construct the model. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
stateOrAddress - - -MoneroDestination -| - -object -| - -string - - - - is a MoneroDestination, JS object, or hex string to initialize from (optional)
amount - - -BigInteger -| - -string - - - - the destination amount
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

copy()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getAddress()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getAmount()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setAddress()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setAmount()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toJson()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toString()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroError.html b/docs/MoneroError.html deleted file mode 100644 index 30fa7b915..000000000 --- a/docs/MoneroError.html +++ /dev/null @@ -1,418 +0,0 @@ - - - - - JSDoc: Class: MoneroError - - - - - - - - - - -
- -

Class: MoneroError

- - - - - - -
- -
- -

MoneroError(message, code)

- -
Exception when interacting with a Monero wallet or daemon.
- - -
- -
-
- - - - -

Constructor

- - - -

new MoneroError(message, code)

- - - - - - -
- Constructs the error. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
message - - -string - - - - is a human-readable message of the error
code - - -int - - - - is the error code (optional)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

getCode()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toString()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroFeeEstimate.html b/docs/MoneroFeeEstimate.html deleted file mode 100644 index f68d31daa..000000000 --- a/docs/MoneroFeeEstimate.html +++ /dev/null @@ -1,986 +0,0 @@ - - - - - JSDoc: Class: MoneroFeeEstimate - - - - - - - - - - -
- -

Class: MoneroFeeEstimate

- - - - - - -
- -
- -

MoneroFeeEstimate(state)

- -
Models a Monero fee estimate.
- - -
- -
-
- - - - -

Constructor

- - - -

new MoneroFeeEstimate(state)

- - - - - - -
- Construct the model. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
state - - -MoneroFeeEstimate -| - -object - - - - MoneroFeeEstimate or JS object
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

copy()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getFee()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getFees()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getQuantizationMask()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setFee()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setFees()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setQuantizationMask()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toJson()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toString()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroHardForkInfo.html b/docs/MoneroHardForkInfo.html deleted file mode 100644 index c917ac28b..000000000 --- a/docs/MoneroHardForkInfo.html +++ /dev/null @@ -1,1938 +0,0 @@ - - - - - JSDoc: Class: MoneroHardForkInfo - - - - - - - - - - -
- -

Class: MoneroHardForkInfo

- - - - - - -
- -
- -

MoneroHardForkInfo()

- -
Monero hard fork info.
- - -
- -
-
- - - - -

Constructor

- - - -

new MoneroHardForkInfo()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

getCredits()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getEarliestHeight()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getNumVotes()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getState()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getThreshold()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getTopBlockHash()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getVersion()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getVoting()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getWindow()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isEnabled()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setCredits()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setEarliestHeight()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsEnabled()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setNumVotes()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setState()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setThreshold()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setTopBlockHash()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setVersion()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setVoting()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setWindow()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toJson()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroIncomingTransfer.html b/docs/MoneroIncomingTransfer.html deleted file mode 100644 index 652137286..000000000 --- a/docs/MoneroIncomingTransfer.html +++ /dev/null @@ -1,1988 +0,0 @@ - - - - - JSDoc: Class: MoneroIncomingTransfer - - - - - - - - - - -
- -

Class: MoneroIncomingTransfer

- - - - - - -
- -
- -

MoneroIncomingTransfer(state)

- -
Models an incoming transfer of funds to the wallet.
- - -
- -
-
- - - - -

Constructor

- - - -

new MoneroIncomingTransfer(state)

- - - - - - -
- Construct the model. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
state - - -MoneroTransfer -| - -object - - - - is existing state to initialize from (optional)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - -

Extends

- - - - - - - - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

copy()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getAccountIndex()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getAddress()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getAmount()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getNumSuggestedConfirmations() → {number}

- - - - - - -
- Return how many confirmations till it's not economically worth re-writing the chain. -That is, the number of confirmations before the transaction is highly unlikely to be -double spent or overwritten and may be considered settled, e.g. for a merchant to trust -as finalized. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- is the number of confirmations before it's not worth rewriting the chain -
- - - -
-
- Type -
-
- -number - - -
-
- - - - - - - - - - - - - -

getSubaddressIndex()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getTx()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isIncoming()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isOutgoing()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

merge(transfer)

- - - - - - -
- Updates this transaction by merging the latest information from the given -transaction. - -Merging can modify or build references to the transfer given so it -should not be re-used or it should be copied before calling this method. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
transfer - - -MoneroIncomingTransfer - - - - is the transfer to merge into this one
- - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setAccountIndex()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setAddress()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setAmount()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setNumSuggestedConfirmations()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setSubaddressIndex()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setTx()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toJson()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toString()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toString()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroIntegratedAddress.html b/docs/MoneroIntegratedAddress.html deleted file mode 100644 index 4f17f5290..000000000 --- a/docs/MoneroIntegratedAddress.html +++ /dev/null @@ -1,846 +0,0 @@ - - - - - JSDoc: Class: MoneroIntegratedAddress - - - - - - - - - - -
- -

Class: MoneroIntegratedAddress

- - - - - - -
- -
- -

MoneroIntegratedAddress()

- -
Monero integrated address model.
- - -
- -
-
- - - - -

Constructor

- - - -

new MoneroIntegratedAddress()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

getIntegratedAddress()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getPaymentId()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getStandardAddress()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIntegratedAddress()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setPaymentId()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setStandardAddress()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toJson()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toString()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroKeyImage.html b/docs/MoneroKeyImage.html deleted file mode 100644 index 3ba5ff61b..000000000 --- a/docs/MoneroKeyImage.html +++ /dev/null @@ -1,928 +0,0 @@ - - - - - JSDoc: Class: MoneroKeyImage - - - - - - - - - - -
- -

Class: MoneroKeyImage

- - - - - - -
- -
- -

MoneroKeyImage(stateOrHex, signature)

- -
Models a Monero key image.
- - -
- -
-
- - - - -

Constructor

- - - -

new MoneroKeyImage(stateOrHex, signature)

- - - - - - -
- Construct the model. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
stateOrHex - - -MoneroKeyImage -| - -object -| - -string - - - - is a MoneroKeyImage, JS object, or hex string to initialize from (optional)
signature - - -string - - - - is the key image's signature
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

copy()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getHex()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getSignature()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

merge()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setHex()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setSignature()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toJson()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toString()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroKeyImageImportResult.html b/docs/MoneroKeyImageImportResult.html deleted file mode 100644 index 031ef2630..000000000 --- a/docs/MoneroKeyImageImportResult.html +++ /dev/null @@ -1,762 +0,0 @@ - - - - - JSDoc: Class: MoneroKeyImageImportResult - - - - - - - - - - -
- -

Class: MoneroKeyImageImportResult

- - - - - - -
- -
- -

MoneroKeyImageImportResult()

- -
Models results from importing key images.
- - -
- -
-
- - - - -

Constructor

- - - -

new MoneroKeyImageImportResult()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

getHeight()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getSpentAmount()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getUnspentAmount()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setHeight()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setSpentAmount()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setUnspentAmount()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toJson()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroKeyImageSpentStatus.html b/docs/MoneroKeyImageSpentStatus.html deleted file mode 100644 index ff32e2a7e..000000000 --- a/docs/MoneroKeyImageSpentStatus.html +++ /dev/null @@ -1,350 +0,0 @@ - - - - - JSDoc: Class: MoneroKeyImageSpentStatus - - - - - - - - - - -
- -

Class: MoneroKeyImageSpentStatus

- - - - - - -
- -
- -

MoneroKeyImageSpentStatus

- -
Enumerate key image spent statuses.
- - -
- -
-
- - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - -

Members

- - - -

(static) CONFIRMED

- - - - -
- Key image is confirmed (value=1). -
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

(static) NOT_SPENT

- - - - -
- Key image is not spent (value=0). -
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

(static) TX_POOL

- - - - -
- Key image is in the pool (value=2). -
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroMessageSignatureResult.html b/docs/MoneroMessageSignatureResult.html deleted file mode 100644 index 887c155f5..000000000 --- a/docs/MoneroMessageSignatureResult.html +++ /dev/null @@ -1,930 +0,0 @@ - - - - - JSDoc: Class: MoneroMessageSignatureResult - - - - - - - - - - -
- -

Class: MoneroMessageSignatureResult

- - - - - - -
- -
- -

MoneroMessageSignatureResult()

- -
Message signature verification result.
- - -
- -
-
- - - - -

Constructor

- - - -

new MoneroMessageSignatureResult()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

getSignatureType()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getVersion()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isGood()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isOld()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsGood()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsOld()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setSignatureType()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setVersion()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toJson()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroMessageSignatureType.html b/docs/MoneroMessageSignatureType.html deleted file mode 100644 index 2e333a030..000000000 --- a/docs/MoneroMessageSignatureType.html +++ /dev/null @@ -1,288 +0,0 @@ - - - - - JSDoc: Class: MoneroMessageSignatureType - - - - - - - - - - -
- -

Class: MoneroMessageSignatureType

- - - - - - -
- -
- -

MoneroMessageSignatureType

- -
Enumerate message signature types.
- - -
- -
-
- - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - -

Members

- - - -

(static) SIGN_WITH_SPEND_KEY

- - - - -
- Sign with spend key (value=0). -
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

(static) SIGN_WITH_VIEW_KEY

- - - - -
- Sign with the view key (value=1). -
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroMinerTxSum.html b/docs/MoneroMinerTxSum.html deleted file mode 100644 index 2a0293600..000000000 --- a/docs/MoneroMinerTxSum.html +++ /dev/null @@ -1,594 +0,0 @@ - - - - - JSDoc: Class: MoneroMinerTxSum - - - - - - - - - - -
- -

Class: MoneroMinerTxSum

- - - - - - -
- -
- -

MoneroMinerTxSum()

- -
Model for the summation of miner emissions and fees.
- - -
- -
-
- - - - -

Constructor

- - - -

new MoneroMinerTxSum()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

getEmissionSum()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getFeeSum()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setEmissionSum()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setFeeSum()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toJson()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroMiningStatus.html b/docs/MoneroMiningStatus.html deleted file mode 100644 index 073f25d27..000000000 --- a/docs/MoneroMiningStatus.html +++ /dev/null @@ -1,1098 +0,0 @@ - - - - - JSDoc: Class: MoneroMiningStatus - - - - - - - - - - -
- -

Class: MoneroMiningStatus

- - - - - - -
- -
- -

MoneroMiningStatus()

- -
Models daemon mining status.
- - -
- -
-
- - - - -

Constructor

- - - -

new MoneroMiningStatus()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

getAddress()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getNumThreads()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getSpeed()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isActive()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isBackground()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setAddress()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsActive()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsBackground()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setNumThreads()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setSpeed()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toJson()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroMultisigInfo.html b/docs/MoneroMultisigInfo.html deleted file mode 100644 index 47f2a7652..000000000 --- a/docs/MoneroMultisigInfo.html +++ /dev/null @@ -1,930 +0,0 @@ - - - - - JSDoc: Class: MoneroMultisigInfo - - - - - - - - - - -
- -

Class: MoneroMultisigInfo

- - - - - - -
- -
- -

MoneroMultisigInfo()

- -
Models information about a multisig wallet.
- - -
- -
-
- - - - -

Constructor

- - - -

new MoneroMultisigInfo()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

getNumParticipants()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getThreshold()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isMultisig()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isReady()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsMultisig()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsReady()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setNumParticipants()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setThreshold()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toJson()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroMultisigInitResult.html b/docs/MoneroMultisigInitResult.html deleted file mode 100644 index d8b28f9b0..000000000 --- a/docs/MoneroMultisigInitResult.html +++ /dev/null @@ -1,596 +0,0 @@ - - - - - JSDoc: Class: MoneroMultisigInitResult - - - - - - - - - - -
- -

Class: MoneroMultisigInitResult

- - - - - - -
- -
- -

MoneroMultisigInitResult()

- -
Models the result of initializing a multisig wallet which results in the -multisig wallet's address xor another multisig hex to share with -participants to create the wallet.
- - -
- -
-
- - - - -

Constructor

- - - -

new MoneroMultisigInitResult()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

getAddress()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getMultisigHex()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setAddress()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setMultisigHex()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toJson()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroMultisigSignResult.html b/docs/MoneroMultisigSignResult.html deleted file mode 100644 index a453cf6cf..000000000 --- a/docs/MoneroMultisigSignResult.html +++ /dev/null @@ -1,594 +0,0 @@ - - - - - JSDoc: Class: MoneroMultisigSignResult - - - - - - - - - - -
- -

Class: MoneroMultisigSignResult

- - - - - - -
- -
- -

MoneroMultisigSignResult()

- -
Models the result of signing multisig tx hex.
- - -
- -
-
- - - - -

Constructor

- - - -

new MoneroMultisigSignResult()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

getSignedMultisigTxHex()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getTxHashes()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setSignedMultisigTxHex()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setTxHashes()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toJson()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroNetworkType.html b/docs/MoneroNetworkType.html deleted file mode 100644 index bc1cf4324..000000000 --- a/docs/MoneroNetworkType.html +++ /dev/null @@ -1,919 +0,0 @@ - - - - - JSDoc: Class: MoneroNetworkType - - - - - - - - - - -
- -

Class: MoneroNetworkType

- - - - - - -
- -
- -

MoneroNetworkType

- -
Defines the Monero network types (mainnet, testnet, and stagenet).
- - -
- -
-
- - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - -

Members

- - - -

(static) MAINNET

- - - - -
- Mainnet (value=0). -
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

(static) STAGENET

- - - - -
- Stagnet (value=2). -
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

(static) TESTNET

- - - - -
- Testnet (value=1). -
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - -

Methods

- - - - - - - -

(static) isValid(networkType) → {boolean}

- - - - - - -
- Indicates if the given network type is valid or not. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
networkType - - -int - - - - the network type to validate as a numeric
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if the network type is valid, false otherwise -
- - - -
-
- Type -
-
- -boolean - - -
-
- - - - - - - - - - - - - -

(static) parse(networkTypeStr) → {int}

- - - - - - -
- Parse the given string as a network type. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
networkTypeStr - - -string - - - - "mainnet", "testnet", or "stagenet" (case insensitive)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the network type as a numeric -
- - - -
-
- Type -
-
- -int - - -
-
- - - - - - - - - - - - - -

(static) toString() → {string}

- - - - - - -
- Get the network type in human-readable form. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the network type in human-readable form -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(static) validate(networkType)

- - - - - - -
- Validates the given network type. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
networkType - - -int - - - - the network type to validate as a numeric
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroOutgoingTransfer.html b/docs/MoneroOutgoingTransfer.html deleted file mode 100644 index 03a0bfbc7..000000000 --- a/docs/MoneroOutgoingTransfer.html +++ /dev/null @@ -1,1865 +0,0 @@ - - - - - JSDoc: Class: MoneroOutgoingTransfer - - - - - - - - - - -
- -

Class: MoneroOutgoingTransfer

- - - - - - -
- -
- -

MoneroOutgoingTransfer(state)

- -
Models an outgoing transfer of funds from the wallet.
- - -
- -
-
- - - - -

Constructor

- - - -

new MoneroOutgoingTransfer(state)

- - - - - - -
- Construct the model. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
state - - -MoneroOutgoingTranser -| - -object - - - - is existing state to initialize from (optional)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - -

Extends

- - - - - - - - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

copy()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getAccountIndex()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getAddresses()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getAmount()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getDestinations()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getSubaddressIndices()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getTx()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isIncoming()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isOutgoing()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

merge(transfer)

- - - - - - -
- Updates this transaction by merging the latest information from the given -transaction. - -Merging can modify or build references to the transfer given so it -should not be re-used or it should be copied before calling this method. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
transfer - - is the transfer to merge into this one
- - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setAccountIndex()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setAddresses()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setAmount()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setDestinations()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setSubaddressIndices()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setTx()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toJson()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toString()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroOutput.html b/docs/MoneroOutput.html deleted file mode 100644 index 1fa49ebb4..000000000 --- a/docs/MoneroOutput.html +++ /dev/null @@ -1,1574 +0,0 @@ - - - - - JSDoc: Class: MoneroOutput - - - - - - - - - - -
- -

Class: MoneroOutput

- - - - - - -
- -
- -

MoneroOutput(state)

- -
Models a Monero transaction output.
- - -
- -
-
- - - - -

Constructor

- - - -

new MoneroOutput(state)

- - - - - - -
- Construct the model. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
state - - -MoneroOutput -| - -object - - - - is existing state to initialize from (optional)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

copy()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getAmount()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getIndex()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getKeyImage()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getRingOutputIndices()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getStealthPublicKey()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getTx()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

merge()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setAmount()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIndex()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setKeyImage()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setRingOutputIndices()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setStealthPublicKey()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setTx()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toJson()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toString()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroOutputHistogramEntry.html b/docs/MoneroOutputHistogramEntry.html deleted file mode 100644 index b0f8c919b..000000000 --- a/docs/MoneroOutputHistogramEntry.html +++ /dev/null @@ -1,930 +0,0 @@ - - - - - JSDoc: Class: MoneroOutputHistogramEntry - - - - - - - - - - -
- -

Class: MoneroOutputHistogramEntry

- - - - - - -
- -
- -

MoneroOutputHistogramEntry()

- -
Entry in a Monero output histogram (see get_output_histogram of Daemon RPC documentation).
- - -
- -
-
- - - - -

Constructor

- - - -

new MoneroOutputHistogramEntry()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

getAmount()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getNumInstances()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getNumRecentInstances()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getNumUnlockedInstances()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setAmount()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setNumInstances()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setNumRecentInstances()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setNumUnlockedInstances()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toJson()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroOutputQuery.html b/docs/MoneroOutputQuery.html deleted file mode 100644 index eab7885e2..000000000 --- a/docs/MoneroOutputQuery.html +++ /dev/null @@ -1,3634 +0,0 @@ - - - - - JSDoc: Class: MoneroOutputQuery - - - - - - - - - - -
- -

Class: MoneroOutputQuery

- - - - - - -
- -
- -

MoneroOutputQuery(config)

- -
Configuration to query wallet outputs.
- - -
- -
-
- - - - -

Constructor

- - - -

new MoneroOutputQuery(config)

- - - - - - -
-

Construct the output query.

- -

Example:

- - -// get available outputs in account 0 with a minimum amount
-let outputs = await wallet.getOutputs({
-   isSpent: false,
-   isLocked: false,
-   accountIndex: 0,
-   minAmount: new BigInteger("750000")
-}); -
- -

All configuration is optional. All outputs are returned except those that don't meet criteria defined in this query.

-
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
config - - -object - - - - output query configuration (optional) -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
accountIndex - - -int - - - - get outputs in this account index
subaddressIndex - - -int - - - - get outputs in this subaddress index
subaddressIndices - - -Array.<int> - - - - get outputs in these subaddress indices
amount - - -BigInteger - - - - get outputs with this amount
minAmount - - -BigInteger - - - - get outputs with amount greater than or equal to this amount
maxAmount - - -BigInteger - - - - get outputs with amount less than or equal to this amount
isSpent - - -boolean - - - - get spent xor unspent outputs
isFrozen - - -boolean - - - - get frozen xor thawed outputs
keyImage - - -object -| - -MoneroKeyImage - - - - get outputs with a key image matching fields defined in this key image -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
hex - - -string - - - - get outputs with this key image hex
signature - - -string - - - - get outputs with this key image signature
- -
txQuery - - -object -| - -MoneroTxQuery - - - - get outputs whose tx match this tx query
- -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - -

Extends

- - - - - - - - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

copy()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getAccountIndex()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getAmount()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getIndex()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getKeyImage()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getMaxAmount()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getMinAmount()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getRingOutputIndices()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getStealthPublicKey()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getSubaddressIndex()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getSubaddressIndices()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getTx()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getTxQuery()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isFrozen()

- - - - - - -
- Indicates if this output has been deemed 'malicious' and will therefore -not be spent by the wallet. -
- - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- Boolean is whether or not this output is frozen -
- - - - - - - - - - - - - - - -

isLocked()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isSpent()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

meetsCriteria()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

merge(output)

- - - - - - -
- Updates this output by merging the latest information from the given -output. - -Merging can modify or build references to the output given so it -should not be re-used or it should be copied before calling this method. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
output - - is the output to merge into this one
- - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setAccountIndex()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setAmount()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIndex()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsFrozen()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsSpent()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setKeyImage()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setMaxAmount()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setMinAmount()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setRingOutputIndices()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setStealthPublicKey()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setSubaddressIndex()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setSubaddressIndices()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setTx()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setTxQuery()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toJson()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toString()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroOutputWallet.html b/docs/MoneroOutputWallet.html deleted file mode 100644 index 0da0923e8..000000000 --- a/docs/MoneroOutputWallet.html +++ /dev/null @@ -1,2488 +0,0 @@ - - - - - JSDoc: Class: MoneroOutputWallet - - - - - - - - - - -
- -

Class: MoneroOutputWallet

- - - - - - -
- -
- -

MoneroOutputWallet(state)

- -
Models a Monero output with wallet extensions.
- - -
- -
-
- - - - -

Constructor

- - - -

new MoneroOutputWallet(state)

- - - - - - -
- Construct the model. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
state - - -MoneroOutputWallet -| - -object - - - - is existing state to initialize from (optional)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - -

Extends

- - - - - - - - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

copy()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getAccountIndex()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getAmount()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getIndex()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getKeyImage()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getRingOutputIndices()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getStealthPublicKey()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getSubaddressIndex()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getTx()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isFrozen()

- - - - - - -
- Indicates if this output has been deemed 'malicious' and will therefore -not be spent by the wallet. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- Boolean is whether or not this output is frozen -
- - - - - - - - - - - - - - - -

isLocked()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isSpent()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

merge(output)

- - - - - - -
- Updates this output by merging the latest information from the given -output. - -Merging can modify or build references to the output given so it -should not be re-used or it should be copied before calling this method. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
output - - is the output to merge into this one
- - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setAccountIndex()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setAmount()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIndex()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsFrozen()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsSpent()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setKeyImage()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setRingOutputIndices()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setStealthPublicKey()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setSubaddressIndex()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setTx()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toJson()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toString()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroPeer.html b/docs/MoneroPeer.html deleted file mode 100644 index 5ffb07b7d..000000000 --- a/docs/MoneroPeer.html +++ /dev/null @@ -1,4653 +0,0 @@ - - - - - JSDoc: Class: MoneroPeer - - - - - - - - - - -
- -

Class: MoneroPeer

- - - - - - -
- -
- -

MoneroPeer()

- -
Models a peer to the daemon.
- - -
- -
-
- - - - -

Constructor

- - - -

new MoneroPeer()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

getAddress()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getAvgDownload()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getAvgUpload()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getCurrentDownload()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getCurrentUpload()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getHeight()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getHost()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getId()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getId()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getLastSeenTimestamp()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getLiveTime()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getNumReceives()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getNumSends()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getNumSupportFlags()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getPort()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getPruningSeed()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getReceiveIdleTime()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getRpcCreditsPerHash()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getRpcPort()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getSendIdleTime()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getState()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getType()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isIncoming()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isLocalHost()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isLocalIp()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isOnline() → {boolean}

- - - - - - -
- Indicates if the peer was online when last checked (aka "white listed" as -opposed to "gray listed"). -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if peer was online when last checked, false otherwise -
- - - -
-
- Type -
-
- -boolean - - -
-
- - - - - - - - - - - - - -

setAddress()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setAvgDownload()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setAvgUpload()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setCurrentDownload()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setCurrentUpload()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setHeight()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setHost()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setId()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setId()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsIncoming()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsLocalHost()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsLocalIp()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsOnline()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setLastSeenTimestamp()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setLiveTime()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setNumReceives()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setNumSends()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setNumSupportFlags()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setPort()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setPruningSeed()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setReceiveIdleTime()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setRpcCreditsPerHash()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setRpcPort()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setSendIdleTime()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setState()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setType()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toJson()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroPruneResult.html b/docs/MoneroPruneResult.html deleted file mode 100644 index 7e45930e1..000000000 --- a/docs/MoneroPruneResult.html +++ /dev/null @@ -1,594 +0,0 @@ - - - - - JSDoc: Class: MoneroPruneResult - - - - - - - - - - -
- -

Class: MoneroPruneResult

- - - - - - -
- -
- -

MoneroPruneResult()

- -
Result of pruning the blockchain.
- - -
- -
-
- - - - -

Constructor

- - - -

new MoneroPruneResult()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

getPruningSeed()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isPruned()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsPruned()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setPruningSeed()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toJson()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroRpcConnection.html b/docs/MoneroRpcConnection.html deleted file mode 100644 index c2ac2ff21..000000000 --- a/docs/MoneroRpcConnection.html +++ /dev/null @@ -1,2980 +0,0 @@ - - - - - JSDoc: Class: MoneroRpcConnection - - - - - - - - - - -
- -

Class: MoneroRpcConnection

- - - - - - -
- -
- -

MoneroRpcConnection(uriOrConfigOrConnection, username, password, rejectUnauthorized)

- -
Maintains a connection and sends requests to a Monero RPC API.
- - -
- -
-
- - - - -

Constructor

- - - -

new MoneroRpcConnection(uriOrConfigOrConnection, username, password, rejectUnauthorized)

- - - - - - -
-

Construct a RPC connection.

- -

Examples:

- - -let connection1 = new MoneroRpcConnection("http://localhost:38081", "daemon_user", "daemon_password_123")

- -let connection2 = new MoneroRpcConnection({
-   uri: http://localhost:38081,
-   username: "daemon_user",
-   password: "daemon_password_123",
-   rejectUnauthorized: false, // accept self-signed certificates e.g. for local development
-   proxyToWorker: true // proxy request to worker (default false)
-}); -
-
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
uriOrConfigOrConnection - - -string -| - -object -| - -MoneroRpcConnection - - - - RPC endpoint URI, MoneroRpcConnection, or equivalent JS object -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
uri - - -string - - - - URI of the RPC endpoint
username - - -string - - - - username to authenticate with the RPC endpoint (optional)
password - - -string - - - - password to authenticate with the RPC endpoint (optional)
rejectUnauthorized - - -boolean - - - - rejects self-signed certificates if true (default true)
proxyToWorker - - -boolean - - - - proxy requests to worker
- -
username - - -string - - - - username to authenticate with the RPC endpoint (optional)
password - - -string - - - - password to authenticate with the RPC endpoint (optional)
rejectUnauthorized - - -boolean - - - - reject self-signed certificates if true (default true)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - -

Members

- - - -

(static) DEFAULT_CONFIG

- - - - -
- Default RPC configuration. -
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - -

Methods

- - - - - - - -

(async) checkConnection(timeoutInMs) → {Promise.<boolean>}

- - - - - - -
- Check the connection status to update isOnline, isAuthenticated, and response time. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
timeoutInMs - - -int - - - - maximum response time before considered offline
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if there is a change in status, false otherwise -
- - - -
-
- Type -
-
- -Promise.<boolean> - - -
-
- - - - - - - - - - - - - -

getAttribute()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getConfig()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getPassword()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getPriority()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getProxyToWorker()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getRejectUnauthorized()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getResponseTime()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getUri()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getUsername()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isAuthenticated() → {boolean|undefined}

- - - - - - -
- Indicates if the connection is authenticated according to the last call to checkConnection().

- -Note: must call checkConnection() manually unless using MoneroConnectionManager. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if authenticated or no authentication, false if not authenticated, or undefined if checkConnection() has not been called -
- - - -
-
- Type -
-
- -boolean -| - -undefined - - -
-
- - - - - - - - - - - - - -

isConnected() → {boolean|undefined}

- - - - - - -
- Indicates if the connection is connected according to the last call to checkConnection().

- -Note: must call checkConnection() manually unless using MoneroConnectionManager. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true or false to indicate if connected, or undefined if checkConnection() has not been called -
- - - -
-
- Type -
-
- -boolean -| - -undefined - - -
-
- - - - - - - - - - - - - -

isOnline() → {boolean|undefined}

- - - - - - -
- Indicates if the connection is online according to the last call to checkConnection().

- -Note: must call checkConnection() manually unless using MoneroConnectionManager. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true or false to indicate if online, or undefined if checkConnection() has not been called -
- - - -
-
- Type -
-
- -boolean -| - -undefined - - -
-
- - - - - - - - - - - - - -

(async) sendBinaryRequest(path, params, timeoutInMs) → {Uint8Array}

- - - - - - -
- Send a binary RPC request. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
path - - -string - - - - path of the binary RPC method to invoke
params - - -object - - - - request parameters
timeoutInMs - - -int - - - - request timeout in milliseconds
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the binary response -
- - - -
-
- Type -
-
- -Uint8Array - - -
-
- - - - - - - - - - - - - -

(async) sendJsonRequest(method, params, timeoutInMs) → {object}

- - - - - - -
- Send a JSON RPC request. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
method - - -string - - - - JSON RPC method to invoke
params - - -object - - - - request parameters
timeoutInMs - - -int - - - - request timeout in milliseconds
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- is the response map -
- - - -
-
- Type -
-
- -object - - -
-
- - - - - - - - - - - - - -

(async) sendPathRequest(path, params, timeoutInMs) → {object}

- - - - - - -
- Send a RPC request to the given path and with the given paramters. - -E.g. "/get_transactions" with params -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
path - - -string - - - - JSON RPC path to invoke
params - - -object - - - - request parameters
timeoutInMs - - -int - - - - request timeout in milliseconds
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- is the response map -
- - - -
-
- Type -
-
- -object - - -
-
- - - - - - - - - - - - - -

setAttribute()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setCredentials()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setPriority(priority) → {MoneroRpcConnection}

- - - - - - -
- Set the connection's priority relative to other connections. Priority 1 is highest, -then priority 2, etc. The default priority of 0 is lowest priority. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
priority - - -int - - - - the connection priority (default 0)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- this connection -
- - - -
-
- Type -
-
- -MoneroRpcConnection - - -
-
- - - - - - - - - - - - - -

setProxyToWorker()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toJson()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toString()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroRpcError.html b/docs/MoneroRpcError.html deleted file mode 100644 index e3ea68661..000000000 --- a/docs/MoneroRpcError.html +++ /dev/null @@ -1,548 +0,0 @@ - - - - - JSDoc: Class: MoneroRpcError - - - - - - - - - - -
- -

Class: MoneroRpcError

- - - - - - -
- -
- -

MoneroRpcError(rpcDescription, rpcCode, rpcMethod, rpcParams)

- -
Error when interacting with Monero RPC.
- - -
- -
-
- - - - -

Constructor

- - - -

new MoneroRpcError(rpcDescription, rpcCode, rpcMethod, rpcParams)

- - - - - - -
- Constructs the error. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
rpcDescription - - -string - - - - is a description of the error from rpc
rpcCode - - -int - - - - is the error code from rpc
rpcMethod - - -string - - - - is the rpc method invoked
rpcParams - - -object - - - - are parameters sent with the rpc request
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

getRpcMethod()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getRpcParams()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toString()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroSubaddress.html b/docs/MoneroSubaddress.html deleted file mode 100644 index 1e944c2c0..000000000 --- a/docs/MoneroSubaddress.html +++ /dev/null @@ -1,1854 +0,0 @@ - - - - - JSDoc: Class: MoneroSubaddress - - - - - - - - - - -
- -

Class: MoneroSubaddress

- - - - - - -
- -
- -

MoneroSubaddress()

- -
Monero subaddress model.
- - -
- -
-
- - - - -

Constructor

- - - -

new MoneroSubaddress()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

getAccountIndex()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getAddress()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getBalance()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getIndex()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getLabel()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getNumBlocksToUnlock()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getNumUnspentOutputs()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getUnlockedBalance()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isUsed()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setAccountIndex()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setAddress()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setBalance()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIndex()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsUsed()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setLabel()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setNumBlocksToUnlock()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setNumUnspentOutputs()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setUnlockedBalance()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toJson()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toString()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroSubmitTxResult.html b/docs/MoneroSubmitTxResult.html deleted file mode 100644 index bd88eaf4f..000000000 --- a/docs/MoneroSubmitTxResult.html +++ /dev/null @@ -1,2778 +0,0 @@ - - - - - JSDoc: Class: MoneroSubmitTxResult - - - - - - - - - - -
- -

Class: MoneroSubmitTxResult

- - - - - - -
- -
- -

MoneroSubmitTxResult()

- -
Models the result from submitting a tx to a daemon.
- - -
- -
-
- - - - -

Constructor

- - - -

new MoneroSubmitTxResult()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

getCredits()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getReason()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getSanityCheckFailed()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getTopBlockHash()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

hasInvalidInput()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

hasInvalidOutput()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

hasTooFewOutputs()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isDoubleSpendSeen()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isFeeTooLow()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isGood()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isMixinTooLow()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isOverspend()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isRelayed()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isTooBig()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isTxExtraTooBig()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setCredits()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setHasInvalidInput()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setHasInvalidOutput()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setHasTooFewOutputs()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsDoubleSpend()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsFeeTooLow()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsGood()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsMixinTooLow()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsOverspend()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsRelayed()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsTooBig()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsTxExtraTooBig()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setReason()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setSanityCheckFailed()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setTopBlockHash()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toJson()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroSyncResult.html b/docs/MoneroSyncResult.html deleted file mode 100644 index 51d07f0bb..000000000 --- a/docs/MoneroSyncResult.html +++ /dev/null @@ -1,510 +0,0 @@ - - - - - JSDoc: Class: MoneroSyncResult - - - - - - - - - - -
- -

Class: MoneroSyncResult

- - - - - - -
- -
- -

MoneroSyncResult()

- -
Result from syncing a Monero wallet.
- - -
- -
-
- - - - -

Constructor

- - - -

new MoneroSyncResult()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

getNumBlocksFetched()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getReceivedMoney()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setNumBlocksFetched()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setReceivedMoney()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroTransfer.html b/docs/MoneroTransfer.html deleted file mode 100644 index fdf706ae9..000000000 --- a/docs/MoneroTransfer.html +++ /dev/null @@ -1,1312 +0,0 @@ - - - - - JSDoc: Class: MoneroTransfer - - - - - - - - - - -
- -

Class: MoneroTransfer

- - - - - - -
- -
- -

MoneroTransfer(state)

- -
Models a base transfer of funds to or from the wallet.
- - -
- -
-
- - - - -

Constructor

- - - -

new MoneroTransfer(state)

- - - - - - -
- Construct the model. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
state - - -MoneroTransfer -| - -object - - - - is existing state to initialize from (optional)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

copy()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getAccountIndex()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getAmount()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getTx()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isIncoming()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isOutgoing()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

merge(transfer) → {MoneroTransfer}

- - - - - - -
- Updates this transaction by merging the latest information from the given -transaction. - -Merging can modify or build references to the transfer given so it -should not be re-used or it should be copied before calling this method. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
transfer - - is the transfer to merge into this one
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the merged transfer -
- - - -
-
- Type -
-
- -MoneroTransfer - - -
-
- - - - - - - - - - - - - -

setAccountIndex()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setAmount()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setTx()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toJson()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toString()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroTransferQuery.html b/docs/MoneroTransferQuery.html deleted file mode 100644 index 7db52a123..000000000 --- a/docs/MoneroTransferQuery.html +++ /dev/null @@ -1,3233 +0,0 @@ - - - - - JSDoc: Class: MoneroTransferQuery - - - - - - - - - - -
- -

Class: MoneroTransferQuery

- - - - - - -
- -
- -

MoneroTransferQuery(config)

- -
Configuration to query wallet transfers.
- - -
- -
-
- - - - -

Constructor

- - - -

new MoneroTransferQuery(config)

- - - - - - -
-

Construct the transfer query.

- -

Example:

- - -// get incoming transfers to account 0, subaddress 1
-let transfers = await wallet.getTransfers({
-   accountIndex: 0,
-   subaddressIndex: 0
-}); -
- -

All configuration is optional. All transfers are returned except those that don't meet criteria defined in this query.

-
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
config - - -object - - - - transfer query configuration (optional) -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
amount - - -BigInteger - - - - get transfers with this amount
accountIndex - - -int - - - - get transfers to/from this account index
subaddressIndex - - -int - - - - get transfers to/from this subaddress index
subaddressIndices - - -Array.<int> - - - - get transfers to/from these subaddress indices
address - - -string - - - - get transfers to/from this wallet address
addresses - - -Array.<string> - - - - get transfers to/from these wallet addresses
isIncoming - - -boolean - - - - get transfers which are incoming if true
isOutgoing - - -boolean - - - - get transfers which are outgoing if true
hasDestinations - - -boolean - - - - get transfers with known destinations if true (destinations are only stored locally with the wallet)
txQuery - - -object -| - -MoneroTxQuery - - - - get transfers whose tx match this tx query
- -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - -

Extends

- - - - - - - - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

copy()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getAccountIndex()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getAddress()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getAddresses()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getAmount()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getDestinations()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getSubaddressIndex()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getSubaddressIndices()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getTx()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getTxQuery()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

hasDestinations()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isIncoming()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isOutgoing()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

meetsCriteria()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

merge(transfer) → {MoneroTransfer}

- - - - - - -
- Updates this transaction by merging the latest information from the given -transaction. - -Merging can modify or build references to the transfer given so it -should not be re-used or it should be copied before calling this method. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
transfer - - is the transfer to merge into this one
- - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the merged transfer -
- - - -
-
- Type -
-
- -MoneroTransfer - - -
-
- - - - - - - - - - - - - -

setAccountIndex()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setAddress()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setAddresses()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setAmount()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setDestinations()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setHasDestinations()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsIncoming()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsLocked(isLocked) → {MoneroOutputQuery}

- - - - - - -
- Convenience method to query outputs by the locked state of their tx. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
isLocked - - specifies if the output's tx must be locked or unlocked (optional)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- this query for chaining -
- - - -
-
- Type -
-
- -MoneroOutputQuery - - -
-
- - - - - - - - - - - - - -

setIsOutgoing()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setSubaddressIndex()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setSubaddressIndices()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setTx()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setTxQuery()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toJson()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toString()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroTx.html b/docs/MoneroTx.html deleted file mode 100644 index b695a9f42..000000000 --- a/docs/MoneroTx.html +++ /dev/null @@ -1,7042 +0,0 @@ - - - - - JSDoc: Class: MoneroTx - - - - - - - - - - -
- -

Class: MoneroTx

- - - - - - -
- -
- -

MoneroTx(state)

- -
Represents a transaction on the Monero network.
- - -
- -
-
- - - - -

Constructor

- - - -

new MoneroTx(state)

- - - - - - -
- Construct the model. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
state - - -MoneroTx -| - -object - - - - is existing state to initialize from (optional)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

copy()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getBlock()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getExtra()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getFee()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getFullHex() → {string}

- - - - - - -
- Get full transaction hex. Full hex = pruned hex + prunable hex. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- is full transaction hex -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

getHash()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getHeight()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getInputs()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getKey()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getLastFailedHash()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getLastFailedHeight()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getLastRelayedTimestamp()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getMaxUsedBlockHash()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getMaxUsedBlockHeight()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getMetadata()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getNumConfirmations()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getOutputIndices()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getOutputs()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getPaymentId()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getPrunableHash()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getPrunableHex() → {string}

- - - - - - -
- Get prunable transaction hex which is hex that is removed from a pruned -transaction. Full hex = pruned hex + prunable hex. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- is the prunable transaction hex -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

getPrunedHex() → {string}

- - - - - - -
- Get pruned transaction hex. Full hex = pruned hex + prunable hex. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- is pruned transaction hex -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

getRctSigPrunable()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getRctSignatures()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getReceivedTimestamp()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getRelay()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getRingSize()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getSignatures()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getSize()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getUnlockTime() → {BigInteger}

- - - - - - -
- Get the minimum height or timestamp for the transactions to unlock. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the minimum height or timestamp for the transactin to unlock -
- - - -
-
- Type -
-
- -BigInteger - - -
-
- - - - - - - - - - - - - -

getVersion()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getWeight()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

inTxPool()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isConfirmed()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isDoubleSpendSeen()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isFailed()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isKeptByBlock()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isMinerTx()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isRelayed()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

merge(tx) → {MoneroTx}

- - - - - - -
- Updates this transaction by merging the latest information from the given -transaction. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
tx - - is the transaction to update this transaction with
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- this for method chaining -
- - - -
-
- Type -
-
- -MoneroTx - - -
-
- - - - - - - - - - - - - -

setBlock()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setExtra()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setFee()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setFullHex()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setHash()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setInTxPool()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setInputs()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsConfirmed()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsDoubleSpend()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsFailed()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsKeptByBlock()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsMinerTx()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsRelayed()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setKey()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setLastFailedHash()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setLastFailedHeight()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setLastRelayedTimestamp()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setMaxUsedBlockHash()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setMaxUsedBlockHeight()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setMetadata()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setNumConfirmations()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setOutputIndices()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setOutputs()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setPaymentId()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setPrunableHash()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setPrunableHex()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setPrunedHex()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setRctSigPrunable()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setRctSignatures()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setReceivedTimestamp()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setRelay()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setRingSize()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setSignatures()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setSize()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setUnlockTime()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setVersion()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setWeight()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toJson()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toString()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroTxConfig.html b/docs/MoneroTxConfig.html deleted file mode 100644 index 21f49e7af..000000000 --- a/docs/MoneroTxConfig.html +++ /dev/null @@ -1,4199 +0,0 @@ - - - - - JSDoc: Class: MoneroTxConfig - - - - - - - - - - -
- -

Class: MoneroTxConfig

- - - - - - -
- -
- -

MoneroTxConfig(config)

- -
Configures a transaction to send, sweep, or create a payment URI.
- - -
- -
-
- - - - -

Constructor

- - - -

new MoneroTxConfig(config)

- - - - - - -
-

Generic request to transfer funds from a wallet.

- -

Examples:

- - -let config1 = new MoneroTxConfig({
-   accountIndex: 0,
-   address: "59aZULsUF3YN...",
-   amount: new BigInteger("500000"),
-   priority: MoneroTxPriority.NORMAL,
-   relay: true
-});

-
-
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
config - - -MoneroTxConfig -| - -object - - - - configures the transaction to create (optional) -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
address - - -string - - - - single destination address
amount - - -BigInteger - - - - single destination amount
accountIndex - - -int - - - - source account index to transfer funds from
subaddressIndex - - -int - - - - source subaddress index to transfer funds from
subaddressIndices - - -Array.<int> - - - - source subaddress indices to transfer funds from
relay - - -boolean - - - - relay the transaction to peers to commit to the blockchain
priority - - -MoneroTxPriority - - - - transaction priority (default MoneroTxPriority.NORMAL)
destinations - - -Array.<MoneroDestination> - - - - addresses and amounts in a multi-destination tx
subtractFeeFrom - - -Array.<int> - - - - list of destination indices to split the transaction fee
paymentId - - -string - - - - transaction payment ID
unlockTime - - -BigInteger - - - - minimum height or timestamp for the transaction to unlock (default 0)
note - - -string - - - - transaction note saved locally with the wallet
recipientName - - -string - - - - recipient name saved locally with the wallet
canSplit - - -boolean - - - - allow funds to be transferred using multiple transactions
belowAmount - - -BigInteger - - - - for sweep requests, include outputs below this amount when sweeping wallet, account, subaddress, or all unlocked funds
sweepEachSubaddress - - -boolean - - - - for sweep requests, sweep each subaddress individually instead of together if true
keyImage - - -string - - - - key image to sweep (ignored except in sweepOutput() requests)
- -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

addDestination()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

copy()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getAccountIndex()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getAddress() → {string}

- - - - - - -
- Get the address of a single-destination configuration. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the address of the single destination -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

getAmount() → {BigInteger}

- - - - - - -
- Get the amount of a single-destination configuration. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the amount of the single destination -
- - - -
-
- Type -
-
- -BigInteger - - -
-
- - - - - - - - - - - - - -

getBelowAmount()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getCanSplit()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getDestinations()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getFee()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getKeyImage()

- - - - - - -
- Get the key image hex of the output to sweep. - -return {string} is the key image hex of the output to sweep -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getNote()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getPaymentId()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getPriority()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getRecipientName()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getRelay()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getSubaddressIndices()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getSubtractFeeFrom()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getSweepEachSubaddress()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getUnlockTime()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setAccountIndex()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setAddress(address) → {MoneroTxConfig}

- - - - - - -
- Set the address of a single-destination configuration. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
address - - -string - - - - the address to set for the single destination
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- this configuration for chaining -
- - - -
-
- Type -
-
- -MoneroTxConfig - - -
-
- - - - - - - - - - - - - -

setAmount(amount) → {MoneroTxConfig}

- - - - - - -
- Set the amount of a single-destination configuration. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
amount - - -BigInteger -| - -string - - - - the amount to set for the single destination
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- this configuration for chaining -
- - - -
-
- Type -
-
- -MoneroTxConfig - - -
-
- - - - - - - - - - - - - -

setBelowAmount()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setCanSplit()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setDestination()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setDestinations()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setFee()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setKeyImage(keyImage)

- - - - - - -
- Set the key image hex of the output to sweep. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
keyImage - - -string - - - - is the key image hex of the output to sweep
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setNote()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setPaymentId()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setPriority()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setRecipientName()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setRelay()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setSubaddressIndex()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setSubaddressIndices()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setSubtractFeeFrom()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setSweepEachSubaddress()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setUnlockTime()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toJson()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroTxPoolStats.html b/docs/MoneroTxPoolStats.html deleted file mode 100644 index aef2316c5..000000000 --- a/docs/MoneroTxPoolStats.html +++ /dev/null @@ -1,2442 +0,0 @@ - - - - - JSDoc: Class: MoneroTxPoolStats - - - - - - - - - - -
- -

Class: MoneroTxPoolStats

- - - - - - -
- -
- -

MoneroTxPoolStats()

- -
Models transaction pool statistics.
- - -
- -
-
- - - - -

Constructor

- - - -

new MoneroTxPoolStats()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

getBytesMax()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getBytesMed()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getBytesMin()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getBytesTotal()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getFeeTotal()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getHisto()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getHisto98pc()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getNum10m()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getNumDoubleSpends()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getNumFailing()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getNumNotRelayed()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getNumTxs()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getOldestTimestamp()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setBytesMax()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setBytesMed()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setBytesMin()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setBytesTotal()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setFeeTotal()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setHisto()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setHisto98pc()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setNum10m()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setNumDoubleSpends()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setNumFailing()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setNumNotRelayed()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setNumTxs()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setOldestTimestamp()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toJson()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroTxPriority.html b/docs/MoneroTxPriority.html deleted file mode 100644 index 1bde31131..000000000 --- a/docs/MoneroTxPriority.html +++ /dev/null @@ -1,412 +0,0 @@ - - - - - JSDoc: Class: MoneroTxPriority - - - - - - - - - - -
- -

Class: MoneroTxPriority

- - - - - - -
- -
- -

MoneroTxPriority

- -
Enumerates send priorities.
- - -
- -
-
- - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - -

Members

- - - -

(static) DEFAULT

- - - - -
- Default priority (i.e. normal) (value=0). -
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

(static) ELEVATED

- - - - -
- Elevated priority (value=3). -
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

(static) NORMAL

- - - - -
- Normal priority (value=2). -
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

(static) UNIMPORTANT

- - - - -
- Unimportant priority (value=1). -
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroTxQuery.html b/docs/MoneroTxQuery.html deleted file mode 100644 index e49dd3b58..000000000 --- a/docs/MoneroTxQuery.html +++ /dev/null @@ -1,12375 +0,0 @@ - - - - - JSDoc: Class: MoneroTxQuery - - - - - - - - - - -
- -

Class: MoneroTxQuery

- - - - - - -
- -
- -

MoneroTxQuery(config)

- -

Configuration to query transactions.

- - -
- -
-
- - - - -

Constructor

- - - -

new MoneroTxQuery(config)

- - - - - - -
-

Construct the transaction query.

- -

Example:

- - -// get transactions with unlocked incoming transfers to account 0
-let txs = await wallet.getTxs({
-   isLocked: false,
-   transferQuery: {
-     isIncoming: true,
-     accountIndex: 0
-   }
-}); -
- -

All configuration is optional. All transactions are returned except those that don't meet criteria defined in this query.

-
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
config - - -object - - - - tx query configuration -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
hash - - -string - - - - get a tx with this hash
txHashes - - -Array.<string> - - - - get txs with these hashes
height - - -int - - - - get txs with this height
minHeight - - -int - - - - get txs with height greater than or equal to this height
maxHeight - - -int - - - - get txs with height less than or equal to this height
isConfirmed - - -boolean - - - - get confirmed or unconfirmed txs
inTxPool - - -boolean - - - - get txs in or out of the tx pool
relay - - -boolean - - - - get txs with the same relay status
isRelayed - - -boolean - - - - get relayed or non-relayed txs
isFailed - - -boolean - - - - get failed or non-failed txs
isMinerTx - - -boolean - - - - get miner or non-miner txs
isLocked - - -boolean - - - - get locked or unlocked txs
isIncoming - - -boolean - - - - get txs with or without incoming transfers
isOutgoing - - -boolean - - - - get txs with or without outgoing transfers
paymentId - - -string - - - - get txs with this payment ID
paymentIds - - -string - - - - get txs with a payment ID among these payment IDs
hasPaymentId - - -boolean - - - - get txs with or without payment IDs
transferQuery - - -object -| - -MoneroTransferQuery - - - - get txs with transfers matching this transfer query
inputQuery - - -object -| - -MoneroOutputQuery - - - - get txs with inputs matching this input query
outputQuery - - -object -| - -MoneroOutputQuery - - - - get txs with outputs matching this output query
- -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - -

Extends

- - - - - - - - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

copy()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

filterOutputs()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

filterTransfers()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getBlock()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getChangeAddress()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getChangeAmount()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getExtra()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getExtraHex()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getFee()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getFullHex() → {string}

- - - - - - -
- Get full transaction hex. Full hex = pruned hex + prunable hex. -
- - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- is full transaction hex -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

getHash()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getHashes()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getHeight()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getIncludeOutputs()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getIncomingAmount()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getIncomingTransfers()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getInputQuery()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getInputSum()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getInputs()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getKey()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getLastFailedHash()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getLastFailedHeight()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getLastRelayedTimestamp()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getMaxHeight()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getMaxUsedBlockHash()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getMaxUsedBlockHeight()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getMetadata()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getMinHeight()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getNote()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getNumConfirmations()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getNumDummyOutputs()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getOutgoingAmount()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getOutgoingTransfer()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getOutputIndices()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getOutputQuery()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getOutputSum()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getOutputs()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getPaymentId()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getPaymentIds()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getPrunableHash()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getPrunableHex() → {string}

- - - - - - -
- Get prunable transaction hex which is hex that is removed from a pruned -transaction. Full hex = pruned hex + prunable hex. -
- - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- is the prunable transaction hex -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

getPrunedHex() → {string}

- - - - - - -
- Get pruned transaction hex. Full hex = pruned hex + prunable hex. -
- - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- is pruned transaction hex -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

getRctSigPrunable()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getRctSignatures()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getReceivedTimestamp()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getRelay()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getRingSize()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getSignatures()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getSize()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getTransferQuery()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getTransfers()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getTxSet()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getUnlockTime() → {BigInteger}

- - - - - - -
- Get the minimum height or timestamp for the transactions to unlock. -
- - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the minimum height or timestamp for the transactin to unlock -
- - - -
-
- Type -
-
- -BigInteger - - -
-
- - - - - - - - - - - - - -

getVersion()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getWeight()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

hasPaymentId()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

inTxPool()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isConfirmed()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isDoubleSpendSeen()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isFailed()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isIncoming()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isKeptByBlock()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isLocked()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isMinerTx()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isOutgoing()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isRelayed()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

meetsCriteria()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

merge(tx)

- - - - - - -
- Updates this transaction by merging the latest information from the given -transaction. - -Merging can modify or build references to the transaction given so it -should not be re-used or it should be copied before calling this method. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
tx - - is the transaction to merge into this transaction
- - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setBlock()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setChangeAddress()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setChangeAmount()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setExtra()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setExtraHex()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setFee()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setFullHex()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setHasPaymentId()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setHash()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setHashes()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setHeight()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setInTxPool()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIncludeOutputs()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIncomingTransfers()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setInputQuery()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setInputSum()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setInputs()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsConfirmed()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsDoubleSpend()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsFailed()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsIncoming()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsKeptByBlock()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsLocked()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsMinerTx()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsOutgoing()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsRelayed()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setKey()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setLastFailedHash()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setLastFailedHeight()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setLastRelayedTimestamp()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setMaxHeight()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setMaxUsedBlockHash()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setMaxUsedBlockHeight()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setMetadata()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setMinHeight()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setNote()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setNumConfirmations()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setNumDummyOutputs()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setOutgoingTransfer()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setOutputIndices()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setOutputQuery()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setOutputSum()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setOutputs()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setPaymentId()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setPaymentIds()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setPrunableHash()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setPrunableHex()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setPrunedHex()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setRctSigPrunable()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setRctSignatures()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setReceivedTimestamp()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setRelay()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setRingSize()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setSignatures()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setSize()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setTransferQuery()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setTxSet()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setUnlockTime()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setVersion()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setWeight()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toJson()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toString()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroTxSet.html b/docs/MoneroTxSet.html deleted file mode 100644 index bbafe9540..000000000 --- a/docs/MoneroTxSet.html +++ /dev/null @@ -1,1103 +0,0 @@ - - - - - JSDoc: Class: MoneroTxSet - - - - - - - - - - -
- -

Class: MoneroTxSet

- - - - - - -
- -
- -

MoneroTxSet()

- -
Groups transactions who share common hex data which is needed in order to -sign and submit the transactions. - -For example, multisig transactions created from createTxs() share a common -hex string which is needed in order to sign and submit the multisig -transactions.
- - -
- -
-
- - - - -

Constructor

- - - -

new MoneroTxSet()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

getMultisigTxHex()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getSignedTxHex()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getTxs()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getUnsignedTxHex()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

merge()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setMultisigTxHex()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setSignedTxHex()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setTxs()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setUnsignedTxHex()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toJson()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toString()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroTxWallet.html b/docs/MoneroTxWallet.html deleted file mode 100644 index 3e1161621..000000000 --- a/docs/MoneroTxWallet.html +++ /dev/null @@ -1,10033 +0,0 @@ - - - - - JSDoc: Class: MoneroTxWallet - - - - - - - - - - -
- -

Class: MoneroTxWallet

- - - - - - -
- -
- -

MoneroTxWallet(state)

- -
Models a Monero transaction with wallet extensions.
- - -
- -
-
- - - - -

Constructor

- - - -

new MoneroTxWallet(state)

- - - - - - -
- Construct the model. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
state - - -MoneroTxWallet -| - -object - - - - is existing state to initialize from (optional)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - -

Extends

- - - - - - - - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

copy()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

filterOutputs()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

filterTransfers()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getBlock()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getChangeAddress()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getChangeAmount()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getExtra()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getExtraHex()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getFee()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getFullHex() → {string}

- - - - - - -
- Get full transaction hex. Full hex = pruned hex + prunable hex. -
- - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- is full transaction hex -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

getHash()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getHeight()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getIncomingAmount()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getIncomingTransfers()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getInputSum()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getInputs()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getKey()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getLastFailedHash()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getLastFailedHeight()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getLastRelayedTimestamp()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getMaxUsedBlockHash()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getMaxUsedBlockHeight()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getMetadata()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getNote()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getNumConfirmations()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getNumDummyOutputs()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getOutgoingAmount()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getOutgoingTransfer()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getOutputIndices()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getOutputSum()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getOutputs()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getPaymentId()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getPrunableHash()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getPrunableHex() → {string}

- - - - - - -
- Get prunable transaction hex which is hex that is removed from a pruned -transaction. Full hex = pruned hex + prunable hex. -
- - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- is the prunable transaction hex -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

getPrunedHex() → {string}

- - - - - - -
- Get pruned transaction hex. Full hex = pruned hex + prunable hex. -
- - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- is pruned transaction hex -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

getRctSigPrunable()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getRctSignatures()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getReceivedTimestamp()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getRelay()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getRingSize()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getSignatures()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getSize()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getTransfers()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getTxSet()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getUnlockTime() → {BigInteger}

- - - - - - -
- Get the minimum height or timestamp for the transactions to unlock. -
- - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the minimum height or timestamp for the transactin to unlock -
- - - -
-
- Type -
-
- -BigInteger - - -
-
- - - - - - - - - - - - - -

getVersion()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getWeight()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

inTxPool()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isConfirmed()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isDoubleSpendSeen()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isFailed()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isIncoming()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isKeptByBlock()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isLocked()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isMinerTx()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isOutgoing()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isRelayed()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

merge(tx)

- - - - - - -
- Updates this transaction by merging the latest information from the given -transaction. - -Merging can modify or build references to the transaction given so it -should not be re-used or it should be copied before calling this method. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
tx - - is the transaction to merge into this transaction
- - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setBlock()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setChangeAddress()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setChangeAmount()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setExtra()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setExtraHex()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setFee()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setFullHex()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setHash()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setInTxPool()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIncomingTransfers()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setInputSum()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setInputs()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsConfirmed()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsDoubleSpend()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsFailed()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsIncoming()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsKeptByBlock()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsLocked()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsMinerTx()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsOutgoing()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsRelayed()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setKey()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setLastFailedHash()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setLastFailedHeight()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setLastRelayedTimestamp()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setMaxUsedBlockHash()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setMaxUsedBlockHeight()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setMetadata()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setNote()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setNumConfirmations()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setNumDummyOutputs()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setOutgoingTransfer()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setOutputIndices()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setOutputSum()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setOutputs()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setPaymentId()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setPrunableHash()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setPrunableHex()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setPrunedHex()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setRctSigPrunable()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setRctSignatures()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setReceivedTimestamp()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setRelay()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setRingSize()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setSignatures()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setSize()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setTxSet()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setUnlockTime()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setVersion()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setWeight()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toJson()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toString()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroUtils.html b/docs/MoneroUtils.html deleted file mode 100644 index b94652048..000000000 --- a/docs/MoneroUtils.html +++ /dev/null @@ -1,3893 +0,0 @@ - - - - - JSDoc: Class: MoneroUtils - - - - - - - - - - -
- -

Class: MoneroUtils

- - - - - - -
- -
- -

MoneroUtils

- -
Collection of Monero utilities. Runs in a worker thread by default.
- - -
- -
-
- - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

(static) atomicUnitsToXmr(amountAtomicUnits) → {number}

- - - - - - -
- Convert atomic units to XMR. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
amountAtomicUnits - - -BigInteger -| - -string - - - - amount in atomic units to convert to XMR
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- amount in XMR -
- - - -
-
- Type -
-
- -number - - -
-
- - - - - - - - - - - - - -

(async, static) binaryBlocksToJson(uint8arr) → {Promise.<object>}

- - - - - - -
- Convert the binary response from daemon RPC block retrieval to JSON. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
uint8arr - - -Uint8Array - - - - binary response from daemon RPC when getting blocks
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- JSON object with the blocks data -
- - - -
-
- Type -
-
- -Promise.<object> - - -
-
- - - - - - - - - - - - - -

(async, static) binaryToJson(uint8arr) → {Promise.<object>}

- - - - - - -
- Convert the given portable storage binary to JSON. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
uint8arr - - -Uint8Array - - - - binary data in Monero's portable storage format
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- JSON object converted from the binary data -
- - - -
-
- Type -
-
- -Promise.<object> - - -
-
- - - - - - - - - - - - - -

(async, static) getIntegratedAddress(networkType, standardAddress, paymentId) → {Promise.<MoneroIntegratedAddress>}

- - - - - - -
- Get an integrated address. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
networkType - - -MoneroNetworkType - - - - network type of the integrated address
standardAddress - - -string - - - - address to derive the integrated address from
paymentId - - -string - - - - optionally specifies the integrated address's payment id (defaults to random payment id)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the integrated address -
- - - -
-
- Type -
-
- -Promise.<MoneroIntegratedAddress> - - -
-
- - - - - - - - - - - - - -

(async, static) getLastTxPubKey(byte[]opt) → {string}

- - - - - - -
- Decode tx extra according to https://cryptonote.org/cns/cns005.txt and -returns the last tx pub key. - -TODO: use c++ bridge for this -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeAttributesDescription
byte[] - - - - <optional>
- - - - - -
txExtra - array of tx extra bytes
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the last pub key as a hexidecimal string -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(static) getVersion() → {string}

- - - - - - -
-

Get the version of the monero-javascript library.

-

- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the version of this monero-javascript library -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async, static) isValidAddress(address, networkType) → {Promise.<boolean>}

- - - - - - -
- Determine if the given address is valid. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
address - - -string - - - - address
networkType - - -MoneroNetworkType - - - - network type of the address to validate
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if the address is valid, false otherwise -
- - - -
-
- Type -
-
- -Promise.<boolean> - - -
-
- - - - - - - - - - - - - -

(async, static) isValidPaymentId(paymentId) → {Promise.<bool>}

- - - - - - -
- Determine if the given payment id is valid. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
paymentId - - -string - - - - payment id to determine if valid
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if the payment id is valid, false otherwise -
- - - -
-
- Type -
-
- -Promise.<bool> - - -
-
- - - - - - - - - - - - - -

(async, static) isValidPrivateSpendKey(privateSpendKey) → {Promise.<bool>}

- - - - - - -
- Indicates if a private spend key is valid. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
privateSpendKey - - -string - - - - is the private spend key to validate
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if the private spend key is valid, false otherwise -
- - - -
-
- Type -
-
- -Promise.<bool> - - -
-
- - - - - - - - - - - - - -

(async, static) isValidPrivateViewKey(privateViewKey) → {Promise.<bool>}

- - - - - - -
- Indicates if a private view key is valid. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
privateViewKey - - -string - - - - is the private view key to validate
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if the private view key is valid, false otherwise -
- - - -
-
- Type -
-
- -Promise.<bool> - - -
-
- - - - - - - - - - - - - -

(async, static) isValidPublicSpendKey(publicSpendKey) → {Promise.<bool>}

- - - - - - -
- Indicates if a public spend key is valid. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
publicSpendKey - - -string - - - - is the public spend key to validate
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if the public spend key is valid, false otherwise -
- - - -
-
- Type -
-
- -Promise.<bool> - - -
-
- - - - - - - - - - - - - -

(async, static) isValidPublicViewKey(publicViewKey) → {Promise.<bool>}

- - - - - - -
- Indicates if a public view key is valid. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
publicViewKey - - -string - - - - is the public view key to validate
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if the public view key is valid, false otherwise -
- - - -
-
- Type -
-
- -Promise.<bool> - - -
-
- - - - - - - - - - - - - -

(async, static) jsonToBinary(json) → {Promise.<Uint8Array>}

- - - - - - -
- Convert the given JSON to a binary Uint8Array using Monero's portable storage format. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
json - - -object - - - - json to convert to binary
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the json converted to portable storage binary -
- - - -
-
- Type -
-
- -Promise.<Uint8Array> - - -
-
- - - - - - - - - - - - - -

(static) mergeTx(txs, tx)

- - - - - - -
- Merges a transaction into a list of existing transactions. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
txs - - -Array.<MoneroTx> - - - - existing transactions to merge into
tx - - -MoneroTx - - - - transaction to merge into the list
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(static) paymentIdsEqual(paymentId1, paymentId2) → {bool}

- - - - - - -
- Determines if two payment ids are functionally equal. - -For example, 03284e41c342f032 and 03284e41c342f032000000000000000000000000000000000000000000000000 are considered equal. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
paymentId1 - - -string - - - - is a payment id to compare
paymentId2 - - -string - - - - is a payment id to compare
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if the payment ids are equal, false otherwise -
- - - -
-
- Type -
-
- -bool - - -
-
- - - - - - - - - - - - - -

(static) setProxyToWorker(proxyToWorker)

- - - - - - -
- Enable or disable proxying these utilities to a worker thread. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
proxyToWorker - - -boolean - - - - specifies if utilities should be proxied to a worker
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async, static) validateAddress(address, networkType)

- - - - - - -
- Validate the given address, throw an error if invalid. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
address - - -string - - - - address to validate
networkType - - -MoneroNetworkType - - - - network type of the address to validate
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async, static) validateMnemonic(mnemonic)

- - - - - - -
- Validate the given mnemonic, throw an error if invalid. - -TODO: improve validation, use network type -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
mnemonic - - -string - - - - mnemonic to validate
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async, static) validatePaymentId(paymentId)

- - - - - - -
- Validate the given payment id, throw an error if invalid. - -TODO: improve validation -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
paymentId - - -string - - - - payment id to validate
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async, static) validatePrivateSpendKey(privateSpendKey)

- - - - - - -
- Validate the given private spend key, throw an error if invalid. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
privateSpendKey - - -string - - - - private spend key to validate
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async, static) validatePrivateViewKey(privateViewKey)

- - - - - - -
- Validate the given private view key, throw an error if invalid. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
privateViewKey - - -string - - - - private view key to validate
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async, static) validatePublicSpendKey(publicSpendKey)

- - - - - - -
- Validate the given public spend key, throw an error if invalid. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
publicSpendKey - - -string - - - - public spend key to validate
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async, static) validatePublicViewKey(publicViewKey)

- - - - - - -
- Validate the given public view key, throw an error if invalid. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
publicViewKey - - -string - - - - public view key to validate
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(static) xmrToAtomicUnits(amountXmr) → {BigInteger}

- - - - - - -
- Convert XMR to atomic units. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
amountXmr - - -number -| - -string - - - - amount in XMR to convert to atomic units
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- amount in atomic units -
- - - -
-
- Type -
-
- -BigInteger - - -
-
- - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroVersion.html b/docs/MoneroVersion.html deleted file mode 100644 index b1b32e3f7..000000000 --- a/docs/MoneroVersion.html +++ /dev/null @@ -1,744 +0,0 @@ - - - - - JSDoc: Class: MoneroVersion - - - - - - - - - - -
- -

Class: MoneroVersion

- - - - - - -
- -
- -

MoneroVersion(number, isRelease)

- -
Models a Monero version.
- - -
- -
-
- - - - -

Constructor

- - - -

new MoneroVersion(number, isRelease)

- - - - - - -
- Construct the model. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
number - - is the version number
isRelease - - indicates if this version is a release
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

copy()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getNumber()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isRelease()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsRelease()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setNumber()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toJson()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroWallet.html b/docs/MoneroWallet.html deleted file mode 100644 index ccbb6268a..000000000 --- a/docs/MoneroWallet.html +++ /dev/null @@ -1,19152 +0,0 @@ - - - - - JSDoc: Interface: MoneroWallet - - - - - - - - - - -
- -

Interface: MoneroWallet

- - - - - - -
- -
- -

MoneroWallet

- -
Monero wallet interface and default implementations.
- - -
- -
-
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

(async) addAddressBookEntry(address, description) → {int}

- - - - - - -
- Add an address book entry. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
address - - -string - - - - entry address
description - - -string - - - - entry description (optional)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the index of the added entry -
- - - -
-
- Type -
-
- -int - - -
-
- - - - - - - - - - - - - -

(async) addListener(listener)

- - - - - - -
- Register a listener to receive wallet notifications. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
listener - - -MoneroWalletListener - - - - listener to receive wallet notifications
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) changePassword(oldPassword, newPassword)

- - - - - - -
- Change the wallet password. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
oldPassword - - -string - - - - the wallet's old password
newPassword - - -string - - - - the wallet's new password
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) checkReserveProof(address, message, signature) → {MoneroCheckReserve}

- - - - - - -
- Proves a wallet has a disposable reserve using a signature. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
address - - -string - - - - public wallet address
message - - -string - - - - message included with the signature to further authenticate the proof (optional)
signature - - -string - - - - reserve proof signature to check
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the result of checking the signature proof -
- - - -
-
- Type -
-
- -MoneroCheckReserve - - -
-
- - - - - - - - - - - - - -

(async) checkSpendProof(txHash, message, signature) → {boolean}

- - - - - - -
- Prove a spend using a signature. Unlike proving a transaction, it does not require the destination public address. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
txHash - - -string - - - - transaction to prove
message - - -string - - - - message included with the signature to further authenticate the proof (optional)
signature - - -string - - - - transaction signature to confirm
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if the signature is good, false otherwise -
- - - -
-
- Type -
-
- -boolean - - -
-
- - - - - - - - - - - - - -

(async) checkTxKey(txHash, txKey, address) → {MoneroCheckTx}

- - - - - - -
- Check a transaction in the blockchain with its secret key. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
txHash - - -string - - - - transaction to check
txKey - - -string - - - - transaction's secret key
address - - -string - - - - destination public address of the transaction
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the result of the check -
- - - -
-
- Type -
-
- -MoneroCheckTx - - -
-
- - - - - - - - - - - - - -

(async) checkTxProof(txHash, address, message, signature) → {MoneroCheckTx}

- - - - - - -
- Prove a transaction by checking its signature. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
txHash - - -string - - - - transaction to prove
address - - -string - - - - destination public address of the transaction
message - - -string - - - - message included with the signature to further authenticate the proof (optional)
signature - - -string - - - - transaction signature to confirm
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the result of the check -
- - - -
-
- Type -
-
- -MoneroCheckTx - - -
-
- - - - - - - - - - - - - -

(async) close(save)

- - - - - - -
- Optionally save then close the wallet. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
save - - -boolean - - - - specifies if the wallet should be saved before being closed (default false)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) createAccount(label) → {MoneroAccount}

- - - - - - -
- Create a new account with a label for the first subaddress. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
label - - -string - - - - label for account's first subaddress (optional)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the created account -
- - - -
-
- Type -
-
- -MoneroAccount - - -
-
- - - - - - - - - - - - - -

(async) createSubaddress(accountIdx, label) → {MoneroSubaddress}

- - - - - - -
- Create a subaddress within an account. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
accountIdx - - -int - - - - index of the account to create the subaddress within
label - - -string - - - - the label for the subaddress (optional)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the created subaddress -
- - - -
-
- Type -
-
- -MoneroSubaddress - - -
-
- - - - - - - - - - - - - -

(async) createTx(config) → {MoneroTxWallet}

- - - - - - -
- Create a transaction to transfer funds from this wallet. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
config - - -MoneroTxConfig -| - -object - - - - configures the transaction to create (required) -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
address - - -string - - - - single destination address (required unless `destinations` provided)
amount - - -BigInteger -| - -string - - - - single destination amount (required unless `destinations` provided)
accountIndex - - -int - - - - source account index to transfer funds from (required)
subaddressIndex - - -int - - - - source subaddress index to transfer funds from (optional)
subaddressIndices - - -Array.<int> - - - - source subaddress indices to transfer funds from (optional)
relay - - -boolean - - - - relay the transaction to peers to commit to the blockchain (default false)
priority - - -MoneroTxPriority - - - - transaction priority (default MoneroTxPriority.NORMAL)
destinations - - -Array.<MoneroDestination> - - - - addresses and amounts in a multi-destination tx (required unless `address` and `amount` provided)
subtractFeeFrom - - -Array.<int> - - - - list of destination indices to split the transaction fee (optional)
paymentId - - -string - - - - transaction payment ID (optional)
unlockTime - - -BigInteger -| - -string - - - - minimum height or timestamp for the transaction to unlock (default 0)
- -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the created transaction -
- - - -
-
- Type -
-
- -MoneroTxWallet - - -
-
- - - - - - - - - - - - - -

(async) createTxs(config) → {Array.<MoneroTxWallet>}

- - - - - - -
- Create one or more transactions to transfer funds from this wallet. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
config - - -MoneroTxConfig -| - -object - - - - configures the transactions to create (required) -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
address - - -string - - - - single destination address (required unless `destinations` provided)
amount - - -BigInteger -| - -string - - - - single destination amount (required unless `destinations` provided)
accountIndex - - -int - - - - source account index to transfer funds from (required)
subaddressIndex - - -int - - - - source subaddress index to transfer funds from (optional)
subaddressIndices - - -Array.<int> - - - - source subaddress indices to transfer funds from (optional)
relay - - -boolean - - - - relay the transactions to peers to commit to the blockchain (default false)
priority - - -MoneroTxPriority - - - - transaction priority (default MoneroTxPriority.NORMAL)
destinations - - -Array.<MoneroDestination> - - - - addresses and amounts in a multi-destination tx (required unless `address` and `amount` provided)
paymentId - - -string - - - - transaction payment ID (optional)
unlockTime - - -BigInteger -| - -string - - - - minimum height or timestamp for the transactions to unlock (default 0)
canSplit - - -boolean - - - - allow funds to be transferred using multiple transactions (default true)
- -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the created transactions -
- - - -
-
- Type -
-
- -Array.<MoneroTxWallet> - - -
-
- - - - - - - - - - - - - -

(async) decodeIntegratedAddress(integratedAddress) → {MoneroIntegratedAddress}

- - - - - - -
- Decode an integrated address to get its standard address and payment id. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
integratedAddress - - -string - - - - integrated address to decode
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the decoded integrated address including standard address and payment id -
- - - -
-
- Type -
-
- -MoneroIntegratedAddress - - -
-
- - - - - - - - - - - - - -

(async) deleteAddressBookEntry(entryIdx)

- - - - - - -
- Delete an address book entry. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
entryIdx - - -int - - - - index of the entry to delete
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) describeMultisigTxSet(multisigTxHex) → {MoneroTxSet}

- - - - - - -
- Describe a tx set from multisig tx hex. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
multisigTxHex - - -string - - - - multisig tx hex
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the tx set containing structured transactions -
- - - -
-
- Type -
-
- -MoneroTxSet - - -
-
- - - - - - - - - - - - - -

(async) describeTxSet(txSet) → {MoneroTxSet}

- - - - - - -
- Describe a tx set containing unsigned or multisig tx hex to a new tx set containing structured transactions. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
txSet - - -MoneroTxSet - - - - a tx set containing unsigned or multisig tx hex
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the tx set containing structured transactions -
- - - -
-
- Type -
-
- -MoneroTxSet - - -
-
- - - - - - - - - - - - - -

(async) describeUnsignedTxSet(unsignedTxHex) → {MoneroTxSet}

- - - - - - -
- Describe a tx set from unsigned tx hex. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
unsignedTxHex - - -string - - - - unsigned tx hex
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the tx set containing structured transactions -
- - - -
-
- Type -
-
- -MoneroTxSet - - -
-
- - - - - - - - - - - - - -

(async) editAddressBookEntry(index, setAddress, address, setDescription, description)

- - - - - - -
- Edit an address book entry. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
index - - -number - - - - index of the address book entry to edit
setAddress - - -boolean - - - - specifies if the address should be updated
address - - -string - - - - updated address
setDescription - - -boolean - - - - specifies if the description should be updated
description - - -string - - - - updated description
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) exchangeMultisigKeys(multisigHexes, password) → {MoneroMultisigInitResult}

- - - - - - -
- Exchange multisig hex with participants in a M/N multisig wallet. - -This process must be repeated with participants exactly N-M times. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
multisigHexes - - -Array.<string> - - - - are multisig hex from each participant
password - - -string - - - - wallet's password // TODO monero-project: redundant? wallet is created with password
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the result which has the multisig's address xor this wallet's multisig hex to share with participants iff not done -
- - - -
-
- Type -
-
- -MoneroMultisigInitResult - - -
-
- - - - - - - - - - - - - -

(async) exportKeyImages(all) → {Array.<MoneroKeyImage>}

- - - - - - -
- Export signed key images. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
all - - -boolean - - - - export all key images if true, else export the key images since the last export
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the wallet's signed key images -
- - - -
-
- Type -
-
- -Array.<MoneroKeyImage> - - -
-
- - - - - - - - - - - - - -

(async) exportMultisigHex() → {string}

- - - - - - -
- Export this wallet's multisig info as hex for other participants. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- this wallet's multisig info as hex for other participants -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) exportOutputs(all) → {string}

- - - - - - -
- Export outputs in hex format. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
all - - -boolean - - - - export all outputs if true, else export the outputs since the last export
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- outputs in hex format -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) freezeOutput(keyImage)

- - - - - - -
- Freeze an output. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
keyImage - - -string - - - - key image of the output to freeze
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) getAccount(accountIdx, includeSubaddresses) → {MoneroAccount}

- - - - - - -
- Get an account. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
accountIdx - - -int - - - - index of the account to get
includeSubaddresses - - -boolean - - - - include subaddresses if true
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the retrieved account -
- - - -
-
- Type -
-
- -MoneroAccount - - -
-
- - - - - - - - - - - - - -

(async) getAccountTags() → {Array.<MoneroAccountTag>}

- - - - - - -
- Return all account tags. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the wallet's account tags -
- - - -
-
- Type -
-
- -Array.<MoneroAccountTag> - - -
-
- - - - - - - - - - - - - -

(async) getAccounts(includeSubaddresses, tag) → {Array.<MoneroAccount>}

- - - - - - -
- Get accounts with a given tag. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
includeSubaddresses - - -boolean - - - - include subaddresses if true
tag - - -string - - - - tag for filtering accounts, all accounts if undefined
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- all accounts with the given tag -
- - - -
-
- Type -
-
- -Array.<MoneroAccount> - - -
-
- - - - - - - - - - - - - -

(async) getAddress(accountIdx, subaddressIdx) → {string}

- - - - - - -
- Get the address of a specific subaddress. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
accountIdx - - -int - - - - the account index of the address's subaddress
subaddressIdx - - -int - - - - the subaddress index within the account
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the receive address of the specified subaddress -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) getAddressBookEntries(entryIndices) → {Array.<MoneroAddressBookEntry>}

- - - - - - -
- Get address book entries. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
entryIndices - - -Array.<int> - - - - indices of the entries to get
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the address book entries -
- - - -
-
- Type -
-
- -Array.<MoneroAddressBookEntry> - - -
-
- - - - - - - - - - - - - -

(async) getAddressIndex(address) → {MoneroSubaddress}

- - - - - - -
- Get the account and subaddress index of the given address. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
address - - -string - - - - address to get the account and subaddress index from
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the account and subaddress indices -
- - - -
-
- Type -
-
- -MoneroSubaddress - - -
-
- - - - - - - - - - - - - -

(async) getAttribute(key) → {string}

- - - - - - -
- Get an attribute. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
key - - -string - - - - attribute to get the value of
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the attribute's value -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) getBalance(accountIdx, subaddressIdx) → {BigInteger}

- - - - - - -
- Get the balance of the wallet, account, or subaddress. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
accountIdx - - -int - - - - index of the account to get the balance of (default all accounts)
subaddressIdx - - -int - - - - index of the subaddress to get the balance of (default all subaddresses)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the balance of the wallet, account, or subaddress -
- - - -
-
- Type -
-
- -BigInteger - - -
-
- - - - - - - - - - - - - -

getConnectionManager() → {MoneroConnectionManager}

- - - - - - -
- Get the wallet's daemon connection manager. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the wallet's daemon connection manager -
- - - -
-
- Type -
-
- -MoneroConnectionManager - - -
-
- - - - - - - - - - - - - -

(async) getDaemonConnection() → {MoneroRpcConnection}

- - - - - - -
- Get the wallet's daemon connection. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the wallet's daemon connection -
- - - -
-
- Type -
-
- -MoneroRpcConnection - - -
-
- - - - - - - - - - - - - -

(async) getDaemonHeight() → {int}

- - - - - - -
- Get the blockchain's height. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the blockchain's height -
- - - -
-
- Type -
-
- -int - - -
-
- - - - - - - - - - - - - -

(async) getHeight() → {int}

- - - - - - -
- Get the block height that the wallet is synced to. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the block height that the wallet is synced to -
- - - -
-
- Type -
-
- -int - - -
-
- - - - - - - - - - - - - -

(async) getHeightByDate(year, month, day)

- - - - - - -
- Get the blockchain's height by date as a conservative estimate for scanning. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
year - - -int - - - - year of the height to get
month - - -int - - - - month of the height to get as a number between 1 and 12
day - - -int - - - - day of the height to get as a number between 1 and 31
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the blockchain's approximate height at the given date -
- - - - - - - - - - - - - - - -

(async) getIncomingTransfers(query) → {Array.<MoneroIncomingTransfer>}

- - - - - - -
- Get incoming transfers. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
query - - -MoneroTransferQuery -| - -object - - - - configures the query (optional) -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
address - - -string - - - - get incoming transfers to a specific address in the wallet (optional)
accountIndex - - -int - - - - get incoming transfers to a specific account index (optional)
subaddressIndex - - -int - - - - get incoming transfers to a specific subaddress index (optional)
subaddressIndices - - -Array.<int> - - - - get transfers destined for specific subaddress indices (optional)
amount - - -BigInteger - - - - amount being transferred (optional)
txQuery - - -MoneroTxQuery - - - - get transfers whose transaction meets this query (optional)
- -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- incoming transfers that meet the query -
- - - -
-
- Type -
-
- -Array.<MoneroIncomingTransfer> - - -
-
- - - - - - - - - - - - - -

(async) getIntegratedAddress(standardAddress, paymentId) → {MoneroIntegratedAddress}

- - - - - - -
- Get an integrated address based on the given standard address and payment -ID. Uses the wallet's primary address if an address is not given. -Generates a random payment ID if a payment ID is not given. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
standardAddress - - -string - - - - is the standard address to generate the integrated address from (wallet's primary address if undefined)
paymentId - - -string - - - - is the payment ID to generate an integrated address from (randomly generated if undefined)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the integrated address -
- - - -
-
- Type -
-
- -MoneroIntegratedAddress - - -
-
- - - - - - - - - - - - - -

getListeners() → {Array.<MoneroWalletListener>}

- - - - - - -
- Get the listeners registered with the wallet. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the registered listeners -
- - - -
-
- Type -
-
- -Array.<MoneroWalletListener> - - -
-
- - - - - - - - - - - - - -

(async) getMultisigInfo() → {MoneroMultisigInfo}

- - - - - - -
- Get multisig info about this wallet. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- multisig info about this wallet -
- - - -
-
- Type -
-
- -MoneroMultisigInfo - - -
-
- - - - - - - - - - - - - -

(async) getNewKeyImagesFromLastImport() → {Array.<MoneroKeyImage>}

- - - - - - -
- Get new key images from the last imported outputs. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the key images from the last imported outputs -
- - - -
-
- Type -
-
- -Array.<MoneroKeyImage> - - -
-
- - - - - - - - - - - - - -

(async) getNumBlocksToUnlock() → {Array.<int>}

- - - - - - -
- Get the number of blocks until the next and last funds unlock. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the number of blocks until the next and last funds unlock in elements 0 and 1, respectively, or undefined if no balance -
- - - -
-
- Type -
-
- -Array.<int> - - -
-
- - - - - - - - - - - - - -

(async) getOutgoingTransfers(query) → {Array.<MoneroOutgoingTransfer>}

- - - - - - -
- Get outgoing transfers. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
query - - -MoneroTransferQuery -| - -object - - - - configures the query (optional) -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
address - - -string - - - - get outgoing transfers from a specific address in the wallet (optional)
accountIndex - - -int - - - - get outgoing transfers from a specific account index (optional)
subaddressIndex - - -int - - - - get outgoing transfers from a specific subaddress index (optional)
subaddressIndices - - -Array.<int> - - - - get outgoing transfers from specific subaddress indices (optional)
amount - - -BigInteger - - - - amount being transferred (optional)
destinations - - -Array.<MoneroDestination> - - - - individual destinations of an outgoing transfer, which is local wallet data and NOT recoverable from the blockchain (optional)
hasDestinations - - -boolean - - - - get transfers that have destinations or not (optional)
txQuery - - -MoneroTxQuery - - - - get transfers whose transaction meets this query (optional)
- -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- outgoing transfers that meet the query -
- - - -
-
- Type -
-
- -Array.<MoneroOutgoingTransfer> - - -
-
- - - - - - - - - - - - - -

(async) getOutputs(query) → {Array.<MoneroOutputWallet>}

- - - - - - -
-

Get outputs created from previous transactions that belong to the wallet -(i.e. that the wallet can spend one time). Outputs are part of -transactions which are stored in blocks on the blockchain.

- -

Results can be filtered by passing a query object. Outputs must -meet every criteria defined in the query in order to be returned. All -filtering is optional and no filtering is applied when not defined.

-
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
query - - -MoneroOutputQuery -| - -object - - - - configures the query (optional) -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
accountIndex - - -int - - - - get outputs associated with a specific account index (optional)
subaddressIndex - - -int - - - - get outputs associated with a specific subaddress index (optional)
subaddressIndices - - -Array.<int> - - - - get outputs associated with specific subaddress indices (optional)
amount - - -BigInteger - - - - get outputs with a specific amount (optional)
minAmount - - -BigInteger - - - - get outputs greater than or equal to a minimum amount (optional)
maxAmount - - -BigInteger - - - - get outputs less than or equal to a maximum amount (optional)
isSpent - - -boolean - - - - get outputs that are spent or not (optional)
keyImage - - -string -| - -MoneroKeyImage - - - - get output with a key image or which matches fields defined in a MoneroKeyImage (optional)
txQuery - - -MoneroTxQuery - - - - get outputs whose transaction meets this filter (optional)
- -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the queried outputs -
- - - -
-
- Type -
-
- -Array.<MoneroOutputWallet> - - -
-
- - - - - - - - - - - - - -

(async) getPath() → {string}

- - - - - - -
- Get the wallet's path. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the path the wallet can be opened with -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) getPaymentUri(config) → {string}

- - - - - - -
- Creates a payment URI from a send configuration. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
config - - -MoneroTxConfig - - - - specifies configuration for a potential tx
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the payment uri -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) getPrimaryAddress() → {string}

- - - - - - -
- Get the wallet's primary address. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the wallet's primary address -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) getPrivateSpendKey() → {string}

- - - - - - -
- Get the wallet's private spend key. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the wallet's private spend key -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) getPrivateViewKey() → {string}

- - - - - - -
- Get the wallet's private view key. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the wallet's private view key -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) getPublicSpendKey() → {string}

- - - - - - -
- Get the wallet's public spend key. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the wallet's public spend key -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) getPublicViewKey() → {string}

- - - - - - -
- Get the wallet's public view key. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the wallet's public view key -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) getReserveProofAccount(accountIdx, amount, message) → {string}

- - - - - - -
- Generate a signature to prove an available amount in an account. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
accountIdx - - -int - - - - account to prove ownership of the amount
amount - - -BigInteger - - - - minimum amount to prove as available in the account
message - - -string - - - - message to include with the signature to further authenticate the proof (optional)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the reserve proof signature -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) getReserveProofWallet(message)

- - - - - - -
- Generate a signature to prove the entire balance of the wallet. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
message - - message included with the signature to further authenticate the proof (optional)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the reserve proof signature -
- - - - - - - - - - - - - - - -

(async) getSeed() → {string}

- - - - - - -
- Get the wallet's mnemonic phrase or seed. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the wallet's mnemonic phrase or seed. -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) getSeedLanguage() → {string}

- - - - - - -
- Get the language of the wallet's mnemonic phrase or seed. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the language of the wallet's mnemonic phrase or seed. -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) getSpendProof(txHash, message) → {string}

- - - - - - -
- Generate a signature to prove a spend. Unlike proving a transaction, it does not require the destination public address. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
txHash - - -string - - - - transaction to prove
message - - -string - - - - message to include with the signature to further authenticate the proof (optional)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the transaction signature -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) getSubaddress(accountIdx, subaddressIdx) → {MoneroSubaddress}

- - - - - - -
- Get a subaddress. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
accountIdx - - -int - - - - index of the subaddress's account
subaddressIdx - - -int - - - - index of the subaddress within the account
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the retrieved subaddress -
- - - -
-
- Type -
-
- -MoneroSubaddress - - -
-
- - - - - - - - - - - - - -

(async) getSubaddresses(accountIdx, subaddressIndices) → {Array.<MoneroSubaddress>}

- - - - - - -
- Get subaddresses in an account. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
accountIdx - - -int - - - - account to get subaddresses within
subaddressIndices - - -Array.<int> - - - - indices of subaddresses to get (optional)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the retrieved subaddresses -
- - - -
-
- Type -
-
- -Array.<MoneroSubaddress> - - -
-
- - - - - - - - - - - - - -

(async) getTransfers(query) → {Array.<MoneroTransfer>}

- - - - - - -
-

Get incoming and outgoing transfers to and from this wallet. An outgoing -transfer represents a total amount sent from one or more subaddresses -within an account to individual destination addresses, each with their -own amount. An incoming transfer represents a total amount received into -a subaddress within an account. Transfers belong to transactions which -are stored on the blockchain.

- -

Results can be filtered by passing a query object. Transfers must -meet every criteria defined in the query in order to be returned. All -criteria are optional and no filtering is applied when not defined.

-
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
query - - -MoneroTransferQuery -| - -object - - - - configures the query (optional) -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
isOutgoing - - -boolean - - - - get transfers that are outgoing or not (optional)
isIncoming - - -boolean - - - - get transfers that are incoming or not (optional)
address - - -string - - - - wallet's address that a transfer either originated from (if outgoing) or is destined for (if incoming) (optional)
accountIndex - - -int - - - - get transfers that either originated from (if outgoing) or are destined for (if incoming) a specific account index (optional)
subaddressIndex - - -int - - - - get transfers that either originated from (if outgoing) or are destined for (if incoming) a specific subaddress index (optional)
subaddressIndices - - -Array.<int> - - - - get transfers that either originated from (if outgoing) or are destined for (if incoming) specific subaddress indices (optional)
amount - - -BigInteger - - - - amount being transferred (optional)
destinations - - -Array.<MoneroDestination> - - - - individual destinations of an outgoing transfer, which is local wallet data and NOT recoverable from the blockchain (optional)
hasDestinations - - -boolean - - - - get transfers that have destinations or not (optional)
txQuery - - -MoneroTxQuery - - - - get transfers whose transaction meets this query (optional)
- -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- wallet transfers that meet the query -
- - - -
-
- Type -
-
- -Array.<MoneroTransfer> - - -
-
- - - - - - - - - - - - - -

(async) getTx(txHash) → {MoneroTxWallet}

- - - - - - -
- Get a wallet transaction by hash. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
txHash - - -string - - - - hash of a transaction to get
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the identified transaction or undefined if not found -
- - - -
-
- Type -
-
- -MoneroTxWallet - - -
-
- - - - - - - - - - - - - -

(async) getTxKey(txHash) → {string}

- - - - - - -
- Get a transaction's secret key from its hash. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
txHash - - -string - - - - transaction's hash
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- - transaction's secret key -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) getTxNote(txHash) → {string}

- - - - - - -
- Get a transaction note. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
txHash - - -string - - - - transaction to get the note of
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the tx note -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) getTxNotes(txHashes) → {Array.<string>}

- - - - - - -
- Get notes for multiple transactions. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
txHashes - - -Array.<string> - - - - hashes of the transactions to get notes for
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- notes for the transactions -
- - - -
-
- Type -
-
- -Array.<string> - - -
-
- - - - - - - - - - - - - -

(async) getTxProof(txHash, address, message) → {string}

- - - - - - -
- Get a transaction signature to prove it. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
txHash - - -string - - - - transaction to prove
address - - -string - - - - destination public address of the transaction
message - - -string - - - - message to include with the signature to further authenticate the proof (optional)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the transaction signature -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) getTxs(query) → {Array.<MoneroTxWallet>}

- - - - - - -
-

Get wallet transactions. Wallet transactions contain one or more -transfers that are either incoming or outgoing to the wallet.

- -

Results can be filtered by passing a query object. Transactions must -meet every criteria defined in the query in order to be returned. All -criteria are optional and no filtering is applied when not defined.

-
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
query - - -MoneroTxQuery -| - -Array.<string> -| - -object - - - - configures the query (optional) -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
isConfirmed - - -boolean - - - - get txs that are confirmed or not (optional)
inTxPool - - -boolean - - - - get txs that are in the tx pool or not (optional)
isRelayed - - -boolean - - - - get txs that are relayed or not (optional)
isFailed - - -boolean - - - - get txs that are failed or not (optional)
isMinerTx - - -boolean - - - - get miner txs or not (optional)
hash - - -string - - - - get a tx with the hash (optional)
hashes - - -Array.<string> - - - - get txs with the hashes (optional)
paymentId - - -string - - - - get transactions with the payment id (optional)
paymentIds - - -Array.<string> - - - - get transactions with the payment ids (optional)
hasPaymentId - - -boolean - - - - get transactions with a payment id or not (optional)
minHeight - - -int - - - - get txs with height >= the given height (optional)
maxHeight - - -int - - - - get txs with height <= the given height (optional)
isOutgoing - - -boolean - - - - get txs with an outgoing transfer or not (optional)
isIncoming - - -boolean - - - - get txs with an incoming transfer or not (optional)
transferQuery - - -MoneroTransferQuery - - - - get txs that have a transfer that meets this query (optional)
includeOutputs - - -boolean - - - - specifies that tx outputs should be returned with tx results (optional)
- -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- wallet transactions per the configuration -
- - - -
-
- Type -
-
- -Array.<MoneroTxWallet> - - -
-
- - - - - - - - - - - - - -

(async) getUnlockedBalance(accountIdx, subaddressIdx) → {BigInteger}

- - - - - - -
- Get the unlocked balance of the wallet, account, or subaddress. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
accountIdx - - -int - - - - index of the account to get the unlocked balance of (optional)
subaddressIdx - - -int - - - - index of the subaddress to get the unlocked balance of (optional)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the unlocked balance of the wallet, account, or subaddress -
- - - -
-
- Type -
-
- -BigInteger - - -
-
- - - - - - - - - - - - - -

(async) getVersion() → {MoneroVersion}

- - - - - - -
- Gets the version of the wallet. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the version of the wallet -
- - - -
-
- Type -
-
- -MoneroVersion - - -
-
- - - - - - - - - - - - - -

(async) importKeyImages(keyImages) → {MoneroKeyImageImportResult}

- - - - - - -
- Import signed key images and verify their spent status. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
keyImages - - -Array.<MoneroKeyImage> - - - - images to import and verify (requires hex and signature)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- results of the import -
- - - -
-
- Type -
-
- -MoneroKeyImageImportResult - - -
-
- - - - - - - - - - - - - -

(async) importMultisigHex(multisigHexes) → {int}

- - - - - - -
- Import multisig info as hex from other participants. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
multisigHexes - - -Array.<string> - - - - multisig hex from each participant
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the number of outputs signed with the given multisig hex -
- - - -
-
- Type -
-
- -int - - -
-
- - - - - - - - - - - - - -

(async) importOutputs(outputsHex) → {int}

- - - - - - -
- Import outputs in hex format. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
outputsHex - - -string - - - - outputs in hex format
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the number of outputs imported -
- - - -
-
- Type -
-
- -int - - -
-
- - - - - - - - - - - - - -

(async) isClosed() → {boolean}

- - - - - - -
- Indicates if this wallet is closed or not. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if the wallet is closed, false otherwise -
- - - -
-
- Type -
-
- -boolean - - -
-
- - - - - - - - - - - - - -

(async) isConnectedToDaemon() → {boolean}

- - - - - - -
- Indicates if the wallet is connected to daemon. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if the wallet is connected to a daemon, false otherwise -
- - - -
-
- Type -
-
- -boolean - - -
-
- - - - - - - - - - - - - -

(async) isMultisig() → {boolean}

- - - - - - -
- Indicates if this wallet is a multisig wallet. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if this is a multisig wallet, false otherwise -
- - - -
-
- Type -
-
- -boolean - - -
-
- - - - - - - - - - - - - -

(async) isMultisigImportNeeded() → {boolean}

- - - - - - -
- Indicates if importing multisig data is needed for returning a correct balance. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if importing multisig data is needed for returning a correct balance, false otherwise -
- - - -
-
- Type -
-
- -boolean - - -
-
- - - - - - - - - - - - - -

(async) isOutputFrozen(keyImage) → {boolean}

- - - - - - -
- Check if an output is frozen. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
keyImage - - -string - - - - key image of the output to check if frozen
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if the output is frozen, false otherwise -
- - - -
-
- Type -
-
- -boolean - - -
-
- - - - - - - - - - - - - -

(async) isViewOnly() → {bool}

- - - - - - -
- Indicates if the wallet is view-only, meaning it does not have the private -spend key and can therefore only observe incoming outputs. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if the wallet is view-only, false otherwise -
- - - -
-
- Type -
-
- -bool - - -
-
- - - - - - - - - - - - - -

(async) makeMultisig(multisigHexes, threshold, password) → {string}

- - - - - - -
- Make this wallet multisig by importing multisig hex from participants. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
multisigHexes - - -Array.<String> - - - - multisig hex from each participant
threshold - - -int - - - - number of signatures needed to sign transfers
password - - -string - - - - wallet password
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- this wallet's multisig hex to share with participants -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) parsePaymentUri(uri) → {MoneroTxConfig}

- - - - - - -
- Parses a payment URI to a tx config. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
uri - - -string - - - - payment uri to parse
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the send configuration parsed from the uri -
- - - -
-
- Type -
-
- -MoneroTxConfig - - -
-
- - - - - - - - - - - - - -

(async) prepareMultisig() → {string}

- - - - - - -
- Get multisig info as hex to share with participants to begin creating a -multisig wallet. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- this wallet's multisig hex to share with participants -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) relayTx(txOrMetadata) → {string}

- - - - - - -
- Relay a previously created transaction. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
txOrMetadata - - -MoneroTxWallet -| - -string - - - - transaction or its metadata to relay
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the hash of the relayed tx -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) relayTxs(txsOrMetadatas) → {Array.<string>}

- - - - - - -
- Relay previously created transactions. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
txsOrMetadatas - - -Array.<MoneroTxWallet> -| - -Array.<string> - - - - transactions or their metadata to relay
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the hashes of the relayed txs -
- - - -
-
- Type -
-
- -Array.<string> - - -
-
- - - - - - - - - - - - - -

(async) removeListener(listener)

- - - - - - -
- Unregister a listener to receive wallet notifications. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
listener - - -MoneroWalletListener - - - - listener to unregister
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) rescanBlockchain()

- - - - - - -
-

Rescan the blockchain from scratch, losing any information which cannot be recovered from -the blockchain itself.

- -

WARNING: This method discards local wallet data like destination addresses, tx secret keys, -tx notes, etc.

-
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) rescanSpent()

- - - - - - -
-

Rescan the blockchain for spent outputs.

- -

Note: this can only be called with a trusted daemon.

- -

Example use case: peer multisig hex is import when connected to an untrusted daemon, -so the wallet will not rescan spent outputs. Then the wallet connects to a trusted -daemon. This method should be manually invoked to rescan outputs.

-
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

save()

- - - - - - -
- Save the wallet at its current path. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) scanTxs(txHashes)

- - - - - - -
- Scan transactions by their hash/id. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
txHashes - - -Array.<string> - - - - tx hashes to scan
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) setAccountLabel(accountIdx, label)

- - - - - - -
- Set an account label. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
accountIdx - - -number - - - - index of the account to set the label for
label - - -string - - - - the label to set
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) setAccountTagLabel(tag, label)

- - - - - - -
- Sets a human-readable description for a tag. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
tag - - -string - - - - tag to set a description for
label - - -string - - - - label to set for the tag
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) setAttribute(key, val)

- - - - - - -
- Set an arbitrary attribute. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
key - - -string - - - - attribute key
val - - -string - - - - attribute value
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) setConnectionManager(connectionManager)

- - - - - - -
- Set the wallet's daemon connection manager. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
connectionManager - - -MoneroConnectionManager - - - - manages connections to monerod
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) setDaemonConnection(uriOrConnection, username, password)

- - - - - - -
- Set the wallet's daemon connection. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
uriOrConnection - - -string -| - -MoneroRpcConnection - - - - daemon's URI or connection (defaults to offline)
username - - -string - - - - username to authenticate with the daemon (optional)
password - - -string - - - - password to authenticate with the daemon (optional)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) setSubaddressLabel(accountIdx, subaddressIdx, label)

- - - - - - -
- Set a subaddress label. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
accountIdx - - -number - - - - index of the account to set the label for
subaddressIdx - - -number - - - - index of the subaddress to set the label for
label - - -string - - - - the label to set
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) setTxNote(txHash, note)

- - - - - - -
- Set a note for a specific transaction. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
txHash - - -string - - - - hash of the transaction to set a note for
note - - -string - - - - the transaction note
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) setTxNotes(txHashes, notes)

- - - - - - -
- Set notes for multiple transactions. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
txHashes - - -Array.<string> - - - - transactions to set notes for
notes - - -Array.<string> - - - - notes to set for the transactions
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) signMessage(message, signatureType, accountIdx, subaddressIdx) → {string}

- - - - - - -
- Sign a message. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
message - - -string - - - - the message to sign
signatureType - - -MoneroMessageSignatureType - - - - sign with spend key or view key (default spend key)
accountIdx - - -int - - - - the account index of the message signature (default 0)
subaddressIdx - - -int - - - - the subaddress index of the message signature (default 0)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the signature -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) signMultisigTxHex(multisigTxHex) → {MoneroMultisigSignResult}

- - - - - - -
- Sign multisig transactions from a multisig wallet. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
multisigTxHex - - -string - - - - unsigned multisig transactions as hex
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the result of signing the multisig transactions -
- - - -
-
- Type -
-
- -MoneroMultisigSignResult - - -
-
- - - - - - - - - - - - - -

(async) signTxs(unsignedTxHex) → {string}

- - - - - - -
- Sign unsigned transactions from a view-only wallet. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
unsignedTxHex - - -string - - - - unsigned transaction hex from when the transactions were created
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the signed transaction hex -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) startMining(numThreads, backgroundMining, ignoreBattery)

- - - - - - -
- Start mining. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
numThreads - - -int - - - - number of threads created for mining (optional)
backgroundMining - - -boolean - - - - specifies if mining should occur in the background (optional)
ignoreBattery - - -boolean - - - - specifies if the battery should be ignored for mining (optional)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) startSyncing(syncPeriodInMs)

- - - - - - -
- Start background synchronizing with a maximum period between syncs. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
syncPeriodInMs - - -int - - - - maximum period between syncs in milliseconds (default is wallet-specific)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) stopMining()

- - - - - - -
- Stop mining. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) stopSyncing()

- - - - - - -
- Stop synchronizing the wallet with the daemon. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) submitMultisigTxHex(signedMultisigTxHex) → {Array.<string>}

- - - - - - -
- Submit signed multisig transactions from a multisig wallet. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
signedMultisigTxHex - - -string - - - - signed multisig hex returned from signMultisigTxHex()
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the resulting transaction hashes -
- - - -
-
- Type -
-
- -Array.<string> - - -
-
- - - - - - - - - - - - - -

(async) submitTxs(signedTxHex) → {Array.<string>}

- - - - - - -
- Submit signed transactions from a view-only wallet. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
signedTxHex - - -string - - - - signed transaction hex from signTxs()
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the resulting transaction hashes -
- - - -
-
- Type -
-
- -Array.<string> - - -
-
- - - - - - - - - - - - - -

(async) sweepDust(relay) → {Array.<MoneroTxWallet>}

- - - - - - -
-

Sweep all unmixable dust outputs back to the wallet to make them easier to spend and mix.

- -

NOTE: Dust only exists pre RCT, so this method will throw "no dust to sweep" on new wallets.

-
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
relay - - -boolean - - - - specifies if the resulting transaction should be relayed (default false)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the created transactions -
- - - -
-
- Type -
-
- -Array.<MoneroTxWallet> - - -
-
- - - - - - - - - - - - - -

(async) sweepOutput(config) → {MoneroTxWallet}

- - - - - - -
- Sweep an output by key image. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
config - - -MoneroTxConfig - - - - configures the transaction to create (required) -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
address - - -string - - - - single destination address (required)
keyImage - - -string - - - - key image to sweep (required)
relay - - -boolean - - - - relay the transaction to peers to commit to the blockchain (default false)
unlockTime - - -BigInteger -| - -string - - - - minimum height or timestamp for the transaction to unlock (default 0)
priority - - -MoneroTxPriority - - - - transaction priority (default MoneroTxPriority.NORMAL)
- -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the created transaction -
- - - -
-
- Type -
-
- -MoneroTxWallet - - -
-
- - - - - - - - - - - - - -

(async) sweepUnlocked(config) → {Array.<MoneroTxWallet>}

- - - - - - -
- Sweep all unlocked funds according to the given configuration. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
config - - -MoneroTxConfig -| - -object - - - - configures the transactions to create (required) -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
address - - -string - - - - single destination address (required)
accountIndex - - -int - - - - source account index to sweep from (optional, defaults to all accounts)
subaddressIndex - - -int - - - - source subaddress index to sweep from (optional, defaults to all subaddresses)
subaddressIndices - - -Array.<int> - - - - source subaddress indices to sweep from (optional)
relay - - -boolean - - - - relay the transactions to peers to commit to the blockchain (default false)
priority - - -MoneroTxPriority - - - - transaction priority (default MoneroTxPriority.NORMAL)
unlockTime - - -BigInteger -| - -string - - - - minimum height or timestamp for the transactions to unlock (default 0)
sweepEachSubaddress - - -boolean - - - - sweep each subaddress individually if true (default false)
- -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the created transactions -
- - - -
-
- Type -
-
- -Array.<MoneroTxWallet> - - -
-
- - - - - - - - - - - - - -

(async) sync(listenerOrStartHeight, startHeight)

- - - - - - -
- Synchronize the wallet with the daemon as a one-time synchronous process. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
listenerOrStartHeight - - -MoneroWalletListener -| - -number - - - - listener xor start height (defaults to no sync listener, the last synced block)
startHeight - - -number - - - - startHeight if not given in first arg (defaults to last synced block)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) tagAccounts(tag, accountIndices)

- - - - - - -
- Tag accounts. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
tag - - -string - - - - tag to apply to the specified accounts
accountIndices - - -Array.<int> - - - - indices of the accounts to tag
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) thawOutput(keyImage)

- - - - - - -
- Thaw a frozen output. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
keyImage - - -string - - - - key image of the output to thaw
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) untagAccounts(accountIndices)

- - - - - - -
- Untag accounts. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
accountIndices - - -Array.<int> - - - - indices of the accounts to untag
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) verifyMessage(message, address, signature) → {MoneroMessageSignatureResult}

- - - - - - -
- Verify a signature on a message. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
message - - -string - - - - signed message
address - - -string - - - - signing address
signature - - -string - - - - signature
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if the signature is good, false otherwise -
- - - -
-
- Type -
-
- -MoneroMessageSignatureResult - - -
-
- - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroWalletConfig.html b/docs/MoneroWalletConfig.html deleted file mode 100644 index b916aaf9a..000000000 --- a/docs/MoneroWalletConfig.html +++ /dev/null @@ -1,5060 +0,0 @@ - - - - - JSDoc: Class: MoneroWalletConfig - - - - - - - - - - -
- -

Class: MoneroWalletConfig

- - - - - - -
- -
- -

MoneroWalletConfig(config)

- -
Configuration to create a Monero wallet.
- - -
- -
-
- - - - -

Constructor

- - - -

new MoneroWalletConfig(config)

- - - - - - -
- Construct a configuration to open or create a wallet. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
config - - -object -| - -MoneroWalletConfig - - - - MoneroWalletConfig or equivalent config object -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
path - - -string - - - - path of the wallet to open or create
password - - -string - - - - password of the wallet to open
networkType - - -string -| - -number - - - - network type of the wallet to open (one of "mainnet", "testnet", "stagenet" or MoneroNetworkType.MAINNET|TESTNET|STAGENET)
seed - - -string - - - - seed of the wallet to create (optional, random wallet created if neither seed nor keys given)
seedOffset - - -string - - - - the offset used to derive a new seed from the given seed to recover a secret wallet from the seed phrase
isMultisig - - -boolean - - - - restore multisig wallet from seed
primaryAddress - - -string - - - - primary address of the wallet to create (only provide if restoring from keys)
privateViewKey - - -string - - - - private view key of the wallet to create (optional)
privateSpendKey - - -string - - - - private spend key of the wallet to create (optional)
restoreHeight - - -number - - - - block height to start scanning from (defaults to 0 unless generating random wallet)
language - - -string - - - - language of the wallet's seed phrase (defaults to "English" or auto-detected)
accountLookahead - - -number - - - - number of accounts to scan (optional)
subaddressLookahead - - -number - - - - number of subaddresses to scan per account (optional)
server - - -MoneroRpcConnection -| - -object - - - - MoneroRpcConnection or equivalent JS object configuring the server connection (optional)
serverUri - - -string - - - - uri of the wallet's server (optional)
serverUsername - - -string - - - - username of the wallet's server (optional)
serverPassword - - -string - - - - password of the wallet's server (optional)
connectionManager - - -MoneroConnectionManager - - - - manage connections to monerod (optional)
rejectUnauthorized - - -boolean - - - - reject self-signed server certificates if true (default true)
keysData - - -Uint8Array - - - - wallet keys data to open (optional)
cacheData - - -Uint8Array - - - - wallet cache data to open (optional)
proxyToWorker - - -boolean - - - - proxies wallet operations to a worker in order to not block the main thread (default true)
fs - - -fs - - - - Node.js compatible file system to use (defaults to disk or in-memory FS if browser)
saveCurrent - - -boolean - - - - specifies if the current RPC wallet should be saved before being closed
accountLookahead - - -number - - - - number of accounts to scan (optional)
subaddressLookahead - - -number - - - - number of subaddresses to scan per account (optional)
- -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

copy()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getAccountLookahead()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getCacheData()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getConnectionManager()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getFs()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getKeysData()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getLanguage()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getNetworkType()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getPassword()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getPath()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getPrimaryAddress()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getPrivateSpendKey()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getPrivateViewKey()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getProxyToWorker()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getRejectUnauthorized()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getRestoreHeight()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getSaveCurrent()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getSeed()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getSeedOffset()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getServer()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getServerPassword()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getServerUri()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getServerUsername()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getSubaddressLookahead()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

isMultisig()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setAccountLookahead()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setCacheData()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setConnectionManager()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setFs()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setIsMultisig()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setKeysData()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setLanguage()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setNetworkType()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setPassword()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setPath()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setPrimaryAddress()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setPrivateSpendKey()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setPrivateViewKey()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setProxyToWorker()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setRejectUnauthorized()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setRestoreHeight()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setSaveCurrent()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setSeed()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setSeedOffset()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setServer()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setServerPassword()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setServerUri()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setServerUsername()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setSubaddressLookahead()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

toJson()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroWalletFull.html b/docs/MoneroWalletFull.html deleted file mode 100644 index 0212758f0..000000000 --- a/docs/MoneroWalletFull.html +++ /dev/null @@ -1,21837 +0,0 @@ - - - - - JSDoc: Class: MoneroWalletFull - - - - - - - - - - -
- -

Class: MoneroWalletFull

- - - - - - -
- -
- -

MoneroWalletFull

- -
Implements a Monero wallet using fully client-side WebAssembly bindings to monero-project's wallet2 in C++.
- - -
- -
-
- - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - -

Extends

- - - - - - - - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

(async) addAddressBookEntry(address, description) → {int}

- - - - - - -
- Add an address book entry. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
address - - -string - - - - entry address
description - - -string - - - - entry description (optional)
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the index of the added entry -
- - - -
-
- Type -
-
- -int - - -
-
- - - - - - - - - - - - - -

(async) addListener(listener)

- - - - - - -
- Register a listener to receive wallet notifications. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
listener - - -MoneroWalletListener - - - - listener to receive wallet notifications
- - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) changePassword(oldPassword, newPassword)

- - - - - - -
- Change the wallet password. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
oldPassword - - -string - - - - the wallet's old password
newPassword - - -string - - - - the wallet's new password
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) checkReserveProof(address, message, signature) → {MoneroCheckReserve}

- - - - - - -
- Proves a wallet has a disposable reserve using a signature. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
address - - -string - - - - public wallet address
message - - -string - - - - message included with the signature to further authenticate the proof (optional)
signature - - -string - - - - reserve proof signature to check
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the result of checking the signature proof -
- - - -
-
- Type -
-
- -MoneroCheckReserve - - -
-
- - - - - - - - - - - - - -

(async) checkSpendProof(txHash, message, signature) → {boolean}

- - - - - - -
- Prove a spend using a signature. Unlike proving a transaction, it does not require the destination public address. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
txHash - - -string - - - - transaction to prove
message - - -string - - - - message included with the signature to further authenticate the proof (optional)
signature - - -string - - - - transaction signature to confirm
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if the signature is good, false otherwise -
- - - -
-
- Type -
-
- -boolean - - -
-
- - - - - - - - - - - - - -

(async) checkTxKey(txHash, txKey, address) → {MoneroCheckTx}

- - - - - - -
- Check a transaction in the blockchain with its secret key. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
txHash - - -string - - - - transaction to check
txKey - - -string - - - - transaction's secret key
address - - -string - - - - destination public address of the transaction
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the result of the check -
- - - -
-
- Type -
-
- -MoneroCheckTx - - -
-
- - - - - - - - - - - - - -

(async) checkTxProof(txHash, address, message, signature) → {MoneroCheckTx}

- - - - - - -
- Prove a transaction by checking its signature. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
txHash - - -string - - - - transaction to prove
address - - -string - - - - destination public address of the transaction
message - - -string - - - - message included with the signature to further authenticate the proof (optional)
signature - - -string - - - - transaction signature to confirm
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the result of the check -
- - - -
-
- Type -
-
- -MoneroCheckTx - - -
-
- - - - - - - - - - - - - -

(async) close(save)

- - - - - - -
- Optionally save then close the wallet. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
save - - -boolean - - - - specifies if the wallet should be saved before being closed (default false)
- - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) createAccount(label) → {MoneroAccount}

- - - - - - -
- Create a new account with a label for the first subaddress. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
label - - -string - - - - label for account's first subaddress (optional)
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the created account -
- - - -
-
- Type -
-
- -MoneroAccount - - -
-
- - - - - - - - - - - - - -

(async) createSubaddress(accountIdx, label) → {MoneroSubaddress}

- - - - - - -
- Create a subaddress within an account. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
accountIdx - - -int - - - - index of the account to create the subaddress within
label - - -string - - - - the label for the subaddress (optional)
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the created subaddress -
- - - -
-
- Type -
-
- -MoneroSubaddress - - -
-
- - - - - - - - - - - - - -

(async) createTx(config) → {MoneroTxWallet}

- - - - - - -
- Create a transaction to transfer funds from this wallet. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
config - - -MoneroTxConfig -| - -object - - - - configures the transaction to create (required) -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
address - - -string - - - - single destination address (required unless `destinations` provided)
amount - - -BigInteger -| - -string - - - - single destination amount (required unless `destinations` provided)
accountIndex - - -int - - - - source account index to transfer funds from (required)
subaddressIndex - - -int - - - - source subaddress index to transfer funds from (optional)
subaddressIndices - - -Array.<int> - - - - source subaddress indices to transfer funds from (optional)
relay - - -boolean - - - - relay the transaction to peers to commit to the blockchain (default false)
priority - - -MoneroTxPriority - - - - transaction priority (default MoneroTxPriority.NORMAL)
destinations - - -Array.<MoneroDestination> - - - - addresses and amounts in a multi-destination tx (required unless `address` and `amount` provided)
subtractFeeFrom - - -Array.<int> - - - - list of destination indices to split the transaction fee (optional)
paymentId - - -string - - - - transaction payment ID (optional)
unlockTime - - -BigInteger -| - -string - - - - minimum height or timestamp for the transaction to unlock (default 0)
- -
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the created transaction -
- - - -
-
- Type -
-
- -MoneroTxWallet - - -
-
- - - - - - - - - - - - - -

(async) createTxs(config) → {Array.<MoneroTxWallet>}

- - - - - - -
- Create one or more transactions to transfer funds from this wallet. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
config - - -MoneroTxConfig -| - -object - - - - configures the transactions to create (required) -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
address - - -string - - - - single destination address (required unless `destinations` provided)
amount - - -BigInteger -| - -string - - - - single destination amount (required unless `destinations` provided)
accountIndex - - -int - - - - source account index to transfer funds from (required)
subaddressIndex - - -int - - - - source subaddress index to transfer funds from (optional)
subaddressIndices - - -Array.<int> - - - - source subaddress indices to transfer funds from (optional)
relay - - -boolean - - - - relay the transactions to peers to commit to the blockchain (default false)
priority - - -MoneroTxPriority - - - - transaction priority (default MoneroTxPriority.NORMAL)
destinations - - -Array.<MoneroDestination> - - - - addresses and amounts in a multi-destination tx (required unless `address` and `amount` provided)
paymentId - - -string - - - - transaction payment ID (optional)
unlockTime - - -BigInteger -| - -string - - - - minimum height or timestamp for the transactions to unlock (default 0)
canSplit - - -boolean - - - - allow funds to be transferred using multiple transactions (default true)
- -
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the created transactions -
- - - -
-
- Type -
-
- -Array.<MoneroTxWallet> - - -
-
- - - - - - - - - - - - - -

(async) decodeIntegratedAddress(integratedAddress) → {MoneroIntegratedAddress}

- - - - - - -
- Decode an integrated address to get its standard address and payment id. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
integratedAddress - - -string - - - - integrated address to decode
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the decoded integrated address including standard address and payment id -
- - - -
-
- Type -
-
- -MoneroIntegratedAddress - - -
-
- - - - - - - - - - - - - -

(async) deleteAddressBookEntry(entryIdx)

- - - - - - -
- Delete an address book entry. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
entryIdx - - -int - - - - index of the entry to delete
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) describeTxSet(txSet) → {MoneroTxSet}

- - - - - - -
- Describe a tx set containing unsigned or multisig tx hex to a new tx set containing structured transactions. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
txSet - - -MoneroTxSet - - - - a tx set containing unsigned or multisig tx hex
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the tx set containing structured transactions -
- - - -
-
- Type -
-
- -MoneroTxSet - - -
-
- - - - - - - - - - - - - -

(async) editAddressBookEntry(index, setAddress, address, setDescription, description)

- - - - - - -
- Edit an address book entry. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
index - - -number - - - - index of the address book entry to edit
setAddress - - -boolean - - - - specifies if the address should be updated
address - - -string - - - - updated address
setDescription - - -boolean - - - - specifies if the description should be updated
description - - -string - - - - updated description
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) exchangeMultisigKeys(multisigHexes, password) → {MoneroMultisigInitResult}

- - - - - - -
- Exchange multisig hex with participants in a M/N multisig wallet. - -This process must be repeated with participants exactly N-M times. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
multisigHexes - - -Array.<string> - - - - are multisig hex from each participant
password - - -string - - - - wallet's password // TODO monero-project: redundant? wallet is created with password
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the result which has the multisig's address xor this wallet's multisig hex to share with participants iff not done -
- - - -
-
- Type -
-
- -MoneroMultisigInitResult - - -
-
- - - - - - - - - - - - - -

(async) exportKeyImages(all) → {Array.<MoneroKeyImage>}

- - - - - - -
- Export signed key images. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
all - - -boolean - - - - export all key images if true, else export the key images since the last export
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the wallet's signed key images -
- - - -
-
- Type -
-
- -Array.<MoneroKeyImage> - - -
-
- - - - - - - - - - - - - -

(async) exportMultisigHex() → {string}

- - - - - - -
- Export this wallet's multisig info as hex for other participants. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- this wallet's multisig info as hex for other participants -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) exportOutputs(all) → {string}

- - - - - - -
- Export outputs in hex format. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
all - - -boolean - - - - export all outputs if true, else export the outputs since the last export
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- outputs in hex format -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) freezeOutput(keyImage)

- - - - - - -
- Freeze an output. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
keyImage - - -string - - - - key image of the output to freeze
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) getAccount(accountIdx, includeSubaddresses) → {MoneroAccount}

- - - - - - -
- Get an account. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
accountIdx - - -int - - - - index of the account to get
includeSubaddresses - - -boolean - - - - include subaddresses if true
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the retrieved account -
- - - -
-
- Type -
-
- -MoneroAccount - - -
-
- - - - - - - - - - - - - -

(async) getAccountTags() → {Array.<MoneroAccountTag>}

- - - - - - -
- Return all account tags. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the wallet's account tags -
- - - -
-
- Type -
-
- -Array.<MoneroAccountTag> - - -
-
- - - - - - - - - - - - - -

(async) getAccounts(includeSubaddresses, tag) → {Array.<MoneroAccount>}

- - - - - - -
- Get accounts with a given tag. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
includeSubaddresses - - -boolean - - - - include subaddresses if true
tag - - -string - - - - tag for filtering accounts, all accounts if undefined
- - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- all accounts with the given tag -
- - - -
-
- Type -
-
- -Array.<MoneroAccount> - - -
-
- - - - - - - - - - - - - -

(async) getAddress(accountIdx, subaddressIdx) → {string}

- - - - - - -
- Get the address of a specific subaddress. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
accountIdx - - -int - - - - the account index of the address's subaddress
subaddressIdx - - -int - - - - the subaddress index within the account
- - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the receive address of the specified subaddress -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) getAddressBookEntries(entryIndices) → {Array.<MoneroAddressBookEntry>}

- - - - - - -
- Get address book entries. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
entryIndices - - -Array.<int> - - - - indices of the entries to get
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the address book entries -
- - - -
-
- Type -
-
- -Array.<MoneroAddressBookEntry> - - -
-
- - - - - - - - - - - - - -

(async) getAddressIndex(address) → {MoneroSubaddress}

- - - - - - -
- Get the account and subaddress index of the given address. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
address - - -string - - - - address to get the account and subaddress index from
- - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the account and subaddress indices -
- - - -
-
- Type -
-
- -MoneroSubaddress - - -
-
- - - - - - - - - - - - - -

(async) getAttribute(key) → {string}

- - - - - - -
- Get an attribute. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
key - - -string - - - - attribute to get the value of
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the attribute's value -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) getBalance(accountIdx, subaddressIdx) → {BigInteger}

- - - - - - -
- Get the balance of the wallet, account, or subaddress. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
accountIdx - - -int - - - - index of the account to get the balance of (default all accounts)
subaddressIdx - - -int - - - - index of the subaddress to get the balance of (default all subaddresses)
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the balance of the wallet, account, or subaddress -
- - - -
-
- Type -
-
- -BigInteger - - -
-
- - - - - - - - - - - - - -

(async) getDaemonConnection() → {MoneroRpcConnection}

- - - - - - -
- Get the wallet's daemon connection. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the wallet's daemon connection -
- - - -
-
- Type -
-
- -MoneroRpcConnection - - -
-
- - - - - - - - - - - - - -

(async) getDaemonHeight() → {int}

- - - - - - -
- Get the blockchain's height. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the blockchain's height -
- - - -
-
- Type -
-
- -int - - -
-
- - - - - - - - - - - - - -

(async) getDaemonMaxPeerHeight() → {number}

- - - - - - -
- Get the maximum height of the peers the wallet's daemon is connected to. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the maximum height of the peers the wallet's daemon is connected to -
- - - -
-
- Type -
-
- -number - - -
-
- - - - - - - - - - - - - -

(async) getData() → {Array.<DataView>}

- - - - - - -
- Get the wallet's keys and cache data. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- is the keys and cache data, respectively -
- - - -
-
- Type -
-
- -Array.<DataView> - - -
-
- - - - - - - - - - - - - -

(async) getHeight() → {int}

- - - - - - -
- Get the block height that the wallet is synced to. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the block height that the wallet is synced to -
- - - -
-
- Type -
-
- -int - - -
-
- - - - - - - - - - - - - -

(async) getHeightByDate(year, month, day)

- - - - - - -
- Get the blockchain's height by date as a conservative estimate for scanning. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
year - - -int - - - - year of the height to get
month - - -int - - - - month of the height to get as a number between 1 and 12
day - - -int - - - - day of the height to get as a number between 1 and 31
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the blockchain's approximate height at the given date -
- - - - - - - - - - - - - - - -

(async) getIncomingTransfers(query) → {Array.<MoneroIncomingTransfer>}

- - - - - - -
- Get incoming transfers. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
query - - -MoneroTransferQuery -| - -object - - - - configures the query (optional) -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
address - - -string - - - - get incoming transfers to a specific address in the wallet (optional)
accountIndex - - -int - - - - get incoming transfers to a specific account index (optional)
subaddressIndex - - -int - - - - get incoming transfers to a specific subaddress index (optional)
subaddressIndices - - -Array.<int> - - - - get transfers destined for specific subaddress indices (optional)
amount - - -BigInteger - - - - amount being transferred (optional)
txQuery - - -MoneroTxQuery - - - - get transfers whose transaction meets this query (optional)
- -
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- incoming transfers that meet the query -
- - - -
-
- Type -
-
- -Array.<MoneroIncomingTransfer> - - -
-
- - - - - - - - - - - - - -

(async) getIntegratedAddress(standardAddress, paymentId) → {MoneroIntegratedAddress}

- - - - - - -
- Get an integrated address based on the given standard address and payment -ID. Uses the wallet's primary address if an address is not given. -Generates a random payment ID if a payment ID is not given. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
standardAddress - - -string - - - - is the standard address to generate the integrated address from (wallet's primary address if undefined)
paymentId - - -string - - - - is the payment ID to generate an integrated address from (randomly generated if undefined)
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the integrated address -
- - - -
-
- Type -
-
- -MoneroIntegratedAddress - - -
-
- - - - - - - - - - - - - -

getListeners() → {Array.<MoneroWalletListener>}

- - - - - - -
- Get the listeners registered with the wallet. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the registered listeners -
- - - -
-
- Type -
-
- -Array.<MoneroWalletListener> - - -
-
- - - - - - - - - - - - - -

(async) getMultisigInfo() → {MoneroMultisigInfo}

- - - - - - -
- Get multisig info about this wallet. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- multisig info about this wallet -
- - - -
-
- Type -
-
- -MoneroMultisigInfo - - -
-
- - - - - - - - - - - - - -

(async) getNetworkType() → {MoneroNetworkType}

- - - - - - -
- Get the wallet's network type (mainnet, testnet, or stagenet). -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the wallet's network type -
- - - -
-
- Type -
-
- -MoneroNetworkType - - -
-
- - - - - - - - - - - - - -

(async) getNewKeyImagesFromLastImport() → {Array.<MoneroKeyImage>}

- - - - - - -
- Get new key images from the last imported outputs. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the key images from the last imported outputs -
- - - -
-
- Type -
-
- -Array.<MoneroKeyImage> - - -
-
- - - - - - - - - - - - - -

(async) getNumBlocksToUnlock() → {Array.<int>}

- - - - - - -
- Get the number of blocks until the next and last funds unlock. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the number of blocks until the next and last funds unlock in elements 0 and 1, respectively, or undefined if no balance -
- - - -
-
- Type -
-
- -Array.<int> - - -
-
- - - - - - - - - - - - - -

(async) getOutgoingTransfers(query) → {Array.<MoneroOutgoingTransfer>}

- - - - - - -
- Get outgoing transfers. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
query - - -MoneroTransferQuery -| - -object - - - - configures the query (optional) -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
address - - -string - - - - get outgoing transfers from a specific address in the wallet (optional)
accountIndex - - -int - - - - get outgoing transfers from a specific account index (optional)
subaddressIndex - - -int - - - - get outgoing transfers from a specific subaddress index (optional)
subaddressIndices - - -Array.<int> - - - - get outgoing transfers from specific subaddress indices (optional)
amount - - -BigInteger - - - - amount being transferred (optional)
destinations - - -Array.<MoneroDestination> - - - - individual destinations of an outgoing transfer, which is local wallet data and NOT recoverable from the blockchain (optional)
hasDestinations - - -boolean - - - - get transfers that have destinations or not (optional)
txQuery - - -MoneroTxQuery - - - - get transfers whose transaction meets this query (optional)
- -
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- outgoing transfers that meet the query -
- - - -
-
- Type -
-
- -Array.<MoneroOutgoingTransfer> - - -
-
- - - - - - - - - - - - - -

(async) getOutputs(query) → {Array.<MoneroOutputWallet>}

- - - - - - -
-

Get outputs created from previous transactions that belong to the wallet -(i.e. that the wallet can spend one time). Outputs are part of -transactions which are stored in blocks on the blockchain.

- -

Results can be filtered by passing a query object. Outputs must -meet every criteria defined in the query in order to be returned. All -filtering is optional and no filtering is applied when not defined.

-
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
query - - -MoneroOutputQuery -| - -object - - - - configures the query (optional) -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
accountIndex - - -int - - - - get outputs associated with a specific account index (optional)
subaddressIndex - - -int - - - - get outputs associated with a specific subaddress index (optional)
subaddressIndices - - -Array.<int> - - - - get outputs associated with specific subaddress indices (optional)
amount - - -BigInteger - - - - get outputs with a specific amount (optional)
minAmount - - -BigInteger - - - - get outputs greater than or equal to a minimum amount (optional)
maxAmount - - -BigInteger - - - - get outputs less than or equal to a maximum amount (optional)
isSpent - - -boolean - - - - get outputs that are spent or not (optional)
keyImage - - -string -| - -MoneroKeyImage - - - - get output with a key image or which matches fields defined in a MoneroKeyImage (optional)
txQuery - - -MoneroTxQuery - - - - get outputs whose transaction meets this filter (optional)
- -
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the queried outputs -
- - - -
-
- Type -
-
- -Array.<MoneroOutputWallet> - - -
-
- - - - - - - - - - - - - -

(async) getPath() → {string}

- - - - - - -
- Get the wallet's path. -
- - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
  • - MoneroWalletKeys#getPath -
- - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the path the wallet can be opened with -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) getPaymentUri(config) → {string}

- - - - - - -
- Creates a payment URI from a send configuration. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
config - - -MoneroTxConfig - - - - specifies configuration for a potential tx
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the payment uri -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) getPrimaryAddress() → {string}

- - - - - - -
- Get the wallet's primary address. -
- - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the wallet's primary address -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) getPrivateSpendKey() → {string}

- - - - - - -
- Get the wallet's private spend key. -
- - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the wallet's private spend key -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) getPrivateViewKey() → {string}

- - - - - - -
- Get the wallet's private view key. -
- - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the wallet's private view key -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) getPublicSpendKey() → {string}

- - - - - - -
- Get the wallet's public spend key. -
- - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the wallet's public spend key -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) getPublicViewKey() → {string}

- - - - - - -
- Get the wallet's public view key. -
- - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the wallet's public view key -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) getReserveProofAccount(accountIdx, amount, message) → {string}

- - - - - - -
- Generate a signature to prove an available amount in an account. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
accountIdx - - -int - - - - account to prove ownership of the amount
amount - - -BigInteger - - - - minimum amount to prove as available in the account
message - - -string - - - - message to include with the signature to further authenticate the proof (optional)
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the reserve proof signature -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) getReserveProofWallet(message)

- - - - - - -
- Generate a signature to prove the entire balance of the wallet. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
message - - message included with the signature to further authenticate the proof (optional)
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the reserve proof signature -
- - - - - - - - - - - - - - - -

(async) getRestoreHeight() → {number}

- - - - - - -
- Get the height of the first block that the wallet scans. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the height of the first block that the wallet scans -
- - - -
-
- Type -
-
- -number - - -
-
- - - - - - - - - - - - - -

(async) getSeed() → {string}

- - - - - - -
- Get the wallet's mnemonic phrase or seed. -
- - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the wallet's mnemonic phrase or seed. -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) getSeedLanguage() → {string}

- - - - - - -
- Get the language of the wallet's mnemonic phrase or seed. -
- - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the language of the wallet's mnemonic phrase or seed. -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) getSpendProof(txHash, message) → {string}

- - - - - - -
- Generate a signature to prove a spend. Unlike proving a transaction, it does not require the destination public address. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
txHash - - -string - - - - transaction to prove
message - - -string - - - - message to include with the signature to further authenticate the proof (optional)
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the transaction signature -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) getSubaddress(accountIdx, subaddressIdx) → {MoneroSubaddress}

- - - - - - -
- Get a subaddress. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
accountIdx - - -int - - - - index of the subaddress's account
subaddressIdx - - -int - - - - index of the subaddress within the account
- - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the retrieved subaddress -
- - - -
-
- Type -
-
- -MoneroSubaddress - - -
-
- - - - - - - - - - - - - -

(async) getSubaddresses(accountIdx, subaddressIndices) → {Array.<MoneroSubaddress>}

- - - - - - -
- Get subaddresses in an account. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
accountIdx - - -int - - - - account to get subaddresses within
subaddressIndices - - -Array.<int> - - - - indices of subaddresses to get (optional)
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the retrieved subaddresses -
- - - -
-
- Type -
-
- -Array.<MoneroSubaddress> - - -
-
- - - - - - - - - - - - - -

(async) getTransfers(query) → {Array.<MoneroTransfer>}

- - - - - - -
-

Get incoming and outgoing transfers to and from this wallet. An outgoing -transfer represents a total amount sent from one or more subaddresses -within an account to individual destination addresses, each with their -own amount. An incoming transfer represents a total amount received into -a subaddress within an account. Transfers belong to transactions which -are stored on the blockchain.

- -

Results can be filtered by passing a query object. Transfers must -meet every criteria defined in the query in order to be returned. All -criteria are optional and no filtering is applied when not defined.

-
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
query - - -MoneroTransferQuery -| - -object - - - - configures the query (optional) -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
isOutgoing - - -boolean - - - - get transfers that are outgoing or not (optional)
isIncoming - - -boolean - - - - get transfers that are incoming or not (optional)
address - - -string - - - - wallet's address that a transfer either originated from (if outgoing) or is destined for (if incoming) (optional)
accountIndex - - -int - - - - get transfers that either originated from (if outgoing) or are destined for (if incoming) a specific account index (optional)
subaddressIndex - - -int - - - - get transfers that either originated from (if outgoing) or are destined for (if incoming) a specific subaddress index (optional)
subaddressIndices - - -Array.<int> - - - - get transfers that either originated from (if outgoing) or are destined for (if incoming) specific subaddress indices (optional)
amount - - -BigInteger - - - - amount being transferred (optional)
destinations - - -Array.<MoneroDestination> - - - - individual destinations of an outgoing transfer, which is local wallet data and NOT recoverable from the blockchain (optional)
hasDestinations - - -boolean - - - - get transfers that have destinations or not (optional)
txQuery - - -MoneroTxQuery - - - - get transfers whose transaction meets this query (optional)
- -
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- wallet transfers that meet the query -
- - - -
-
- Type -
-
- -Array.<MoneroTransfer> - - -
-
- - - - - - - - - - - - - -

(async) getTx(txHash) → {MoneroTxWallet}

- - - - - - -
- Get a wallet transaction by hash. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
txHash - - -string - - - - hash of a transaction to get
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the identified transaction or undefined if not found -
- - - -
-
- Type -
-
- -MoneroTxWallet - - -
-
- - - - - - - - - - - - - -

(async) getTxKey(txHash) → {string}

- - - - - - -
- Get a transaction's secret key from its hash. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
txHash - - -string - - - - transaction's hash
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- - transaction's secret key -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) getTxNote(txHash) → {string}

- - - - - - -
- Get a transaction note. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
txHash - - -string - - - - transaction to get the note of
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the tx note -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) getTxNotes(txHashes) → {Array.<string>}

- - - - - - -
- Get notes for multiple transactions. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
txHashes - - -Array.<string> - - - - hashes of the transactions to get notes for
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- notes for the transactions -
- - - -
-
- Type -
-
- -Array.<string> - - -
-
- - - - - - - - - - - - - -

(async) getTxProof(txHash, address, message) → {string}

- - - - - - -
- Get a transaction signature to prove it. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
txHash - - -string - - - - transaction to prove
address - - -string - - - - destination public address of the transaction
message - - -string - - - - message to include with the signature to further authenticate the proof (optional)
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the transaction signature -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) getTxs(query) → {Array.<MoneroTxWallet>}

- - - - - - -
-

Get wallet transactions. Wallet transactions contain one or more -transfers that are either incoming or outgoing to the wallet.

- -

Results can be filtered by passing a query object. Transactions must -meet every criteria defined in the query in order to be returned. All -criteria are optional and no filtering is applied when not defined.

-
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
query - - -MoneroTxQuery -| - -Array.<string> -| - -object - - - - configures the query (optional) -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
isConfirmed - - -boolean - - - - get txs that are confirmed or not (optional)
inTxPool - - -boolean - - - - get txs that are in the tx pool or not (optional)
isRelayed - - -boolean - - - - get txs that are relayed or not (optional)
isFailed - - -boolean - - - - get txs that are failed or not (optional)
isMinerTx - - -boolean - - - - get miner txs or not (optional)
hash - - -string - - - - get a tx with the hash (optional)
hashes - - -Array.<string> - - - - get txs with the hashes (optional)
paymentId - - -string - - - - get transactions with the payment id (optional)
paymentIds - - -Array.<string> - - - - get transactions with the payment ids (optional)
hasPaymentId - - -boolean - - - - get transactions with a payment id or not (optional)
minHeight - - -int - - - - get txs with height >= the given height (optional)
maxHeight - - -int - - - - get txs with height <= the given height (optional)
isOutgoing - - -boolean - - - - get txs with an outgoing transfer or not (optional)
isIncoming - - -boolean - - - - get txs with an incoming transfer or not (optional)
transferQuery - - -MoneroTransferQuery - - - - get txs that have a transfer that meets this query (optional)
includeOutputs - - -boolean - - - - specifies that tx outputs should be returned with tx results (optional)
- -
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- wallet transactions per the configuration -
- - - -
-
- Type -
-
- -Array.<MoneroTxWallet> - - -
-
- - - - - - - - - - - - - -

(async) getUnlockedBalance(accountIdx, subaddressIdx) → {BigInteger}

- - - - - - -
- Get the unlocked balance of the wallet, account, or subaddress. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
accountIdx - - -int - - - - index of the account to get the unlocked balance of (optional)
subaddressIdx - - -int - - - - index of the subaddress to get the unlocked balance of (optional)
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the unlocked balance of the wallet, account, or subaddress -
- - - -
-
- Type -
-
- -BigInteger - - -
-
- - - - - - - - - - - - - -

(async) getVersion() → {MoneroVersion}

- - - - - - -
- Gets the version of the wallet. -
- - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the version of the wallet -
- - - -
-
- Type -
-
- -MoneroVersion - - -
-
- - - - - - - - - - - - - -

(async) importKeyImages(keyImages) → {MoneroKeyImageImportResult}

- - - - - - -
- Import signed key images and verify their spent status. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
keyImages - - -Array.<MoneroKeyImage> - - - - images to import and verify (requires hex and signature)
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- results of the import -
- - - -
-
- Type -
-
- -MoneroKeyImageImportResult - - -
-
- - - - - - - - - - - - - -

(async) importMultisigHex(multisigHexes) → {int}

- - - - - - -
- Import multisig info as hex from other participants. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
multisigHexes - - -Array.<string> - - - - multisig hex from each participant
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the number of outputs signed with the given multisig hex -
- - - -
-
- Type -
-
- -int - - -
-
- - - - - - - - - - - - - -

(async) importOutputs(outputsHex) → {int}

- - - - - - -
- Import outputs in hex format. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
outputsHex - - -string - - - - outputs in hex format
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the number of outputs imported -
- - - -
-
- Type -
-
- -int - - -
-
- - - - - - - - - - - - - -

(async) isClosed() → {boolean}

- - - - - - -
- Indicates if this wallet is closed or not. -
- - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if the wallet is closed, false otherwise -
- - - -
-
- Type -
-
- -boolean - - -
-
- - - - - - - - - - - - - -

(async) isConnectedToDaemon() → {boolean}

- - - - - - -
- Indicates if the wallet is connected to daemon. -
- - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if the wallet is connected to a daemon, false otherwise -
- - - -
-
- Type -
-
- -boolean - - -
-
- - - - - - - - - - - - - -

(async) isDaemonSynced() → {boolean}

- - - - - - -
- Indicates if the wallet's daemon is synced with the network. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if the daemon is synced with the network, false otherwise -
- - - -
-
- Type -
-
- -boolean - - -
-
- - - - - - - - - - - - - -

(async) isMultisig() → {boolean}

- - - - - - -
- Indicates if this wallet is a multisig wallet. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if this is a multisig wallet, false otherwise -
- - - -
-
- Type -
-
- -boolean - - -
-
- - - - - - - - - - - - - -

(async) isMultisigImportNeeded() → {boolean}

- - - - - - -
- Indicates if importing multisig data is needed for returning a correct balance. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if importing multisig data is needed for returning a correct balance, false otherwise -
- - - -
-
- Type -
-
- -boolean - - -
-
- - - - - - - - - - - - - -

(async) isOutputFrozen(keyImage) → {boolean}

- - - - - - -
- Check if an output is frozen. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
keyImage - - -string - - - - key image of the output to check if frozen
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if the output is frozen, false otherwise -
- - - -
-
- Type -
-
- -boolean - - -
-
- - - - - - - - - - - - - -

(async) isSynced() → {boolean}

- - - - - - -
- Indicates if the wallet is synced with the daemon. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if the wallet is synced with the daemon, false otherwise -
- - - -
-
- Type -
-
- -boolean - - -
-
- - - - - - - - - - - - - -

(async) isViewOnly() → {bool}

- - - - - - -
- Indicates if the wallet is view-only, meaning it does not have the private -spend key and can therefore only observe incoming outputs. -
- - - - - - - - - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if the wallet is view-only, false otherwise -
- - - -
-
- Type -
-
- -bool - - -
-
- - - - - - - - - - - - - -

(async) makeMultisig(multisigHexes, threshold, password) → {string}

- - - - - - -
- Make this wallet multisig by importing multisig hex from participants. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
multisigHexes - - -Array.<String> - - - - multisig hex from each participant
threshold - - -int - - - - number of signatures needed to sign transfers
password - - -string - - - - wallet password
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- this wallet's multisig hex to share with participants -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) moveTo(path)

- - - - - - -
- Move the wallet from its current path to the given path. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
path - - -string - - - - the wallet's destination path
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) parsePaymentUri(uri) → {MoneroTxConfig}

- - - - - - -
- Parses a payment URI to a tx config. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
uri - - -string - - - - payment uri to parse
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the send configuration parsed from the uri -
- - - -
-
- Type -
-
- -MoneroTxConfig - - -
-
- - - - - - - - - - - - - -

(async) prepareMultisig() → {string}

- - - - - - -
- Get multisig info as hex to share with participants to begin creating a -multisig wallet. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- this wallet's multisig hex to share with participants -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) relayTx(txOrMetadata) → {string}

- - - - - - -
- Relay a previously created transaction. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
txOrMetadata - - -MoneroTxWallet -| - -string - - - - transaction or its metadata to relay
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the hash of the relayed tx -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) relayTxs(txsOrMetadatas) → {Array.<string>}

- - - - - - -
- Relay previously created transactions. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
txsOrMetadatas - - -Array.<MoneroTxWallet> -| - -Array.<string> - - - - transactions or their metadata to relay
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the hashes of the relayed txs -
- - - -
-
- Type -
-
- -Array.<string> - - -
-
- - - - - - - - - - - - - -

(async) removeListener(listener)

- - - - - - -
- Unregister a listener to receive wallet notifications. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
listener - - -MoneroWalletListener - - - - listener to unregister
- - - - - - -
- - - - - - - - -
Overrides:
-
- - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) rescanBlockchain()

- - - - - - -
-

Rescan the blockchain from scratch, losing any information which cannot be recovered from -the blockchain itself.

- -

WARNING: This method discards local wallet data like destination addresses, tx secret keys, -tx notes, etc.

-
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) rescanSpent()

- - - - - - -
-

Rescan the blockchain for spent outputs.

- -

Note: this can only be called with a trusted daemon.

- -

Example use case: peer multisig hex is import when connected to an untrusted daemon, -so the wallet will not rescan spent outputs. Then the wallet connects to a trusted -daemon. This method should be manually invoked to rescan outputs.

-
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) save()

- - - - - - -
- Save the wallet at its current path. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) scanTxs(txHashes)

- - - - - - -
- Scan transactions by their hash/id. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
txHashes - - -Array.<string> - - - - tx hashes to scan
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) setAccountTagLabel(tag, label)

- - - - - - -
- Sets a human-readable description for a tag. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
tag - - -string - - - - tag to set a description for
label - - -string - - - - label to set for the tag
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) setAttribute(key, val)

- - - - - - -
- Set an arbitrary attribute. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
key - - -string - - - - attribute key
val - - -string - - - - attribute value
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) setDaemonConnection(uriOrConnection, username, password)

- - - - - - -
- Set the wallet's daemon connection. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
uriOrConnection - - -string -| - -MoneroRpcConnection - - - - daemon's URI or connection (defaults to offline)
username - - -string - - - - username to authenticate with the daemon (optional)
password - - -string - - - - password to authenticate with the daemon (optional)
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) setRestoreHeight(restoreHeight)

- - - - - - -
- Set the height of the first block that the wallet scans. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
restoreHeight - - -number - - - - height of the first block that the wallet scans
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) setSubaddressLabel(accountIdx, subaddressIdx, label)

- - - - - - -
- Set a subaddress label. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
accountIdx - - -number - - - - index of the account to set the label for
subaddressIdx - - -number - - - - index of the subaddress to set the label for
label - - -string - - - - the label to set
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) setTxNote(txHash, note)

- - - - - - -
- Set a note for a specific transaction. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
txHash - - -string - - - - hash of the transaction to set a note for
note - - -string - - - - the transaction note
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) setTxNotes(txHashes, notes)

- - - - - - -
- Set notes for multiple transactions. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
txHashes - - -Array.<string> - - - - transactions to set notes for
notes - - -Array.<string> - - - - notes to set for the transactions
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) signMessage(message, signatureType, accountIdx, subaddressIdx) → {string}

- - - - - - -
- Sign a message. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
message - - -string - - - - the message to sign
signatureType - - -MoneroMessageSignatureType - - - - sign with spend key or view key (default spend key)
accountIdx - - -int - - - - the account index of the message signature (default 0)
subaddressIdx - - -int - - - - the subaddress index of the message signature (default 0)
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the signature -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) signMultisigTxHex(multisigTxHex) → {MoneroMultisigSignResult}

- - - - - - -
- Sign multisig transactions from a multisig wallet. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
multisigTxHex - - -string - - - - unsigned multisig transactions as hex
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the result of signing the multisig transactions -
- - - -
-
- Type -
-
- -MoneroMultisigSignResult - - -
-
- - - - - - - - - - - - - -

(async) signTxs(unsignedTxHex) → {string}

- - - - - - -
- Sign unsigned transactions from a view-only wallet. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
unsignedTxHex - - -string - - - - unsigned transaction hex from when the transactions were created
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the signed transaction hex -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) startMining(numThreads, backgroundMining, ignoreBattery)

- - - - - - -
- Start mining. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
numThreads - - -int - - - - number of threads created for mining (optional)
backgroundMining - - -boolean - - - - specifies if mining should occur in the background (optional)
ignoreBattery - - -boolean - - - - specifies if the battery should be ignored for mining (optional)
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) startSyncing(syncPeriodInMs)

- - - - - - -
- Start background synchronizing with a maximum period between syncs. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
syncPeriodInMs - - -int - - - - maximum period between syncs in milliseconds (default is wallet-specific)
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) stopMining()

- - - - - - -
- Stop mining. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) stopSyncing()

- - - - - - -
- Stop synchronizing the wallet with the daemon. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) submitMultisigTxHex(signedMultisigTxHex) → {Array.<string>}

- - - - - - -
- Submit signed multisig transactions from a multisig wallet. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
signedMultisigTxHex - - -string - - - - signed multisig hex returned from signMultisigTxHex()
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the resulting transaction hashes -
- - - -
-
- Type -
-
- -Array.<string> - - -
-
- - - - - - - - - - - - - -

(async) submitTxs(signedTxHex) → {Array.<string>}

- - - - - - -
- Submit signed transactions from a view-only wallet. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
signedTxHex - - -string - - - - signed transaction hex from signTxs()
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the resulting transaction hashes -
- - - -
-
- Type -
-
- -Array.<string> - - -
-
- - - - - - - - - - - - - -

(async) sweepDust(relay) → {Array.<MoneroTxWallet>}

- - - - - - -
-

Sweep all unmixable dust outputs back to the wallet to make them easier to spend and mix.

- -

NOTE: Dust only exists pre RCT, so this method will throw "no dust to sweep" on new wallets.

-
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
relay - - -boolean - - - - specifies if the resulting transaction should be relayed (default false)
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the created transactions -
- - - -
-
- Type -
-
- -Array.<MoneroTxWallet> - - -
-
- - - - - - - - - - - - - -

(async) sweepOutput(config) → {MoneroTxWallet}

- - - - - - -
- Sweep an output by key image. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
config - - -MoneroTxConfig - - - - configures the transaction to create (required) -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
address - - -string - - - - single destination address (required)
keyImage - - -string - - - - key image to sweep (required)
relay - - -boolean - - - - relay the transaction to peers to commit to the blockchain (default false)
unlockTime - - -BigInteger -| - -string - - - - minimum height or timestamp for the transaction to unlock (default 0)
priority - - -MoneroTxPriority - - - - transaction priority (default MoneroTxPriority.NORMAL)
- -
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the created transaction -
- - - -
-
- Type -
-
- -MoneroTxWallet - - -
-
- - - - - - - - - - - - - -

(async) sweepUnlocked(config) → {Array.<MoneroTxWallet>}

- - - - - - -
- Sweep all unlocked funds according to the given configuration. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
config - - -MoneroTxConfig -| - -object - - - - configures the transactions to create (required) -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
address - - -string - - - - single destination address (required)
accountIndex - - -int - - - - source account index to sweep from (optional, defaults to all accounts)
subaddressIndex - - -int - - - - source subaddress index to sweep from (optional, defaults to all subaddresses)
subaddressIndices - - -Array.<int> - - - - source subaddress indices to sweep from (optional)
relay - - -boolean - - - - relay the transactions to peers to commit to the blockchain (default false)
priority - - -MoneroTxPriority - - - - transaction priority (default MoneroTxPriority.NORMAL)
unlockTime - - -BigInteger -| - -string - - - - minimum height or timestamp for the transactions to unlock (default 0)
sweepEachSubaddress - - -boolean - - - - sweep each subaddress individually if true (default false)
- -
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the created transactions -
- - - -
-
- Type -
-
- -Array.<MoneroTxWallet> - - -
-
- - - - - - - - - - - - - -

(async) sync(listenerOrStartHeight, startHeight, allowConcurrentCalls)

- - - - - - -
- Synchronize the wallet with the daemon as a one-time synchronous process. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
listenerOrStartHeight - - -MoneroWalletListener -| - -number - - - - listener xor start height (defaults to no sync listener, the last synced block)
startHeight - - -number - - - - startHeight if not given in first arg (defaults to last synced block)
allowConcurrentCalls - - -bool - - - - allow other wallet methods to be processed simultaneously during sync (default false)

WARNING: enabling this option will crash wallet execution if another call makes a simultaneous network request. TODO: possible to sync wasm network requests in http_client_wasm.cpp?
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) tagAccounts(tag, accountIndices)

- - - - - - -
- Tag accounts. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
tag - - -string - - - - tag to apply to the specified accounts
accountIndices - - -Array.<int> - - - - indices of the accounts to tag
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) thawOutput(keyImage)

- - - - - - -
- Thaw a frozen output. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
keyImage - - -string - - - - key image of the output to thaw
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) untagAccounts(accountIndices)

- - - - - - -
- Untag accounts. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
accountIndices - - -Array.<int> - - - - indices of the accounts to untag
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) verifyMessage(message, address, signature) → {MoneroMessageSignatureResult}

- - - - - - -
- Verify a signature on a message. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
message - - -string - - - - signed message
address - - -string - - - - signing address
signature - - -string - - - - signature
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if the signature is good, false otherwise -
- - - -
-
- Type -
-
- -MoneroMessageSignatureResult - - -
-
- - - - - - - - - - - - - -

(async, static) createWallet(config) → {MoneroWalletFull}

- - - - - - -
-

Create a wallet using WebAssembly bindings to wallet2.h.

- -

Example:

- - -let wallet = await MoneroWalletFull.createWallet({
-   path: "./test_wallets/wallet1", // leave blank for in-memory wallet
-   password: "supersecretpassword",
-   networkType: MoneroNetworkType.STAGENET,
-   seed: "coexist igloo pamphlet lagoon...",
-   restoreHeight: 1543218,
-   server: new MoneroRpcConnection("http://localhost:38081", "daemon_user", "daemon_password_123"),
-}); -
-
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
config - - -object -| - -MoneroWalletConfig - - - - MoneroWalletConfig or equivalent config object -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
path - - -string - - - - path of the wallet to create (optional, in-memory wallet if not given)
password - - -string - - - - password of the wallet to create
networkType - - -string -| - -number - - - - network type of the wallet to create (one of "mainnet", "testnet", "stagenet" or MoneroNetworkType.MAINNET|TESTNET|STAGENET)
seed - - -string - - - - seed of the wallet to create (optional, random wallet created if neither seed nor keys given)
seedOffset - - -string - - - - the offset used to derive a new seed from the given seed to recover a secret wallet from the seed phrase
isMultisig - - -boolean - - - - restore multisig wallet from seed
primaryAddress - - -string - - - - primary address of the wallet to create (only provide if restoring from keys)
privateViewKey - - -string - - - - private view key of the wallet to create (optional)
privateSpendKey - - -string - - - - private spend key of the wallet to create (optional)
restoreHeight - - -number - - - - block height to start scanning from (defaults to 0 unless generating random wallet)
language - - -string - - - - language of the wallet's seed phrase (defaults to "English" or auto-detected)
accountLookahead - - -number - - - - number of accounts to scan (optional)
subaddressLookahead - - -number - - - - number of subaddresses to scan per account (optional)
server - - -MoneroRpcConnection -| - -object - - - - MoneroRpcConnection or equivalent JS object providing daemon configuration (optional)
serverUri - - -string - - - - uri of the wallet's daemon (optional)
serverUsername - - -string - - - - username to authenticate with the daemon (optional)
serverPassword - - -string - - - - password to authenticate with the daemon (optional)
connectionManager - - -MoneroConnectionManager - - - - manage connections to monerod (optional)
rejectUnauthorized - - -boolean - - - - reject self-signed server certificates if true (defaults to true)
proxyToWorker - - -boolean - - - - proxies wallet operations to a worker in order to not block the main thread (default true)
fs - - -fs - - - - Node.js compatible file system to use (defaults to disk or in-memory FS if browser)
- -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the created wallet -
- - - -
-
- Type -
-
- -MoneroWalletFull - - -
-
- - - - - - - - - - - - - -

(async, static) getSeedLanguages()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async, static) openWallet(configOrPath, password, networkType, daemonUriOrConnection, proxyToWorker, fs) → {MoneroWalletFull}

- - - - - - -
-

Open an existing wallet using WebAssembly bindings to wallet2.h.

- -

Examples:

- - -let wallet1 = await MoneroWalletFull.openWallet(
-   "./wallets/wallet1",
-   "supersecretpassword",
-   MoneroNetworkType.STAGENET,
-   "http://localhost:38081" // daemon uri
-);

- -let wallet2 = await MoneroWalletFull.openWallet({
-   path: "./wallets/wallet2",
-   password: "supersecretpassword",
-   networkType: MoneroNetworkType.STAGENET,
-   serverUri: "http://localhost:38081", // daemon configuration
-   serverUsername: "superuser",
-   serverPassword: "abctesting123"
-}); -
-

- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
configOrPath - - -MoneroWalletConfig -| - -object -| - -string - - - - MoneroWalletConfig or equivalent config object or a path to a wallet to open -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
path - - -string - - - - path of the wallet to open (optional if 'keysData' provided)
password - - -string - - - - password of the wallet to open
networkType - - -string -| - -number - - - - network type of the wallet to open (one of "mainnet", "testnet", "stagenet" or MoneroNetworkType.MAINNET|TESTNET|STAGENET)
keysData - - -Uint8Array - - - - wallet keys data to open (optional if path provided)
cacheData - - -Uint8Array - - - - wallet cache data to open (optional)
server - - -MoneroRpcConnection -| - -object - - - - MoneroRpcConnection or equivalent JS object configuring the daemon connection (optional)
serverUri - - -string - - - - uri of the wallet's daemon (optional)
serverUsername - - -string - - - - username to authenticate with the daemon (optional)
serverPassword - - -string - - - - password to authenticate with the daemon (optional)
rejectUnauthorized - - -boolean - - - - reject self-signed server certificates if true (default true)
proxyToWorker - - -boolean - - - - proxies wallet operations to a worker in order to not block the main thread (default true)
fs - - -fs - - - - Node.js compatible file system to use (defaults to disk or in-memory FS if browser)
- -
password - - -string - - - - password of the wallet to open
networkType - - -string -| - -number - - - - network type of the wallet to open
daemonUriOrConnection - - -string -| - -MoneroRpcConnection - - - - daemon URI or MoneroRpcConnection
proxyToWorker - - -boolean - - - - proxies wallet operations to a worker in order to not block the main thread (default true)
fs - - -fs - - - - Node.js compatible file system to use (defaults to disk or in-memory FS if browser)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the opened wallet -
- - - -
-
- Type -
-
- -MoneroWalletFull - - -
-
- - - - - - - - - - - - - -

(static) walletExists(path, fs) → {boolean}

- - - - - - -
- Check if a wallet exists at a given path. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
path - - -string - - - - path of the wallet on the file system
fs - - -fs - - - - Node.js compatible file system to use (optional, defaults to disk if nodejs)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if a wallet exists at the given path, false otherwise -
- - - -
-
- Type -
-
- -boolean - - -
-
- - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroWalletKeys.html b/docs/MoneroWalletKeys.html deleted file mode 100644 index 6499b6689..000000000 --- a/docs/MoneroWalletKeys.html +++ /dev/null @@ -1,3070 +0,0 @@ - - - - - JSDoc: Class: MoneroWalletKeys - - - - - - - - - - -
- -

Class: MoneroWalletKeys

- - - - - - -
- -
- -

MoneroWalletKeys

- -
Implements a MoneroWallet which only manages keys using WebAssembly.
- - -
- -
-
- - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

(async) addListener(listener)

- - - - - - -
- Register a listener to receive wallet notifications. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
listener - - -MoneroWalletListener - - - - listener to receive wallet notifications
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) close(save)

- - - - - - -
- Optionally save then close the wallet. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
save - - -boolean - - - - specifies if the wallet should be saved before being closed (default false)
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getAccounts(includeSubaddresses, tag) → {Array.<MoneroAccount>}

- - - - - - -
- Get accounts with a given tag. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
includeSubaddresses - - -boolean - - - - include subaddresses if true
tag - - -string - - - - tag for filtering accounts, all accounts if undefined
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- all accounts with the given tag -
- - - -
-
- Type -
-
- -Array.<MoneroAccount> - - -
-
- - - - - - - - - - - - - -

(async) getAddress(accountIdx, subaddressIdx) → {string}

- - - - - - -
- Get the address of a specific subaddress. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
accountIdx - - -int - - - - the account index of the address's subaddress
subaddressIdx - - -int - - - - the subaddress index within the account
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the receive address of the specified subaddress -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) getAddressIndex(address) → {MoneroSubaddress}

- - - - - - -
- Get the account and subaddress index of the given address. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
address - - -string - - - - address to get the account and subaddress index from
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the account and subaddress indices -
- - - -
-
- Type -
-
- -MoneroSubaddress - - -
-
- - - - - - - - - - - - - -

(async) getPrimaryAddress() → {string}

- - - - - - -
- Get the wallet's primary address. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the wallet's primary address -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) getPrivateSpendKey() → {string}

- - - - - - -
- Get the wallet's private spend key. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the wallet's private spend key -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) getPrivateViewKey() → {string}

- - - - - - -
- Get the wallet's private view key. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the wallet's private view key -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) getPublicSpendKey() → {string}

- - - - - - -
- Get the wallet's public spend key. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the wallet's public spend key -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) getPublicViewKey() → {string}

- - - - - - -
- Get the wallet's public view key. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the wallet's public view key -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) getSeed() → {string}

- - - - - - -
- Get the wallet's mnemonic phrase or seed. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the wallet's mnemonic phrase or seed. -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) getSeedLanguage() → {string}

- - - - - - -
- Get the language of the wallet's mnemonic phrase or seed. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the language of the wallet's mnemonic phrase or seed. -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) getSubaddress(accountIdx, subaddressIdx) → {MoneroSubaddress}

- - - - - - -
- Get a subaddress. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
accountIdx - - -int - - - - index of the subaddress's account
subaddressIdx - - -int - - - - index of the subaddress within the account
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the retrieved subaddress -
- - - -
-
- Type -
-
- -MoneroSubaddress - - -
-
- - - - - - - - - - - - - -

(async) getVersion() → {MoneroVersion}

- - - - - - -
- Gets the version of the wallet. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the version of the wallet -
- - - -
-
- Type -
-
- -MoneroVersion - - -
-
- - - - - - - - - - - - - -

(async) isClosed() → {boolean}

- - - - - - -
- Indicates if this wallet is closed or not. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if the wallet is closed, false otherwise -
- - - -
-
- Type -
-
- -boolean - - -
-
- - - - - - - - - - - - - -

(async) isConnectedToDaemon() → {boolean}

- - - - - - -
- Indicates if the wallet is connected to daemon. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if the wallet is connected to a daemon, false otherwise -
- - - -
-
- Type -
-
- -boolean - - -
-
- - - - - - - - - - - - - -

(async) isViewOnly() → {bool}

- - - - - - -
- Indicates if the wallet is view-only, meaning it does not have the private -spend key and can therefore only observe incoming outputs. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if the wallet is view-only, false otherwise -
- - - -
-
- Type -
-
- -bool - - -
-
- - - - - - - - - - - - - -

(async) removeListener(listener)

- - - - - - -
- Unregister a listener to receive wallet notifications. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
listener - - -MoneroWalletListener - - - - listener to unregister
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async, static) createWallet(config) → {MoneroWalletKeys}

- - - - - - -
-

Create a wallet using WebAssembly bindings to monero-project.

- -

Example:

- - -let wallet = await MoneroWalletKeys.createWallet({
-   password: "abc123",
-   networkType: MoneroNetworkType.STAGENET,
-   seed: "coexist igloo pamphlet lagoon..."
-}); -
-
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
config - - -MoneroWalletConfig -| - -object - - - - MoneroWalletConfig or equivalent config object -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
networkType - - -string -| - -number - - - - network type of the wallet to create (one of "mainnet", "testnet", "stagenet" or MoneroNetworkType.MAINNET|TESTNET|STAGENET)
seed - - -string - - - - seed of the wallet to create (optional, random wallet created if neither seed nor keys given)
seedOffset - - -string - - - - the offset used to derive a new seed from the given seed to recover a secret wallet from the seed phrase
primaryAddress - - -string - - - - primary address of the wallet to create (only provide if restoring from keys)
privateViewKey - - -string - - - - private view key of the wallet to create (optional)
privateSpendKey - - -string - - - - private spend key of the wallet to create (optional)
language - - -string - - - - language of the wallet's seed (defaults to "English" or auto-detected)
- -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the created wallet -
- - - -
-
- Type -
-
- -MoneroWalletKeys - - -
-
- - - - - - - - - - - - - -

(async, static) getSeedLanguages()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroWalletListener.html b/docs/MoneroWalletListener.html deleted file mode 100644 index 86046602c..000000000 --- a/docs/MoneroWalletListener.html +++ /dev/null @@ -1,979 +0,0 @@ - - - - - JSDoc: Class: MoneroWalletListener - - - - - - - - - - -
- -

Class: MoneroWalletListener

- - - - - - -
- -
- -

MoneroWalletListener()

- -
Default wallet listener which takes no action on notifications.
- - -
- -
-
- - - - -

Constructor

- - - -

new MoneroWalletListener()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

(async) onBalancesChanged(newBalance, newUnlockedBalance)

- - - - - - -
- Invoked when the wallet's balances change. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
newBalance - - -BigInteger - - - - new wallet balance
newUnlockedBalance - - -BigInteger - - - - new unlocked wallet balance
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) onNewBlock(height)

- - - - - - -
- Invoked when a new block is added to the chain. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
height - - -int - - - - the height of the new block (i.e. the number of blocks before it).
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) onOutputReceived(output)

- - - - - - -
- Invoked 3 times per received output: once when unconfirmed, once when confirmed, and -once when unlocked. - -The notified output includes basic fields only, so the output or its transaction should be fetched to get all available fields. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
output - - -MoneroOutputWallet - - - - the received output
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) onOutputSpent(output)

- - - - - - -
- Invoked twice per spent output: once when confirmed and once when unlocked. - -The notified output includes basic fields only, so the output or its transaction should be fetched to get all available fields. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
output - - -MoneroOutputWallet - - - - the spent output
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) onSyncProgress(height, startHeight, endHeight, percentDone, message)

- - - - - - -
- Invoked as the wallet is synchronized. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
height - - -number - - - - height of the synced block
startHeight - - -number - - - - starting height of the sync request
endHeight - - -number - - - - ending height of the sync request
percentDone - - -number - - - - sync progress as a percentage
message - - -string - - - - human-readable description of the current progress
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/MoneroWalletRpc.html b/docs/MoneroWalletRpc.html deleted file mode 100644 index fe00a73a6..000000000 --- a/docs/MoneroWalletRpc.html +++ /dev/null @@ -1,20312 +0,0 @@ - - - - - JSDoc: Class: MoneroWalletRpc - - - - - - - - - - -
- -

Class: MoneroWalletRpc

- - - - - - -
- -
- -

MoneroWalletRpc

- -
Implements a MoneroWallet as a client of monero-wallet-rpc.
- - -
- -
-
- - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

(async) addAddressBookEntry(address, description) → {int}

- - - - - - -
- Add an address book entry. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
address - - -string - - - - entry address
description - - -string - - - - entry description (optional)
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the index of the added entry -
- - - -
-
- Type -
-
- -int - - -
-
- - - - - - - - - - - - - -

(async) addListener(listener)

- - - - - - -
- Register a listener to receive wallet notifications. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
listener - - -MoneroWalletListener - - - - listener to receive wallet notifications
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) changePassword(oldPassword, newPassword)

- - - - - - -
- Change the wallet password. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
oldPassword - - -string - - - - the wallet's old password
newPassword - - -string - - - - the wallet's new password
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) checkReserveProof(address, message, signature) → {MoneroCheckReserve}

- - - - - - -
- Proves a wallet has a disposable reserve using a signature. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
address - - -string - - - - public wallet address
message - - -string - - - - message included with the signature to further authenticate the proof (optional)
signature - - -string - - - - reserve proof signature to check
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the result of checking the signature proof -
- - - -
-
- Type -
-
- -MoneroCheckReserve - - -
-
- - - - - - - - - - - - - -

(async) checkSpendProof(txHash, message, signature) → {boolean}

- - - - - - -
- Prove a spend using a signature. Unlike proving a transaction, it does not require the destination public address. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
txHash - - -string - - - - transaction to prove
message - - -string - - - - message included with the signature to further authenticate the proof (optional)
signature - - -string - - - - transaction signature to confirm
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if the signature is good, false otherwise -
- - - -
-
- Type -
-
- -boolean - - -
-
- - - - - - - - - - - - - -

(async) checkTxKey(txHash, txKey, address) → {MoneroCheckTx}

- - - - - - -
- Check a transaction in the blockchain with its secret key. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
txHash - - -string - - - - transaction to check
txKey - - -string - - - - transaction's secret key
address - - -string - - - - destination public address of the transaction
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the result of the check -
- - - -
-
- Type -
-
- -MoneroCheckTx - - -
-
- - - - - - - - - - - - - -

(async) checkTxProof(txHash, address, message, signature) → {MoneroCheckTx}

- - - - - - -
- Prove a transaction by checking its signature. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
txHash - - -string - - - - transaction to prove
address - - -string - - - - destination public address of the transaction
message - - -string - - - - message included with the signature to further authenticate the proof (optional)
signature - - -string - - - - transaction signature to confirm
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the result of the check -
- - - -
-
- Type -
-
- -MoneroCheckTx - - -
-
- - - - - - - - - - - - - -

(async) close(save)

- - - - - - -
- Optionally save then close the wallet. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
save - - -boolean - - - - specifies if the wallet should be saved before being closed (default false)
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) createAccount(label) → {MoneroAccount}

- - - - - - -
- Create a new account with a label for the first subaddress. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
label - - -string - - - - label for account's first subaddress (optional)
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the created account -
- - - -
-
- Type -
-
- -MoneroAccount - - -
-
- - - - - - - - - - - - - -

(async) createSubaddress(accountIdx, label) → {MoneroSubaddress}

- - - - - - -
- Create a subaddress within an account. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
accountIdx - - -int - - - - index of the account to create the subaddress within
label - - -string - - - - the label for the subaddress (optional)
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the created subaddress -
- - - -
-
- Type -
-
- -MoneroSubaddress - - -
-
- - - - - - - - - - - - - -

(async) createTx(config) → {MoneroTxWallet}

- - - - - - -
- Create a transaction to transfer funds from this wallet. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
config - - -MoneroTxConfig -| - -object - - - - configures the transaction to create (required) -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
address - - -string - - - - single destination address (required unless `destinations` provided)
amount - - -BigInteger -| - -string - - - - single destination amount (required unless `destinations` provided)
accountIndex - - -int - - - - source account index to transfer funds from (required)
subaddressIndex - - -int - - - - source subaddress index to transfer funds from (optional)
subaddressIndices - - -Array.<int> - - - - source subaddress indices to transfer funds from (optional)
relay - - -boolean - - - - relay the transaction to peers to commit to the blockchain (default false)
priority - - -MoneroTxPriority - - - - transaction priority (default MoneroTxPriority.NORMAL)
destinations - - -Array.<MoneroDestination> - - - - addresses and amounts in a multi-destination tx (required unless `address` and `amount` provided)
subtractFeeFrom - - -Array.<int> - - - - list of destination indices to split the transaction fee (optional)
paymentId - - -string - - - - transaction payment ID (optional)
unlockTime - - -BigInteger -| - -string - - - - minimum height or timestamp for the transaction to unlock (default 0)
- -
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the created transaction -
- - - -
-
- Type -
-
- -MoneroTxWallet - - -
-
- - - - - - - - - - - - - -

(async) createTxs(config) → {Array.<MoneroTxWallet>}

- - - - - - -
- Create one or more transactions to transfer funds from this wallet. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
config - - -MoneroTxConfig -| - -object - - - - configures the transactions to create (required) -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
address - - -string - - - - single destination address (required unless `destinations` provided)
amount - - -BigInteger -| - -string - - - - single destination amount (required unless `destinations` provided)
accountIndex - - -int - - - - source account index to transfer funds from (required)
subaddressIndex - - -int - - - - source subaddress index to transfer funds from (optional)
subaddressIndices - - -Array.<int> - - - - source subaddress indices to transfer funds from (optional)
relay - - -boolean - - - - relay the transactions to peers to commit to the blockchain (default false)
priority - - -MoneroTxPriority - - - - transaction priority (default MoneroTxPriority.NORMAL)
destinations - - -Array.<MoneroDestination> - - - - addresses and amounts in a multi-destination tx (required unless `address` and `amount` provided)
paymentId - - -string - - - - transaction payment ID (optional)
unlockTime - - -BigInteger -| - -string - - - - minimum height or timestamp for the transactions to unlock (default 0)
canSplit - - -boolean - - - - allow funds to be transferred using multiple transactions (default true)
- -
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the created transactions -
- - - -
-
- Type -
-
- -Array.<MoneroTxWallet> - - -
-
- - - - - - - - - - - - - -

(async) createWallet(config) → {MoneroWalletRpc}

- - - - - - -
-

Create and open a wallet on the monero-wallet-rpc server.

- -

Example:

- - -// construct client to monero-wallet-rpc
-let walletRpc = new MoneroWalletRpc("http://localhost:38084", "rpc_user", "abc123");

- -// create and open wallet on monero-wallet-rpc
-await walletRpc.createWallet({
-   path: "mywallet",
-   password: "abc123",
-   seed: "coexist igloo pamphlet lagoon...",
-   restoreHeight: 1543218l
-}); -
-

- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
config - - -object -| - -MoneroWalletConfig - - - - MoneroWalletConfig or equivalent JS object -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
path - - -string - - - - path of the wallet to create (optional, in-memory wallet if not given)
password - - -string - - - - password of the wallet to create
seed - - -string - - - - seed of the wallet to create (optional, random wallet created if neither seed nor keys given)
seedOffset - - -string - - - - the offset used to derive a new seed from the given seed to recover a secret wallet from the seed
isMultisig - - -boolean - - - - restore multisig wallet from seed
primaryAddress - - -string - - - - primary address of the wallet to create (only provide if restoring from keys)
privateViewKey - - -string - - - - private view key of the wallet to create (optional)
privateSpendKey - - -string - - - - private spend key of the wallet to create (optional)
restoreHeight - - -number - - - - block height to start scanning from (defaults to 0 unless generating random wallet)
language - - -string - - - - language of the wallet's mnemonic phrase or seed (defaults to "English" or auto-detected)
server - - -MoneroRpcConnection - - - - MoneroRpcConnection to a monero daemon (optional)
serverUri - - -string - - - - uri of a daemon to use (optional, monero-wallet-rpc usually started with daemon config)
serverUsername - - -string - - - - username to authenticate with the daemon (optional)
serverPassword - - -string - - - - password to authenticate with the daemon (optional)
connectionManager - - -MoneroConnectionManager - - - - manage connections to monerod (optional)
rejectUnauthorized - - -boolean - - - - reject self-signed server certificates if true (defaults to true)
server - - -MoneroRpcConnection -| - -object - - - - MoneroRpcConnection or equivalent JS object providing daemon configuration (optional)
saveCurrent - - -boolean - - - - specifies if the current RPC wallet should be saved before being closed (default true)
- -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- this wallet client -
- - - -
-
- Type -
-
- -MoneroWalletRpc - - -
-
- - - - - - - - - - - - - -

(async) decodeIntegratedAddress(integratedAddress) → {MoneroIntegratedAddress}

- - - - - - -
- Decode an integrated address to get its standard address and payment id. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
integratedAddress - - -string - - - - integrated address to decode
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the decoded integrated address including standard address and payment id -
- - - -
-
- Type -
-
- -MoneroIntegratedAddress - - -
-
- - - - - - - - - - - - - -

(async) deleteAddressBookEntry(entryIdx)

- - - - - - -
- Delete an address book entry. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
entryIdx - - -int - - - - index of the entry to delete
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) describeTxSet(txSet) → {MoneroTxSet}

- - - - - - -
- Describe a tx set containing unsigned or multisig tx hex to a new tx set containing structured transactions. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
txSet - - -MoneroTxSet - - - - a tx set containing unsigned or multisig tx hex
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the tx set containing structured transactions -
- - - -
-
- Type -
-
- -MoneroTxSet - - -
-
- - - - - - - - - - - - - -

(async) editAddressBookEntry(index, setAddress, address, setDescription, description)

- - - - - - -
- Edit an address book entry. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
index - - -number - - - - index of the address book entry to edit
setAddress - - -boolean - - - - specifies if the address should be updated
address - - -string - - - - updated address
setDescription - - -boolean - - - - specifies if the description should be updated
description - - -string - - - - updated description
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) exchangeMultisigKeys(multisigHexes, password) → {MoneroMultisigInitResult}

- - - - - - -
- Exchange multisig hex with participants in a M/N multisig wallet. - -This process must be repeated with participants exactly N-M times. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
multisigHexes - - -Array.<string> - - - - are multisig hex from each participant
password - - -string - - - - wallet's password // TODO monero-project: redundant? wallet is created with password
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the result which has the multisig's address xor this wallet's multisig hex to share with participants iff not done -
- - - -
-
- Type -
-
- -MoneroMultisigInitResult - - -
-
- - - - - - - - - - - - - -

(async) exportKeyImages(all) → {Array.<MoneroKeyImage>}

- - - - - - -
- Export signed key images. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
all - - -boolean - - - - export all key images if true, else export the key images since the last export
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the wallet's signed key images -
- - - -
-
- Type -
-
- -Array.<MoneroKeyImage> - - -
-
- - - - - - - - - - - - - -

(async) exportMultisigHex() → {string}

- - - - - - -
- Export this wallet's multisig info as hex for other participants. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- this wallet's multisig info as hex for other participants -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) exportOutputs(all) → {string}

- - - - - - -
- Export outputs in hex format. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
all - - -boolean - - - - export all outputs if true, else export the outputs since the last export
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- outputs in hex format -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) freezeOutput(keyImage)

- - - - - - -
- Freeze an output. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
keyImage - - -string - - - - key image of the output to freeze
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) getAccount(accountIdx, includeSubaddresses) → {MoneroAccount}

- - - - - - -
- Get an account. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
accountIdx - - -int - - - - index of the account to get
includeSubaddresses - - -boolean - - - - include subaddresses if true
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the retrieved account -
- - - -
-
- Type -
-
- -MoneroAccount - - -
-
- - - - - - - - - - - - - -

(async) getAccountTags() → {Array.<MoneroAccountTag>}

- - - - - - -
- Return all account tags. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the wallet's account tags -
- - - -
-
- Type -
-
- -Array.<MoneroAccountTag> - - -
-
- - - - - - - - - - - - - -

(async) getAccounts(includeSubaddresses, tag) → {Array.<MoneroAccount>}

- - - - - - -
- Get accounts with a given tag. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
includeSubaddresses - - -boolean - - - - include subaddresses if true
tag - - -string - - - - tag for filtering accounts, all accounts if undefined
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- all accounts with the given tag -
- - - -
-
- Type -
-
- -Array.<MoneroAccount> - - -
-
- - - - - - - - - - - - - -

(async) getAddress(accountIdx, subaddressIdx) → {string}

- - - - - - -
- Get the address of a specific subaddress. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
accountIdx - - -int - - - - the account index of the address's subaddress
subaddressIdx - - -int - - - - the subaddress index within the account
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the receive address of the specified subaddress -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) getAddressBookEntries(entryIndices) → {Array.<MoneroAddressBookEntry>}

- - - - - - -
- Get address book entries. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
entryIndices - - -Array.<int> - - - - indices of the entries to get
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the address book entries -
- - - -
-
- Type -
-
- -Array.<MoneroAddressBookEntry> - - -
-
- - - - - - - - - - - - - -

(async) getAddressIndex(address) → {MoneroSubaddress}

- - - - - - -
- Get the account and subaddress index of the given address. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
address - - -string - - - - address to get the account and subaddress index from
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the account and subaddress indices -
- - - -
-
- Type -
-
- -MoneroSubaddress - - -
-
- - - - - - - - - - - - - -

(async) getAttribute(key) → {string}

- - - - - - -
- Get an attribute. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
key - - -string - - - - attribute to get the value of
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the attribute's value -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) getBalance(accountIdx, subaddressIdx) → {BigInteger}

- - - - - - -
- Get the balance of the wallet, account, or subaddress. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
accountIdx - - -int - - - - index of the account to get the balance of (default all accounts)
subaddressIdx - - -int - - - - index of the subaddress to get the balance of (default all subaddresses)
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the balance of the wallet, account, or subaddress -
- - - -
-
- Type -
-
- -BigInteger - - -
-
- - - - - - - - - - - - - -

(async) getDaemonConnection() → {MoneroRpcConnection}

- - - - - - -
- Get the wallet's daemon connection. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the wallet's daemon connection -
- - - -
-
- Type -
-
- -MoneroRpcConnection - - -
-
- - - - - - - - - - - - - -

(async) getDaemonHeight() → {int}

- - - - - - -
- Get the blockchain's height. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the blockchain's height -
- - - -
-
- Type -
-
- -int - - -
-
- - - - - - - - - - - - - -

(async) getHeight() → {int}

- - - - - - -
- Get the block height that the wallet is synced to. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the block height that the wallet is synced to -
- - - -
-
- Type -
-
- -int - - -
-
- - - - - - - - - - - - - -

(async) getHeightByDate(year, month, day)

- - - - - - -
- Get the blockchain's height by date as a conservative estimate for scanning. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
year - - -int - - - - year of the height to get
month - - -int - - - - month of the height to get as a number between 1 and 12
day - - -int - - - - day of the height to get as a number between 1 and 31
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the blockchain's approximate height at the given date -
- - - - - - - - - - - - - - - -

(async) getIncomingTransfers(query) → {Array.<MoneroIncomingTransfer>}

- - - - - - -
- Get incoming transfers. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
query - - -MoneroTransferQuery -| - -object - - - - configures the query (optional) -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
address - - -string - - - - get incoming transfers to a specific address in the wallet (optional)
accountIndex - - -int - - - - get incoming transfers to a specific account index (optional)
subaddressIndex - - -int - - - - get incoming transfers to a specific subaddress index (optional)
subaddressIndices - - -Array.<int> - - - - get transfers destined for specific subaddress indices (optional)
amount - - -BigInteger - - - - amount being transferred (optional)
txQuery - - -MoneroTxQuery - - - - get transfers whose transaction meets this query (optional)
- -
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- incoming transfers that meet the query -
- - - -
-
- Type -
-
- -Array.<MoneroIncomingTransfer> - - -
-
- - - - - - - - - - - - - -

(async) getIntegratedAddress(standardAddress, paymentId) → {MoneroIntegratedAddress}

- - - - - - -
- Get an integrated address based on the given standard address and payment -ID. Uses the wallet's primary address if an address is not given. -Generates a random payment ID if a payment ID is not given. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
standardAddress - - -string - - - - is the standard address to generate the integrated address from (wallet's primary address if undefined)
paymentId - - -string - - - - is the payment ID to generate an integrated address from (randomly generated if undefined)
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the integrated address -
- - - -
-
- Type -
-
- -MoneroIntegratedAddress - - -
-
- - - - - - - - - - - - - -

getListeners() → {Array.<MoneroWalletListener>}

- - - - - - -
- Get the listeners registered with the wallet. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the registered listeners -
- - - -
-
- Type -
-
- -Array.<MoneroWalletListener> - - -
-
- - - - - - - - - - - - - -

(async) getMultisigInfo() → {MoneroMultisigInfo}

- - - - - - -
- Get multisig info about this wallet. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- multisig info about this wallet -
- - - -
-
- Type -
-
- -MoneroMultisigInfo - - -
-
- - - - - - - - - - - - - -

(async) getNewKeyImagesFromLastImport() → {Array.<MoneroKeyImage>}

- - - - - - -
- Get new key images from the last imported outputs. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the key images from the last imported outputs -
- - - -
-
- Type -
-
- -Array.<MoneroKeyImage> - - -
-
- - - - - - - - - - - - - -

(async) getNumBlocksToUnlock() → {Array.<int>}

- - - - - - -
- Get the number of blocks until the next and last funds unlock. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the number of blocks until the next and last funds unlock in elements 0 and 1, respectively, or undefined if no balance -
- - - -
-
- Type -
-
- -Array.<int> - - -
-
- - - - - - - - - - - - - -

(async) getOutgoingTransfers(query) → {Array.<MoneroOutgoingTransfer>}

- - - - - - -
- Get outgoing transfers. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
query - - -MoneroTransferQuery -| - -object - - - - configures the query (optional) -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
address - - -string - - - - get outgoing transfers from a specific address in the wallet (optional)
accountIndex - - -int - - - - get outgoing transfers from a specific account index (optional)
subaddressIndex - - -int - - - - get outgoing transfers from a specific subaddress index (optional)
subaddressIndices - - -Array.<int> - - - - get outgoing transfers from specific subaddress indices (optional)
amount - - -BigInteger - - - - amount being transferred (optional)
destinations - - -Array.<MoneroDestination> - - - - individual destinations of an outgoing transfer, which is local wallet data and NOT recoverable from the blockchain (optional)
hasDestinations - - -boolean - - - - get transfers that have destinations or not (optional)
txQuery - - -MoneroTxQuery - - - - get transfers whose transaction meets this query (optional)
- -
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- outgoing transfers that meet the query -
- - - -
-
- Type -
-
- -Array.<MoneroOutgoingTransfer> - - -
-
- - - - - - - - - - - - - -

(async) getOutputs(query) → {Array.<MoneroOutputWallet>}

- - - - - - -
-

Get outputs created from previous transactions that belong to the wallet -(i.e. that the wallet can spend one time). Outputs are part of -transactions which are stored in blocks on the blockchain.

- -

Results can be filtered by passing a query object. Outputs must -meet every criteria defined in the query in order to be returned. All -filtering is optional and no filtering is applied when not defined.

-
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
query - - -MoneroOutputQuery -| - -object - - - - configures the query (optional) -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
accountIndex - - -int - - - - get outputs associated with a specific account index (optional)
subaddressIndex - - -int - - - - get outputs associated with a specific subaddress index (optional)
subaddressIndices - - -Array.<int> - - - - get outputs associated with specific subaddress indices (optional)
amount - - -BigInteger - - - - get outputs with a specific amount (optional)
minAmount - - -BigInteger - - - - get outputs greater than or equal to a minimum amount (optional)
maxAmount - - -BigInteger - - - - get outputs less than or equal to a maximum amount (optional)
isSpent - - -boolean - - - - get outputs that are spent or not (optional)
keyImage - - -string -| - -MoneroKeyImage - - - - get output with a key image or which matches fields defined in a MoneroKeyImage (optional)
txQuery - - -MoneroTxQuery - - - - get outputs whose transaction meets this filter (optional)
- -
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the queried outputs -
- - - -
-
- Type -
-
- -Array.<MoneroOutputWallet> - - -
-
- - - - - - - - - - - - - -

(async) getPath() → {string}

- - - - - - -
- Get the wallet's path. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the path the wallet can be opened with -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) getPaymentUri(config) → {string}

- - - - - - -
- Creates a payment URI from a send configuration. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
config - - -MoneroTxConfig - - - - specifies configuration for a potential tx
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the payment uri -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) getPrivateSpendKey() → {string}

- - - - - - -
- Get the wallet's private spend key. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the wallet's private spend key -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) getPrivateViewKey() → {string}

- - - - - - -
- Get the wallet's private view key. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the wallet's private view key -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

getProcess()

- - - - - - -
- Get the internal process running monero-wallet-rpc. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the process running monero-wallet-rpc, undefined if not created from new process -
- - - - - - - - - - - - - - - -

(async) getReserveProofAccount(accountIdx, amount, message) → {string}

- - - - - - -
- Generate a signature to prove an available amount in an account. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
accountIdx - - -int - - - - account to prove ownership of the amount
amount - - -BigInteger - - - - minimum amount to prove as available in the account
message - - -string - - - - message to include with the signature to further authenticate the proof (optional)
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the reserve proof signature -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) getReserveProofWallet(message)

- - - - - - -
- Generate a signature to prove the entire balance of the wallet. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
message - - message included with the signature to further authenticate the proof (optional)
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the reserve proof signature -
- - - - - - - - - - - - - - - -

getRpcConnection() → {MoneroWalletRpc}

- - - - - - -
- Get the wallet's RPC connection. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the wallet's rpc connection -
- - - -
-
- Type -
-
- -MoneroWalletRpc - - -
-
- - - - - - - - - - - - - -

(async) getSeed() → {string}

- - - - - - -
- Get the wallet's mnemonic phrase or seed. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the wallet's mnemonic phrase or seed. -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) getSeedLanguage() → {string}

- - - - - - -
- Get the language of the wallet's mnemonic phrase or seed. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the language of the wallet's mnemonic phrase or seed. -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) getSeedLanguages() → {Array.<string>}

- - - - - - -
- Get a list of available languages for the wallet's seed. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the available languages for the wallet's seed. -
- - - -
-
- Type -
-
- -Array.<string> - - -
-
- - - - - - - - - - - - - -

(async) getSpendProof(txHash, message) → {string}

- - - - - - -
- Generate a signature to prove a spend. Unlike proving a transaction, it does not require the destination public address. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
txHash - - -string - - - - transaction to prove
message - - -string - - - - message to include with the signature to further authenticate the proof (optional)
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the transaction signature -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) getSubaddress(accountIdx, subaddressIdx) → {MoneroSubaddress}

- - - - - - -
- Get a subaddress. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
accountIdx - - -int - - - - index of the subaddress's account
subaddressIdx - - -int - - - - index of the subaddress within the account
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the retrieved subaddress -
- - - -
-
- Type -
-
- -MoneroSubaddress - - -
-
- - - - - - - - - - - - - -

(async) getSubaddresses(accountIdx, subaddressIndices) → {Array.<MoneroSubaddress>}

- - - - - - -
- Get subaddresses in an account. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
accountIdx - - -int - - - - account to get subaddresses within
subaddressIndices - - -Array.<int> - - - - indices of subaddresses to get (optional)
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the retrieved subaddresses -
- - - -
-
- Type -
-
- -Array.<MoneroSubaddress> - - -
-
- - - - - - - - - - - - - -

(async) getTransfers(query) → {Array.<MoneroTransfer>}

- - - - - - -
-

Get incoming and outgoing transfers to and from this wallet. An outgoing -transfer represents a total amount sent from one or more subaddresses -within an account to individual destination addresses, each with their -own amount. An incoming transfer represents a total amount received into -a subaddress within an account. Transfers belong to transactions which -are stored on the blockchain.

- -

Results can be filtered by passing a query object. Transfers must -meet every criteria defined in the query in order to be returned. All -criteria are optional and no filtering is applied when not defined.

-
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
query - - -MoneroTransferQuery -| - -object - - - - configures the query (optional) -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
isOutgoing - - -boolean - - - - get transfers that are outgoing or not (optional)
isIncoming - - -boolean - - - - get transfers that are incoming or not (optional)
address - - -string - - - - wallet's address that a transfer either originated from (if outgoing) or is destined for (if incoming) (optional)
accountIndex - - -int - - - - get transfers that either originated from (if outgoing) or are destined for (if incoming) a specific account index (optional)
subaddressIndex - - -int - - - - get transfers that either originated from (if outgoing) or are destined for (if incoming) a specific subaddress index (optional)
subaddressIndices - - -Array.<int> - - - - get transfers that either originated from (if outgoing) or are destined for (if incoming) specific subaddress indices (optional)
amount - - -BigInteger - - - - amount being transferred (optional)
destinations - - -Array.<MoneroDestination> - - - - individual destinations of an outgoing transfer, which is local wallet data and NOT recoverable from the blockchain (optional)
hasDestinations - - -boolean - - - - get transfers that have destinations or not (optional)
txQuery - - -MoneroTxQuery - - - - get transfers whose transaction meets this query (optional)
- -
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- wallet transfers that meet the query -
- - - -
-
- Type -
-
- -Array.<MoneroTransfer> - - -
-
- - - - - - - - - - - - - -

(async) getTx(txHash) → {MoneroTxWallet}

- - - - - - -
- Get a wallet transaction by hash. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
txHash - - -string - - - - hash of a transaction to get
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the identified transaction or undefined if not found -
- - - -
-
- Type -
-
- -MoneroTxWallet - - -
-
- - - - - - - - - - - - - -

(async) getTxKey(txHash) → {string}

- - - - - - -
- Get a transaction's secret key from its hash. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
txHash - - -string - - - - transaction's hash
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- - transaction's secret key -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) getTxNote(txHash) → {string}

- - - - - - -
- Get a transaction note. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
txHash - - -string - - - - transaction to get the note of
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the tx note -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) getTxNotes(txHashes) → {Array.<string>}

- - - - - - -
- Get notes for multiple transactions. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
txHashes - - -Array.<string> - - - - hashes of the transactions to get notes for
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- notes for the transactions -
- - - -
-
- Type -
-
- -Array.<string> - - -
-
- - - - - - - - - - - - - -

(async) getTxProof(txHash, address, message) → {string}

- - - - - - -
- Get a transaction signature to prove it. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
txHash - - -string - - - - transaction to prove
address - - -string - - - - destination public address of the transaction
message - - -string - - - - message to include with the signature to further authenticate the proof (optional)
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the transaction signature -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) getTxs(query) → {Array.<MoneroTxWallet>}

- - - - - - -
-

Get wallet transactions. Wallet transactions contain one or more -transfers that are either incoming or outgoing to the wallet.

- -

Results can be filtered by passing a query object. Transactions must -meet every criteria defined in the query in order to be returned. All -criteria are optional and no filtering is applied when not defined.

-
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
query - - -MoneroTxQuery -| - -Array.<string> -| - -object - - - - configures the query (optional) -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
isConfirmed - - -boolean - - - - get txs that are confirmed or not (optional)
inTxPool - - -boolean - - - - get txs that are in the tx pool or not (optional)
isRelayed - - -boolean - - - - get txs that are relayed or not (optional)
isFailed - - -boolean - - - - get txs that are failed or not (optional)
isMinerTx - - -boolean - - - - get miner txs or not (optional)
hash - - -string - - - - get a tx with the hash (optional)
hashes - - -Array.<string> - - - - get txs with the hashes (optional)
paymentId - - -string - - - - get transactions with the payment id (optional)
paymentIds - - -Array.<string> - - - - get transactions with the payment ids (optional)
hasPaymentId - - -boolean - - - - get transactions with a payment id or not (optional)
minHeight - - -int - - - - get txs with height >= the given height (optional)
maxHeight - - -int - - - - get txs with height <= the given height (optional)
isOutgoing - - -boolean - - - - get txs with an outgoing transfer or not (optional)
isIncoming - - -boolean - - - - get txs with an incoming transfer or not (optional)
transferQuery - - -MoneroTransferQuery - - - - get txs that have a transfer that meets this query (optional)
includeOutputs - - -boolean - - - - specifies that tx outputs should be returned with tx results (optional)
- -
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- wallet transactions per the configuration -
- - - -
-
- Type -
-
- -Array.<MoneroTxWallet> - - -
-
- - - - - - - - - - - - - -

(async) getUnlockedBalance(accountIdx, subaddressIdx) → {BigInteger}

- - - - - - -
- Get the unlocked balance of the wallet, account, or subaddress. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
accountIdx - - -int - - - - index of the account to get the unlocked balance of (optional)
subaddressIdx - - -int - - - - index of the subaddress to get the unlocked balance of (optional)
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the unlocked balance of the wallet, account, or subaddress -
- - - -
-
- Type -
-
- -BigInteger - - -
-
- - - - - - - - - - - - - -

(async) getVersion() → {MoneroVersion}

- - - - - - -
- Gets the version of the wallet. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the version of the wallet -
- - - -
-
- Type -
-
- -MoneroVersion - - -
-
- - - - - - - - - - - - - -

(async) importKeyImages(keyImages) → {MoneroKeyImageImportResult}

- - - - - - -
- Import signed key images and verify their spent status. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
keyImages - - -Array.<MoneroKeyImage> - - - - images to import and verify (requires hex and signature)
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- results of the import -
- - - -
-
- Type -
-
- -MoneroKeyImageImportResult - - -
-
- - - - - - - - - - - - - -

(async) importMultisigHex(multisigHexes) → {int}

- - - - - - -
- Import multisig info as hex from other participants. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
multisigHexes - - -Array.<string> - - - - multisig hex from each participant
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the number of outputs signed with the given multisig hex -
- - - -
-
- Type -
-
- -int - - -
-
- - - - - - - - - - - - - -

(async) importOutputs(outputsHex) → {int}

- - - - - - -
- Import outputs in hex format. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
outputsHex - - -string - - - - outputs in hex format
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the number of outputs imported -
- - - -
-
- Type -
-
- -int - - -
-
- - - - - - - - - - - - - -

(async) isClosed() → {boolean}

- - - - - - -
- Indicates if this wallet is closed or not. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if the wallet is closed, false otherwise -
- - - -
-
- Type -
-
- -boolean - - -
-
- - - - - - - - - - - - - -

(async) isConnectedToDaemon() → {boolean}

- - - - - - -
- Indicates if the wallet is connected to daemon. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if the wallet is connected to a daemon, false otherwise -
- - - -
-
- Type -
-
- -boolean - - -
-
- - - - - - - - - - - - - -

(async) isMultisigImportNeeded() → {boolean}

- - - - - - -
- Indicates if importing multisig data is needed for returning a correct balance. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if importing multisig data is needed for returning a correct balance, false otherwise -
- - - -
-
- Type -
-
- -boolean - - -
-
- - - - - - - - - - - - - -

(async) isOutputFrozen(keyImage) → {boolean}

- - - - - - -
- Check if an output is frozen. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
keyImage - - -string - - - - key image of the output to check if frozen
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if the output is frozen, false otherwise -
- - - -
-
- Type -
-
- -boolean - - -
-
- - - - - - - - - - - - - -

(async) isViewOnly() → {bool}

- - - - - - -
- Indicates if the wallet is view-only, meaning it does not have the private -spend key and can therefore only observe incoming outputs. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if the wallet is view-only, false otherwise -
- - - -
-
- Type -
-
- -bool - - -
-
- - - - - - - - - - - - - -

(async) makeMultisig(multisigHexes, threshold, password) → {string}

- - - - - - -
- Make this wallet multisig by importing multisig hex from participants. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
multisigHexes - - -Array.<String> - - - - multisig hex from each participant
threshold - - -int - - - - number of signatures needed to sign transfers
password - - -string - - - - wallet password
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- this wallet's multisig hex to share with participants -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) openWallet(pathOrConfig, password) → {MoneroWalletRpc}

- - - - - - -
-

Open an existing wallet on the monero-wallet-rpc server.

- -

Example:

- - -let wallet = new MoneroWalletRpc("http://localhost:38084", "rpc_user", "abc123");
-await wallet.openWallet("mywallet1", "supersecretpassword");
-await wallet.openWallet({
-   path: "mywallet2",
-   password: "supersecretpassword",
-   serverUri: "http://locahost:38081",
-   rejectUnauthorized: false
-});
-
-

- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
pathOrConfig - - -string -| - -object -| - -MoneroWalletConfig - - - - the wallet's name or configuration to open -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
path - - -string - - - - path of the wallet to create (optional, in-memory wallet if not given)
password - - -string - - - - password of the wallet to create
serverUri - - -string - - - - uri of a daemon to use (optional, monero-wallet-rpc usually started with daemon config)
serverUsername - - -string - - - - username to authenticate with the daemon (optional)
serverPassword - - -string - - - - password to authenticate with the daemon (optional)
rejectUnauthorized - - -boolean - - - - reject self-signed server certificates if true (defaults to true)
server - - -MoneroRpcConnection -| - -object - - - - MoneroRpcConnection or equivalent JS object providing daemon configuration (optional)
- -
password - - -string - - - - is the wallet's password
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- this wallet client -
- - - -
-
- Type -
-
- -MoneroWalletRpc - - -
-
- - - - - - - - - - - - - -

(async) parsePaymentUri(uri) → {MoneroTxConfig}

- - - - - - -
- Parses a payment URI to a tx config. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
uri - - -string - - - - payment uri to parse
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the send configuration parsed from the uri -
- - - -
-
- Type -
-
- -MoneroTxConfig - - -
-
- - - - - - - - - - - - - -

(async) prepareMultisig() → {string}

- - - - - - -
- Get multisig info as hex to share with participants to begin creating a -multisig wallet. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- this wallet's multisig hex to share with participants -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) relayTx(txOrMetadata) → {string}

- - - - - - -
- Relay a previously created transaction. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
txOrMetadata - - -MoneroTxWallet -| - -string - - - - transaction or its metadata to relay
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the hash of the relayed tx -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) relayTxs(txsOrMetadatas) → {Array.<string>}

- - - - - - -
- Relay previously created transactions. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
txsOrMetadatas - - -Array.<MoneroTxWallet> -| - -Array.<string> - - - - transactions or their metadata to relay
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the hashes of the relayed txs -
- - - -
-
- Type -
-
- -Array.<string> - - -
-
- - - - - - - - - - - - - -

(async) removeListener(listener)

- - - - - - -
- Unregister a listener to receive wallet notifications. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
listener - - -MoneroWalletListener - - - - listener to unregister
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) rescanBlockchain()

- - - - - - -
-

Rescan the blockchain from scratch, losing any information which cannot be recovered from -the blockchain itself.

- -

WARNING: This method discards local wallet data like destination addresses, tx secret keys, -tx notes, etc.

-
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) rescanSpent()

- - - - - - -
-

Rescan the blockchain for spent outputs.

- -

Note: this can only be called with a trusted daemon.

- -

Example use case: peer multisig hex is import when connected to an untrusted daemon, -so the wallet will not rescan spent outputs. Then the wallet connects to a trusted -daemon. This method should be manually invoked to rescan outputs.

-
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) save()

- - - - - - -
- Save the wallet at its current path. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) scanTxs(txHashes)

- - - - - - -
- Scan transactions by their hash/id. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
txHashes - - -Array.<string> - - - - tx hashes to scan
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) setAccountTagLabel(tag, label)

- - - - - - -
- Sets a human-readable description for a tag. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
tag - - -string - - - - tag to set a description for
label - - -string - - - - label to set for the tag
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) setAttribute(key, val)

- - - - - - -
- Set an arbitrary attribute. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
key - - -string - - - - attribute key
val - - -string - - - - attribute value
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) setDaemonConnection(uriOrConnection, isTrusted, sslOptions)

- - - - - - -
- Set the wallet's daemon connection. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
uriOrConnection - - -string -| - -MoneroRpcConnection - - - - the daemon's URI or connection (defaults to offline)
isTrusted - - -boolean - - - - indicates if the daemon in trusted
sslOptions - - -SslOptions - - - - custom SSL configuration
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) setSubaddressLabel(accountIdx, subaddressIdx, label)

- - - - - - -
- Set a subaddress label. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
accountIdx - - -number - - - - index of the account to set the label for
subaddressIdx - - -number - - - - index of the subaddress to set the label for
label - - -string - - - - the label to set
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) setTxNote(txHash, note)

- - - - - - -
- Set a note for a specific transaction. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
txHash - - -string - - - - hash of the transaction to set a note for
note - - -string - - - - the transaction note
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) setTxNotes(txHashes, notes)

- - - - - - -
- Set notes for multiple transactions. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
txHashes - - -Array.<string> - - - - transactions to set notes for
notes - - -Array.<string> - - - - notes to set for the transactions
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) signMessage(message, signatureType, accountIdx, subaddressIdx) → {string}

- - - - - - -
- Sign a message. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
message - - -string - - - - the message to sign
signatureType - - -MoneroMessageSignatureType - - - - sign with spend key or view key (default spend key)
accountIdx - - -int - - - - the account index of the message signature (default 0)
subaddressIdx - - -int - - - - the subaddress index of the message signature (default 0)
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the signature -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) signMultisigTxHex(multisigTxHex) → {MoneroMultisigSignResult}

- - - - - - -
- Sign multisig transactions from a multisig wallet. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
multisigTxHex - - -string - - - - unsigned multisig transactions as hex
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the result of signing the multisig transactions -
- - - -
-
- Type -
-
- -MoneroMultisigSignResult - - -
-
- - - - - - - - - - - - - -

(async) signTxs(unsignedTxHex) → {string}

- - - - - - -
- Sign unsigned transactions from a view-only wallet. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
unsignedTxHex - - -string - - - - unsigned transaction hex from when the transactions were created
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the signed transaction hex -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

(async) startMining(numThreads, backgroundMining, ignoreBattery)

- - - - - - -
- Start mining. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
numThreads - - -int - - - - number of threads created for mining (optional)
backgroundMining - - -boolean - - - - specifies if mining should occur in the background (optional)
ignoreBattery - - -boolean - - - - specifies if the battery should be ignored for mining (optional)
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) startSyncing(syncPeriodInMs)

- - - - - - -
- Start background synchronizing with a maximum period between syncs. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
syncPeriodInMs - - -int - - - - maximum period between syncs in milliseconds (default is wallet-specific)
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) stop()

- - - - - - -
- Save and close the current wallet and stop the RPC server. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) stopMining()

- - - - - - -
- Stop mining. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) stopProcess(force) → {Promise.<(number|undefined)>}

- - - - - - -
- Stop the internal process running monero-wallet-rpc, if applicable. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
force - - -boolean - - - - specifies if the process should be destroyed forcibly
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the exit code from stopping the process -
- - - -
-
- Type -
-
- -Promise.<(number|undefined)> - - -
-
- - - - - - - - - - - - - -

(async) stopSyncing()

- - - - - - -
- Stop synchronizing the wallet with the daemon. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) submitMultisigTxHex(signedMultisigTxHex) → {Array.<string>}

- - - - - - -
- Submit signed multisig transactions from a multisig wallet. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
signedMultisigTxHex - - -string - - - - signed multisig hex returned from signMultisigTxHex()
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the resulting transaction hashes -
- - - -
-
- Type -
-
- -Array.<string> - - -
-
- - - - - - - - - - - - - -

(async) submitTxs(signedTxHex) → {Array.<string>}

- - - - - - -
- Submit signed transactions from a view-only wallet. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
signedTxHex - - -string - - - - signed transaction hex from signTxs()
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the resulting transaction hashes -
- - - -
-
- Type -
-
- -Array.<string> - - -
-
- - - - - - - - - - - - - -

(async) sweepDust(relay) → {Array.<MoneroTxWallet>}

- - - - - - -
-

Sweep all unmixable dust outputs back to the wallet to make them easier to spend and mix.

- -

NOTE: Dust only exists pre RCT, so this method will throw "no dust to sweep" on new wallets.

-
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
relay - - -boolean - - - - specifies if the resulting transaction should be relayed (default false)
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the created transactions -
- - - -
-
- Type -
-
- -Array.<MoneroTxWallet> - - -
-
- - - - - - - - - - - - - -

(async) sweepOutput(config) → {MoneroTxWallet}

- - - - - - -
- Sweep an output by key image. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
config - - -MoneroTxConfig - - - - configures the transaction to create (required) -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
address - - -string - - - - single destination address (required)
keyImage - - -string - - - - key image to sweep (required)
relay - - -boolean - - - - relay the transaction to peers to commit to the blockchain (default false)
unlockTime - - -BigInteger -| - -string - - - - minimum height or timestamp for the transaction to unlock (default 0)
priority - - -MoneroTxPriority - - - - transaction priority (default MoneroTxPriority.NORMAL)
- -
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the created transaction -
- - - -
-
- Type -
-
- -MoneroTxWallet - - -
-
- - - - - - - - - - - - - -

(async) sweepUnlocked(config) → {Array.<MoneroTxWallet>}

- - - - - - -
- Sweep all unlocked funds according to the given configuration. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
config - - -MoneroTxConfig -| - -object - - - - configures the transactions to create (required) -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
address - - -string - - - - single destination address (required)
accountIndex - - -int - - - - source account index to sweep from (optional, defaults to all accounts)
subaddressIndex - - -int - - - - source subaddress index to sweep from (optional, defaults to all subaddresses)
subaddressIndices - - -Array.<int> - - - - source subaddress indices to sweep from (optional)
relay - - -boolean - - - - relay the transactions to peers to commit to the blockchain (default false)
priority - - -MoneroTxPriority - - - - transaction priority (default MoneroTxPriority.NORMAL)
unlockTime - - -BigInteger -| - -string - - - - minimum height or timestamp for the transactions to unlock (default 0)
sweepEachSubaddress - - -boolean - - - - sweep each subaddress individually if true (default false)
- -
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the created transactions -
- - - -
-
- Type -
-
- -Array.<MoneroTxWallet> - - -
-
- - - - - - - - - - - - - -

(async) sync(listenerOrStartHeight, startHeight)

- - - - - - -
- Synchronize the wallet with the daemon as a one-time synchronous process. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
listenerOrStartHeight - - -MoneroWalletListener -| - -number - - - - listener xor start height (defaults to no sync listener, the last synced block)
startHeight - - -number - - - - startHeight if not given in first arg (defaults to last synced block)
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) tagAccounts(tag, accountIndices)

- - - - - - -
- Tag accounts. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
tag - - -string - - - - tag to apply to the specified accounts
accountIndices - - -Array.<int> - - - - indices of the accounts to tag
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) thawOutput(keyImage)

- - - - - - -
- Thaw a frozen output. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
keyImage - - -string - - - - key image of the output to thaw
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) untagAccounts(accountIndices)

- - - - - - -
- Untag accounts. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
accountIndices - - -Array.<int> - - - - indices of the accounts to untag
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) verifyMessage(message, address, signature) → {MoneroMessageSignatureResult}

- - - - - - -
- Verify a signature on a message. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
message - - -string - - - - signed message
address - - -string - - - - signing address
signature - - -string - - - - signature
- - - - - - -
- - - - - - - - - - - - -
Implements:
-
- - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if the signature is good, false otherwise -
- - - -
-
- Type -
-
- -MoneroMessageSignatureResult - - -
-
- - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/SslOptions.html b/docs/SslOptions.html deleted file mode 100644 index d20fe6b26..000000000 --- a/docs/SslOptions.html +++ /dev/null @@ -1,1014 +0,0 @@ - - - - - JSDoc: Class: SslOptions - - - - - - - - - - -
- -

Class: SslOptions

- - - - - - -
- -
- -

SslOptions()

- -
SSL options for remote endpoints.
- - -
- -
-
- - - - -

Constructor

- - - -

new SslOptions()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

getAllowAnyCert()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getAllowedFingerprints()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getCertificateAuthorityFile()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getCertificatePath()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getPrivateKeyPath()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setAllowAnyCert()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setAllowedFingerprints()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setCertificateAuthorityFile()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setCertificatePath()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

setPrivateKeyPath()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/TaskLooper.html b/docs/TaskLooper.html deleted file mode 100644 index ce47f1d6a..000000000 --- a/docs/TaskLooper.html +++ /dev/null @@ -1,831 +0,0 @@ - - - - - JSDoc: Class: TaskLooper - - - - - - - - - - -
- -

Class: TaskLooper

- - - - - - -
- -
- -

TaskLooper(task)

- -
Run a task in a fixed period loop.
- - -
- -
-
- - - - -

Constructor

- - - -

new TaskLooper(task)

- - - - - - -
- Build the looper with a function to invoke on a fixed period loop. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
task - - -function - - - - the task function to invoke
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

getTask() → {function}

- - - - - - -
- Get the task function to invoke on a fixed period loop. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the task function -
- - - -
-
- Type -
-
- -function - - -
-
- - - - - - - - - - - - - -

isStarted() → {boolean}

- - - - - - -
- Indicates if looping. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- true if looping, false otherwise -
- - - -
-
- Type -
-
- -boolean - - -
-
- - - - - - - - - - - - - -

setPeriodInMs(periodInMs)

- - - - - - -
- Set the loop period in milliseconds. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
periodInMs - - -int - - - - the loop period in milliseconds
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

start(periodInMs) → {TaskLooper}

- - - - - - -
- Start the task loop. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
periodInMs - - -int - - - - the loop period in milliseconds
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- this class for chaining -
- - - -
-
- Type -
-
- -TaskLooper - - -
-
- - - - - - - - - - - - - -

stop()

- - - - - - -
- Stop the task loop. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/ThreadPool.html b/docs/ThreadPool.html deleted file mode 100644 index d85503b53..000000000 --- a/docs/ThreadPool.html +++ /dev/null @@ -1,496 +0,0 @@ - - - - - JSDoc: Class: ThreadPool - - - - - - - - - - -
- -

Class: ThreadPool

- - - - - - -
- -
- -

ThreadPool(maxConcurrency)

- -
Simple thread pool using the async library.
- - -
- -
-
- - - - -

Constructor

- - - -

new ThreadPool(maxConcurrency)

- - - - - - -
- Construct the thread pool. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
maxConcurrency - - -int - - - - maximum number of threads in the pool (default 1)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

(async) awaitAll() → {Promise}

- - - - - - -
- Await all functions to complete. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- resolves when all functions complete -
- - - -
-
- Type -
-
- -Promise - - -
-
- - - - - - - - - - - - - -

(async) submit(asyncFn) → {Promise}

- - - - - - -
- Submit an asynchronous function to run using the thread pool. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
asyncFn - - -function - - - - asynchronous function to run with the thread pool
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- resolves when the function completes execution -
- - - -
-
- Type -
-
- -Promise - - -
-
- - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/fonts/OpenSans-Bold-webfont.eot b/docs/fonts/OpenSans-Bold-webfont.eot deleted file mode 100644 index 5d20d9163..000000000 Binary files a/docs/fonts/OpenSans-Bold-webfont.eot and /dev/null differ diff --git a/docs/fonts/OpenSans-Bold-webfont.svg b/docs/fonts/OpenSans-Bold-webfont.svg deleted file mode 100644 index 3ed7be4bc..000000000 --- a/docs/fonts/OpenSans-Bold-webfont.svg +++ /dev/null @@ -1,1830 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/fonts/OpenSans-Bold-webfont.woff b/docs/fonts/OpenSans-Bold-webfont.woff deleted file mode 100644 index 1205787b0..000000000 Binary files a/docs/fonts/OpenSans-Bold-webfont.woff and /dev/null differ diff --git a/docs/fonts/OpenSans-BoldItalic-webfont.eot b/docs/fonts/OpenSans-BoldItalic-webfont.eot deleted file mode 100644 index 1f639a15f..000000000 Binary files a/docs/fonts/OpenSans-BoldItalic-webfont.eot and /dev/null differ diff --git a/docs/fonts/OpenSans-BoldItalic-webfont.svg b/docs/fonts/OpenSans-BoldItalic-webfont.svg deleted file mode 100644 index 6a2607b9d..000000000 --- a/docs/fonts/OpenSans-BoldItalic-webfont.svg +++ /dev/null @@ -1,1830 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/fonts/OpenSans-BoldItalic-webfont.woff b/docs/fonts/OpenSans-BoldItalic-webfont.woff deleted file mode 100644 index ed760c062..000000000 Binary files a/docs/fonts/OpenSans-BoldItalic-webfont.woff and /dev/null differ diff --git a/docs/fonts/OpenSans-Italic-webfont.eot b/docs/fonts/OpenSans-Italic-webfont.eot deleted file mode 100644 index 0c8a0ae06..000000000 Binary files a/docs/fonts/OpenSans-Italic-webfont.eot and /dev/null differ diff --git a/docs/fonts/OpenSans-Italic-webfont.svg b/docs/fonts/OpenSans-Italic-webfont.svg deleted file mode 100644 index e1075dcc2..000000000 --- a/docs/fonts/OpenSans-Italic-webfont.svg +++ /dev/null @@ -1,1830 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/fonts/OpenSans-Italic-webfont.woff b/docs/fonts/OpenSans-Italic-webfont.woff deleted file mode 100644 index ff652e643..000000000 Binary files a/docs/fonts/OpenSans-Italic-webfont.woff and /dev/null differ diff --git a/docs/fonts/OpenSans-Light-webfont.eot b/docs/fonts/OpenSans-Light-webfont.eot deleted file mode 100644 index 14868406a..000000000 Binary files a/docs/fonts/OpenSans-Light-webfont.eot and /dev/null differ diff --git a/docs/fonts/OpenSans-Light-webfont.svg b/docs/fonts/OpenSans-Light-webfont.svg deleted file mode 100644 index 11a472ca8..000000000 --- a/docs/fonts/OpenSans-Light-webfont.svg +++ /dev/null @@ -1,1831 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/fonts/OpenSans-Light-webfont.woff b/docs/fonts/OpenSans-Light-webfont.woff deleted file mode 100644 index e78607481..000000000 Binary files a/docs/fonts/OpenSans-Light-webfont.woff and /dev/null differ diff --git a/docs/fonts/OpenSans-LightItalic-webfont.eot b/docs/fonts/OpenSans-LightItalic-webfont.eot deleted file mode 100644 index 8f445929f..000000000 Binary files a/docs/fonts/OpenSans-LightItalic-webfont.eot and /dev/null differ diff --git a/docs/fonts/OpenSans-LightItalic-webfont.svg b/docs/fonts/OpenSans-LightItalic-webfont.svg deleted file mode 100644 index 431d7e354..000000000 --- a/docs/fonts/OpenSans-LightItalic-webfont.svg +++ /dev/null @@ -1,1835 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/fonts/OpenSans-LightItalic-webfont.woff b/docs/fonts/OpenSans-LightItalic-webfont.woff deleted file mode 100644 index 43e8b9e6c..000000000 Binary files a/docs/fonts/OpenSans-LightItalic-webfont.woff and /dev/null differ diff --git a/docs/fonts/OpenSans-Regular-webfont.eot b/docs/fonts/OpenSans-Regular-webfont.eot deleted file mode 100644 index 6bbc3cf58..000000000 Binary files a/docs/fonts/OpenSans-Regular-webfont.eot and /dev/null differ diff --git a/docs/fonts/OpenSans-Regular-webfont.svg b/docs/fonts/OpenSans-Regular-webfont.svg deleted file mode 100644 index 25a395234..000000000 --- a/docs/fonts/OpenSans-Regular-webfont.svg +++ /dev/null @@ -1,1831 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/fonts/OpenSans-Regular-webfont.woff b/docs/fonts/OpenSans-Regular-webfont.woff deleted file mode 100644 index e231183dc..000000000 Binary files a/docs/fonts/OpenSans-Regular-webfont.woff and /dev/null differ diff --git a/docs/global.html b/docs/global.html deleted file mode 100644 index b4fb46cd5..000000000 --- a/docs/global.html +++ /dev/null @@ -1,2696 +0,0 @@ - - - - - JSDoc: Global - - - - - - - - - - -
- -

Global

- - - - - - -
- -
- -

- - -
- -
-
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

connectToDaemonRpc(uriOrConfig, username, password, rejectUnauthorized, pollInterval, proxyToWorker) → {MoneroDaemonRpc}

- - - - - - -
-

Create a client connected to monerod.

- -

Examples:

- - -let daemon = await monerojs.connectToDaemonRpc("http://localhost:38081", "superuser", "abctesting123");

- -let daemon = await monerojs.connectToDaemonRpc({
-   uri: "http://localhost:38081",
-   username: "superuser",
-   password: "abctesting123"
-}); -
-

- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
uriOrConfig - - -string -| - -object -| - -MoneroRpcConnection - - - - uri of monerod or JS config object or MoneroRpcConnection -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
uri - - -string - - - - uri of monerod
username - - -string - - - - username to authenticate with monerod (optional)
password - - -string - - - - password to authenticate with monerod (optional)
rejectUnauthorized - - -boolean - - - - rejects self-signed certificates if true (default true)
pollInterval - - -number - - - - poll interval to query for updates in ms (default 5000)
proxyToWorker - - -boolean - - - - run the daemon client in a web worker if true (default true)
- -
username - - -string - - - - username to authenticate with monerod (optional)
password - - -string - - - - password to authenticate with monerod (optional)
rejectUnauthorized - - -boolean - - - - rejects self-signed certificates if true (default true)
pollInterval - - -number - - - - poll interval to query for updates in ms (default 5000)
proxyToWorker - - -boolean - - - - runs the daemon client in a web worker if true (default true)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the daemon RPC client -
- - - -
-
- Type -
-
- -MoneroDaemonRpc - - -
-
- - - - - - - - - - - - - -

connectToWalletRpc(uriOrConfig, username, password, rejectUnauthorized) → {MoneroWalletRpc}

- - - - - - -
-

Create a client connected to monero-wallet-rpc.

- -

Examples:

- - -let walletRpc = await monerojs.connectToWalletRpc("http://localhost:38081", "superuser", "abctesting123");

- -let walletRpc = await monerojs.connectToWalletRpc({
-   uri: "http://localhost:38081",
-   username: "superuser",
-   password: "abctesting123",
-   rejectUnauthorized: false // e.g. local development
-});

- -// connect to monero-wallet-rpc running as internal process
-let walletRpc = await monerojs.connectToWalletRpc([
-   "/path/to/monero-wallet-rpc",
-   "--stagenet",
-   "--daemon-address", "http://localhost:38081",
-   "--daemon-login", "superuser:abctesting123",
-   "--rpc-bind-port", "38085",
-   "--rpc-login", "rpc_user:abc123",
-   "--wallet-dir", "/path/to/wallets", // defaults to monero-wallet-rpc directory
-   "--rpc-access-control-origins", "http://localhost:8080"
-  ]); - -
-
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
uriOrConfig - - -string -| - -Array.<string> -| - -object -| - -MoneroRpcConnection - - - - uri of monero-wallet-rpc or terminal parameters or JS config object or MoneroRpcConnection -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
uri - - -string - - - - uri of monero-wallet-rpc
username - - -string - - - - username to authenticate with monero-wallet-rpc (optional)
password - - -string - - - - password to authenticate with monero-wallet-rpc (optional)
rejectUnauthorized - - -boolean - - - - rejects self-signed certificates if true (default true)
- -
username - - -string - - - - username to authenticate with monero-wallet-rpc (optional)
password - - -string - - - - password to authenticate with monero-wallet-rpc (optional)
rejectUnauthorized - - -boolean - - - - rejects self-signed certificates if true (default true)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the wallet RPC client -
- - - -
-
- Type -
-
- -MoneroWalletRpc - - -
-
- - - - - - - - - - - - - -

createWalletFull(config) → {MoneroWalletFull}

- - - - - - -
-

Create a Monero wallet using fully client-side WebAssembly bindings to monero-project's wallet2 in C++.

- -

Example:

- - -let wallet = await monerojs.createWalletFull({
-   path: "./test_wallets/wallet1", // leave blank for in-memory wallet
-   password: "supersecretpassword",
-   networkType: MoneroNetworkType.STAGENET,
-   seed: "coexist igloo pamphlet lagoon...",
-   restoreHeight: 1543218,
-   server: new monerojs.MoneroRpcConnection("http://localhost:38081", "daemon_user", "daemon_password_123"),
-}); -
-
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
config - - -object -| - -MoneroWalletConfig - - - - MoneroWalletConfig or equivalent config object -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
path - - -string - - - - path of the wallet to create (optional, in-memory wallet if not given)
password - - -string - - - - password of the wallet to create
networkType - - -string -| - -number - - - - network type of the wallet to create (one of "mainnet", "testnet", "stagenet" or MoneroNetworkType.MAINNET|TESTNET|STAGENET)
seed - - -string - - - - seed of the wallet to create (optional, random wallet created if neither seed nor keys given)
seedOffset - - -string - - - - the offset used to derive a new seed from the given seed to recover a secret wallet from the seed phrase
primaryAddress - - -string - - - - primary address of the wallet to create (only provide if restoring from keys)
privateViewKey - - -string - - - - private view key of the wallet to create (optional)
privateSpendKey - - -string - - - - private spend key of the wallet to create (optional)
restoreHeight - - -number - - - - block height to start scanning frsom (defaults to 0 unless generating random wallet)
language - - -string - - - - language of the wallet's seed (defaults to "English" or auto-detected)
accountLookahead - - -number - - - - number of accounts to scan (optional)
subaddressLookahead - - -number - - - - number of subaddresses to scan per account (optional)
server - - -MoneroRpcConnection -| - -object - - - - MoneroRpcConnection or equivalent JS object providing daemon configuration (optional)
serverUri - - -string - - - - uri of the wallet's daemon (optional)
serverUsername - - -string - - - - username to authenticate with the daemon (optional)
serverPassword - - -string - - - - password to authenticate with the daemon (optional)
rejectUnauthorized - - -boolean - - - - reject self-signed server certificates if true (defaults to true)
proxyToWorker - - -boolean - - - - proxies wallet operations to a web worker in order to not block the main thread (default true)
fs - - -fs - - - - Node.js compatible file system to use (defaults to disk or in-memory FS if browser)
- -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the created wallet -
- - - -
-
- Type -
-
- -MoneroWalletFull - - -
-
- - - - - - - - - - - - - -

createWalletKeys(config) → {MoneroWalletKeys}

- - - - - - -
-

Create a wallet using WebAssembly bindings to monero-project.

- -

Example:

- - -let wallet = await monerojs.createWalletKeys({
-   password: "abc123",
-   networkType: MoneroNetworkType.STAGENET,
-   seed: "coexist igloo pamphlet lagoon..."
-}); -
-
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
config - - -MoneroWalletConfig -| - -object - - - - MoneroWalletConfig or equivalent config object -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
networkType - - -string -| - -number - - - - network type of the wallet to create (one of "mainnet", "testnet", "stagenet" or MoneroNetworkType.MAINNET|TESTNET|STAGENET)
seed - - -string - - - - seed of the wallet to create (optional, random wallet created if neither seed nor keys given)
seedOffset - - -string - - - - the offset used to derive a new seed from the given seed to recover a secret wallet from the seed phrase
primaryAddress - - -string - - - - primary address of the wallet to create (only provide if restoring from keys)
privateViewKey - - -string - - - - private view key of the wallet to create (optional)
privateSpendKey - - -string - - - - private spend key of the wallet to create (optional)
language - - -string - - - - language of the wallet's seed phrase (defaults to "English" or auto-detected)
- -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the created wallet -
- - - -
-
- Type -
-
- -MoneroWalletKeys - - -
-
- - - - - - - - - - - - - -

getVersion() → {string}

- - - - - - -
-

Get the version of the monero-javascript library.

-

- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the version of this monero-javascript library -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

openWalletFull(configOrPath, password, networkType, daemonUriOrConnection, proxyToWorker, fs) → {MoneroWalletFull}

- - - - - - -
-

Open an existing Monero wallet using fully client-side WebAssembly bindings to monero-project's wallet2 in C++.

- -

Examples:

- - -let wallet1 = await monerojs.openWalletFull(
-   "./wallets/wallet1",
-   "supersecretpassword",
-   MoneroNetworkType.STAGENET,
-   "http://localhost:38081" // daemon uri
-);

- -let wallet2 = await monerojs.openWalletFull({
-   path: "./wallets/wallet2",
-   password: "supersecretpassword",
-   networkType: MoneroNetworkType.STAGENET,
-   serverUri: "http://localhost:38081", // daemon configuration
-   serverUsername: "superuser",
-   serverPassword: "abctesting123"
-}); -
-

- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
configOrPath - - -MoneroWalletConfig -| - -object -| - -string - - - - MoneroWalletConfig or equivalent config object or a path to a wallet to open -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
path - - -string - - - - path of the wallet to open (optional if 'keysData' provided)
password - - -string - - - - password of the wallet to open
networkType - - -string -| - -number - - - - network type of the wallet to open (one of "mainnet", "testnet", "stagenet" or MoneroNetworkType.MAINNET|TESTNET|STAGENET)
keysData - - -Uint8Array - - - - wallet keys data to open (optional if path provided)
cacheData - - -Uint8Array - - - - wallet cache data to open (optional)
server - - -MoneroRpcConnection -| - -object - - - - MoneroRpcConnection or equivalent JS object configuring the daemon connection (optional)
serverUri - - -string - - - - uri of the wallet's daemon (optional)
serverUsername - - -string - - - - username to authenticate with the daemon (optional)
serverPassword - - -string - - - - password to authenticate with the daemon (optional)
rejectUnauthorized - - -boolean - - - - reject self-signed server certificates if true (defaults to true)
proxyToWorker - - -boolean - - - - proxies wallet operations to a web worker in order to not block the main thread (default true)
fs - - -fs - - - - Node.js compatible file system to use (defaults to disk or in-memory FS if browser)
- -
password - - -string - - - - password of the wallet to open
networkType - - -string -| - -number - - - - network type of the wallet to open
daemonUriOrConnection - - -string -| - -MoneroRpcConnection - - - - daemon URI or MoneroRpcConnection
proxyToWorker - - -boolean - - - - proxies wallet operations to a web worker in order to not block the main thread (default true)
fs - - -fs - - - - Node.js compatible file system to use (defaults to disk or in-memory FS if browser)
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- the opened wallet -
- - - -
-
- Type -
-
- -MoneroWalletFull - - -
-
- - - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/index.html b/docs/index.html deleted file mode 100644 index e9b364665..000000000 --- a/docs/index.html +++ /dev/null @@ -1,65 +0,0 @@ - - - - - JSDoc: Home - - - - - - - - - - -
- -

Home

- - - - - - - - -

- - - - - - - - - - - - - - - - - - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/index.js.html b/docs/index.js.html deleted file mode 100644 index 294e603e9..000000000 --- a/docs/index.js.html +++ /dev/null @@ -1,338 +0,0 @@ - - - - - JSDoc: Source: index.js - - - - - - - - - - -
- -

Source: index.js

- - - - - - -
-
-
'use strict'
-
-/**
- * Export all library models.
- * 
- * See the full model specification: http://moneroecosystem.org/monero-java/monero-spec.pdf
- */
-module.exports = {};
-
-// export common models
-module.exports.GenUtils = require("./src/main/js/common/GenUtils");
-module.exports.BigInteger = require("./src/main/js/common/biginteger").BigInteger;
-module.exports.Filter = require("./src/main/js/common/Filter");
-module.exports.MoneroError = require("./src/main/js/common/MoneroError");
-module.exports.HttpClient = require("./src/main/js/common/HttpClient");
-module.exports.LibraryUtils = require("./src/main/js/common/LibraryUtils");
-module.exports.MoneroRpcConnection = require("./src/main/js/common/MoneroRpcConnection");
-module.exports.MoneroRpcError = require("./src/main/js/common/MoneroRpcError");
-module.exports.SslOptions = require("./src/main/js/common/SslOptions");
-module.exports.TaskLooper = require("./src/main/js/common/TaskLooper");
-module.exports.ThreadPool = require("./src/main/js/common/ThreadPool");
-
-// export daemon models
-module.exports.ConnectionType = require("./src/main/js/daemon/model/ConnectionType");
-module.exports.MoneroAltChain = require("./src/main/js/daemon/model/MoneroAltChain");
-module.exports.MoneroBan = require("./src/main/js/daemon/model/MoneroBan");
-module.exports.MoneroBlockHeader = require("./src/main/js/daemon/model/MoneroBlockHeader");
-module.exports.MoneroBlock = require("./src/main/js/daemon/model/MoneroBlock");
-module.exports.MoneroBlockTemplate = require("./src/main/js/daemon/model/MoneroBlockTemplate");
-module.exports.MoneroConnectionSpan = require("./src/main/js/daemon/model/MoneroConnectionSpan");
-module.exports.MoneroDaemonInfo = require("./src/main/js/daemon/model/MoneroDaemonInfo");
-module.exports.MoneroDaemonListener = require("./src/main/js/daemon/model/MoneroDaemonListener");
-module.exports.MoneroDaemonSyncInfo = require("./src/main/js/daemon/model/MoneroDaemonSyncInfo");
-module.exports.MoneroDaemonUpdateCheckResult = require("./src/main/js/daemon/model/MoneroDaemonUpdateCheckResult");
-module.exports.MoneroDaemonUpdateDownloadResult = require("./src/main/js/daemon/model/MoneroDaemonUpdateDownloadResult");
-module.exports.MoneroFeeEstimate = require("./src/main/js/daemon/model/MoneroFeeEstimate");
-module.exports.MoneroHardForkInfo = require("./src/main/js/daemon/model/MoneroHardForkInfo");
-module.exports.MoneroKeyImage = require("./src/main/js/daemon/model/MoneroKeyImage");
-module.exports.MoneroKeyImageSpentStatus = require("./src/main/js/daemon/model/MoneroKeyImageSpentStatus");
-module.exports.MoneroMinerTxSum = require("./src/main/js/daemon/model/MoneroMinerTxSum");
-module.exports.MoneroMiningStatus = require("./src/main/js/daemon/model/MoneroMiningStatus");
-module.exports.MoneroNetworkType = require("./src/main/js/daemon/model/MoneroNetworkType");
-module.exports.MoneroOutput = require("./src/main/js/daemon/model/MoneroOutput");
-module.exports.MoneroOutputHistogramEntry = require("./src/main/js/daemon/model/MoneroOutputHistogramEntry");
-module.exports.MoneroPruneResult = require("./src/main/js/daemon/model/MoneroPruneResult");
-module.exports.MoneroSubmitTxResult = require("./src/main/js/daemon/model/MoneroSubmitTxResult");
-module.exports.MoneroTx = require("./src/main/js/daemon/model/MoneroTx");
-module.exports.MoneroTxPoolStats = require("./src/main/js/daemon/model/MoneroTxPoolStats");
-module.exports.MoneroVersion = require("./src/main/js/daemon/model/MoneroVersion");
-module.exports.MoneroPeer = require("./src/main/js/daemon/model/MoneroPeer");
-
-// export wallet models
-module.exports.MoneroAccount = require("./src/main/js/wallet/model/MoneroAccount");
-module.exports.MoneroAccountTag = require("./src/main/js/wallet/model/MoneroAccountTag");
-module.exports.MoneroAddressBookEntry = require("./src/main/js/wallet/model/MoneroAddressBookEntry");
-module.exports.MoneroCheck = require("./src/main/js/wallet/model/MoneroCheck");
-module.exports.MoneroCheckReserve = require("./src/main/js/wallet/model/MoneroCheckReserve");
-module.exports.MoneroCheckTx = require("./src/main/js/wallet/model/MoneroCheckTx");
-module.exports.MoneroDestination = require("./src/main/js/wallet/model/MoneroDestination");
-module.exports.MoneroIntegratedAddress = require("./src/main/js/wallet/model/MoneroIntegratedAddress");
-module.exports.MoneroKeyImageImportResult = require("./src/main/js/wallet/model/MoneroKeyImageImportResult");
-module.exports.MoneroMultisigInfo = require("./src/main/js/wallet/model/MoneroMultisigInfo");
-module.exports.MoneroMultisigInitResult = require("./src/main/js/wallet/model/MoneroMultisigInitResult");
-module.exports.MoneroMultisigSignResult = require("./src/main/js/wallet/model/MoneroMultisigSignResult");
-module.exports.MoneroOutputWallet = require("./src/main/js/wallet/model/MoneroOutputWallet");
-module.exports.MoneroOutputQuery = require("./src/main/js/wallet/model/MoneroOutputQuery");
-module.exports.MoneroTxPriority = require("./src/main/js/wallet/model/MoneroTxPriority");
-module.exports.MoneroTxConfig = require("./src/main/js/wallet/model/MoneroTxConfig");
-module.exports.MoneroSubaddress = require("./src/main/js/wallet/model/MoneroSubaddress");
-module.exports.MoneroSyncResult = require("./src/main/js/wallet/model/MoneroSyncResult");
-module.exports.MoneroTransfer = require("./src/main/js/wallet/model/MoneroTransfer");
-module.exports.MoneroIncomingTransfer = require("./src/main/js/wallet/model/MoneroIncomingTransfer");
-module.exports.MoneroOutgoingTransfer = require("./src/main/js/wallet/model/MoneroOutgoingTransfer");
-module.exports.MoneroTransferQuery = require("./src/main/js/wallet/model/MoneroTransferQuery");
-module.exports.MoneroTxSet = require("./src/main/js/wallet/model/MoneroTxSet");
-module.exports.MoneroTxWallet = require("./src/main/js/wallet/model/MoneroTxWallet");
-module.exports.MoneroTxQuery = require("./src/main/js/wallet/model/MoneroTxQuery");
-module.exports.MoneroWalletListener = require("./src/main/js/wallet/model/MoneroWalletListener");
-module.exports.MoneroWalletConfig = require("./src/main/js/wallet/model/MoneroWalletConfig");
-module.exports.MoneroMessageSignatureType = require("./src/main/js/wallet/model/MoneroMessageSignatureType");
-module.exports.MoneroMessageSignatureResult = require("./src/main/js/wallet/model/MoneroMessageSignatureResult");
-
-// export connection manager
-module.exports.MoneroConnectionManager = require("./src/main/js/common/MoneroConnectionManager");
-module.exports.MoneroConnectionManagerListener = require("./src/main/js/common/MoneroConnectionManagerListener");
-
-// export daemon, wallet, and utils classes
-module.exports.MoneroUtils = require("./src/main/js/common/MoneroUtils");
-module.exports.MoneroDaemon = require("./src/main/js/daemon/MoneroDaemon");
-module.exports.MoneroWallet = require("./src/main/js/wallet/MoneroWallet");
-module.exports.MoneroDaemonRpc = require("./src/main/js/daemon/MoneroDaemonRpc");
-module.exports.MoneroWalletRpc = require("./src/main/js/wallet/MoneroWalletRpc");
-module.exports.MoneroWalletKeys = require("./src/main/js/wallet/MoneroWalletKeys");
-module.exports.MoneroWalletFull = require("./src/main/js/wallet/MoneroWalletFull");
-
-// ---------------------------- GLOBAL FUNCTIONS ------------------------------
-
-/**
- * <p>Get the version of the monero-javascript library.<p>
- * 
- * @return {string} the version of this monero-javascript library
- */
-module.exports.getVersion = function() {
-    return module.exports.MoneroUtils.getVersion();
-}
-
-/**
- * <p>Create a client connected to monerod.<p>
- * 
- * <p>Examples:<p>
- * 
- * <code>
- * let daemon = await monerojs.connectToDaemonRpc("http://localhost:38081", "superuser", "abctesting123");<br><br>
- * 
- * let daemon = await monerojs.connectToDaemonRpc({<br>
- * &nbsp;&nbsp; uri: "http://localhost:38081",<br>
- * &nbsp;&nbsp; username: "superuser",<br>
- * &nbsp;&nbsp; password: "abctesting123"<br>
- * });
- * </code>
- * 
- * @param {string|object|MoneroRpcConnection} uriOrConfig - uri of monerod or JS config object or MoneroRpcConnection
- * @param {string} uriOrConfig.uri - uri of monerod
- * @param {string} uriOrConfig.username - username to authenticate with monerod (optional)
- * @param {string} uriOrConfig.password - password to authenticate with monerod (optional)
- * @param {boolean} uriOrConfig.rejectUnauthorized - rejects self-signed certificates if true (default true)
- * @param {number} uriOrConfig.pollInterval - poll interval to query for updates in ms (default 5000)
- * @param {boolean} uriOrConfig.proxyToWorker - run the daemon client in a web worker if true (default true)
- * @param {string} username - username to authenticate with monerod (optional)
- * @param {string} password - password to authenticate with monerod (optional)
- * @param {boolean} rejectUnauthorized - rejects self-signed certificates if true (default true)
- * @param {number} pollInterval - poll interval to query for updates in ms (default 5000)
- * @param {boolean} proxyToWorker - runs the daemon client in a web worker if true (default true)
- * @return {MoneroDaemonRpc} the daemon RPC client
- */
-module.exports.connectToDaemonRpc = function() { return module.exports.MoneroDaemonRpc._connectToDaemonRpc(...arguments); }
-
-/**
- * <p>Create a client connected to monero-wallet-rpc.</p>
- * 
- * <p>Examples:</p>
- * 
- * <code>
- * let walletRpc = await monerojs.connectToWalletRpc("http://localhost:38081", "superuser", "abctesting123");<br><br>
- * 
- * let walletRpc = await monerojs.connectToWalletRpc({<br>
- * &nbsp;&nbsp; uri: "http://localhost:38081",<br>
- * &nbsp;&nbsp; username: "superuser",<br>
- * &nbsp;&nbsp; password: "abctesting123",<br>
- * &nbsp;&nbsp; rejectUnauthorized: false // e.g. local development<br>
- * });<br><br>
- * 
- * // connect to monero-wallet-rpc running as internal process<br>
- * let walletRpc = await monerojs.connectToWalletRpc([<br>
- * &nbsp;&nbsp; "/path/to/monero-wallet-rpc",<br>
- * &nbsp;&nbsp; "--stagenet",<br>
- * &nbsp;&nbsp; "--daemon-address", "http://localhost:38081",<br>
- * &nbsp;&nbsp; "--daemon-login", "superuser:abctesting123",<br>
- * &nbsp;&nbsp; "--rpc-bind-port", "38085",<br>
- * &nbsp;&nbsp; "--rpc-login", "rpc_user:abc123",<br>
- * &nbsp;&nbsp; "--wallet-dir", "/path/to/wallets", // defaults to monero-wallet-rpc directory<br>
- * &nbsp;&nbsp; "--rpc-access-control-origins", "http://localhost:8080"<br>
- * &nbsp; ]);
- * 
- * </code>
- * 
- * @param {string|string[]|object|MoneroRpcConnection} uriOrConfig - uri of monero-wallet-rpc or terminal parameters or JS config object or MoneroRpcConnection
- * @param {string} uriOrConfig.uri - uri of monero-wallet-rpc
- * @param {string} uriOrConfig.username - username to authenticate with monero-wallet-rpc (optional)
- * @param {string} uriOrConfig.password - password to authenticate with monero-wallet-rpc (optional)
- * @param {boolean} uriOrConfig.rejectUnauthorized - rejects self-signed certificates if true (default true)
- * @param {string} username - username to authenticate with monero-wallet-rpc (optional)
- * @param {string} password - password to authenticate with monero-wallet-rpc (optional)
- * @param {boolean} rejectUnauthorized - rejects self-signed certificates if true (default true)
- * @return {MoneroWalletRpc} the wallet RPC client
- */
-module.exports.connectToWalletRpc = function() { return module.exports.MoneroWalletRpc._connectToWalletRpc(...arguments); }
-
-/**
- * <p>Create a Monero wallet using fully client-side WebAssembly bindings to monero-project's wallet2 in C++.<p>
- * 
- * <p>Example:</p>
- * 
- * <code>
- * let wallet = await monerojs.createWalletFull({<br>
- * &nbsp;&nbsp; path: "./test_wallets/wallet1", // leave blank for in-memory wallet<br>
- * &nbsp;&nbsp; password: "supersecretpassword",<br>
- * &nbsp;&nbsp; networkType: MoneroNetworkType.STAGENET,<br>
- * &nbsp;&nbsp; seed: "coexist igloo pamphlet lagoon...",<br>
- * &nbsp;&nbsp; restoreHeight: 1543218,<br>
- * &nbsp;&nbsp; server: new monerojs.MoneroRpcConnection("http://localhost:38081", "daemon_user", "daemon_password_123"),<br>
- * });
- * </code>
- * 
- * @param {object|MoneroWalletConfig} config - MoneroWalletConfig or equivalent config object
- * @param {string} config.path - path of the wallet to create (optional, in-memory wallet if not given)
- * @param {string} config.password - password of the wallet to create
- * @param {string|number} config.networkType - network type of the wallet to create (one of "mainnet", "testnet", "stagenet" or MoneroNetworkType.MAINNET|TESTNET|STAGENET)
- * @param {string} config.seed - seed of the wallet to create (optional, random wallet created if neither seed nor keys given)
- * @param {string} config.seedOffset - the offset used to derive a new seed from the given seed to recover a secret wallet from the seed phrase
- * @param {string} config.primaryAddress - primary address of the wallet to create (only provide if restoring from keys)
- * @param {string} config.privateViewKey - private view key of the wallet to create (optional)
- * @param {string} config.privateSpendKey - private spend key of the wallet to create (optional)
- * @param {number} config.restoreHeight - block height to start scanning frsom (defaults to 0 unless generating random wallet)
- * @param {string} config.language - language of the wallet's seed (defaults to "English" or auto-detected)
- * @param {number} config.accountLookahead -  number of accounts to scan (optional)
- * @param {number} config.subaddressLookahead - number of subaddresses to scan per account (optional)
- * @param {MoneroRpcConnection|object} config.server - MoneroRpcConnection or equivalent JS object providing daemon configuration (optional)
- * @param {string} config.serverUri - uri of the wallet's daemon (optional)
- * @param {string} config.serverUsername - username to authenticate with the daemon (optional)
- * @param {string} config.serverPassword - password to authenticate with the daemon (optional)
- * @param {boolean} config.rejectUnauthorized - reject self-signed server certificates if true (defaults to true)
- * @param {boolean} config.proxyToWorker - proxies wallet operations to a web worker in order to not block the main thread (default true)
- * @param {fs} config.fs - Node.js compatible file system to use (defaults to disk or in-memory FS if browser)
- * @return {MoneroWalletFull} the created wallet
- */
-module.exports.createWalletFull = function() { return module.exports.MoneroWalletFull.createWallet(...arguments); }
-
-/**
- * <p>Open an existing Monero wallet using fully client-side WebAssembly bindings to monero-project's wallet2 in C++.<p>
- * 
- * <p>Examples:<p>
- * 
- * <code>
- * let wallet1 = await monerojs.openWalletFull(<br>
- * &nbsp;&nbsp; "./wallets/wallet1",<br>
- * &nbsp;&nbsp; "supersecretpassword",<br>
- * &nbsp;&nbsp; MoneroNetworkType.STAGENET,<br>
- * &nbsp;&nbsp; "http://localhost:38081" // daemon uri<br>
- * );<br><br>
- * 
- * let wallet2 = await monerojs.openWalletFull({<br>
- * &nbsp;&nbsp; path: "./wallets/wallet2",<br>
- * &nbsp;&nbsp; password: "supersecretpassword",<br>
- * &nbsp;&nbsp; networkType: MoneroNetworkType.STAGENET,<br>
- * &nbsp;&nbsp; serverUri: "http://localhost:38081", // daemon configuration<br>
- * &nbsp;&nbsp; serverUsername: "superuser",<br>
- * &nbsp;&nbsp; serverPassword: "abctesting123"<br>
- * });
- * </code>
- * 
- * @param {MoneroWalletConfig|object|string} configOrPath - MoneroWalletConfig or equivalent config object or a path to a wallet to open
- * @param {string} configOrPath.path - path of the wallet to open (optional if 'keysData' provided)
- * @param {string} configOrPath.password - password of the wallet to open
- * @param {string|number} configOrPath.networkType - network type of the wallet to open (one of "mainnet", "testnet", "stagenet" or MoneroNetworkType.MAINNET|TESTNET|STAGENET)
- * @param {Uint8Array} configOrPath.keysData - wallet keys data to open (optional if path provided)
- * @param {Uint8Array} configOrPath.cacheData - wallet cache data to open (optional)
- * @param {MoneroRpcConnection|object} configOrPath.server - MoneroRpcConnection or equivalent JS object configuring the daemon connection (optional)
- * @param {string} configOrPath.serverUri - uri of the wallet's daemon (optional)
- * @param {string} configOrPath.serverUsername - username to authenticate with the daemon (optional)
- * @param {string} configOrPath.serverPassword - password to authenticate with the daemon (optional)
- * @param {boolean} configOrPath.rejectUnauthorized - reject self-signed server certificates if true (defaults to true)
- * @param {boolean} configOrPath.proxyToWorker - proxies wallet operations to a web worker in order to not block the main thread (default true)
- * @param {fs} configOrPath.fs - Node.js compatible file system to use (defaults to disk or in-memory FS if browser)
- * @param {string} password - password of the wallet to open
- * @param {string|number} networkType - network type of the wallet to open
- * @param {string|MoneroRpcConnection} daemonUriOrConnection - daemon URI or MoneroRpcConnection
- * @param {boolean} proxyToWorker - proxies wallet operations to a web worker in order to not block the main thread (default true)
- * @param {fs} fs - Node.js compatible file system to use (defaults to disk or in-memory FS if browser)
- * @return {MoneroWalletFull} the opened wallet
- */
-module.exports.openWalletFull = function() { return module.exports.MoneroWalletFull.openWallet(...arguments); }
-
-/**
- * <p>Create a wallet using WebAssembly bindings to monero-project.</p>
- * 
- * <p>Example:</p>
- * 
- * <code>
- * let wallet = await monerojs.createWalletKeys({<br>
- * &nbsp;&nbsp; password: "abc123",<br>
- * &nbsp;&nbsp; networkType: MoneroNetworkType.STAGENET,<br>
- * &nbsp;&nbsp; seed: "coexist igloo pamphlet lagoon..."<br>
- * });
- * </code>
- * 
- * @param {MoneroWalletConfig|object} config - MoneroWalletConfig or equivalent config object
- * @param {string|number} config.networkType - network type of the wallet to create (one of "mainnet", "testnet", "stagenet" or MoneroNetworkType.MAINNET|TESTNET|STAGENET)
- * @param {string} config.seed - seed of the wallet to create (optional, random wallet created if neither seed nor keys given)
- * @param {string} config.seedOffset - the offset used to derive a new seed from the given seed to recover a secret wallet from the seed phrase
- * @param {string} config.primaryAddress - primary address of the wallet to create (only provide if restoring from keys)
- * @param {string} config.privateViewKey - private view key of the wallet to create (optional)
- * @param {string} config.privateSpendKey - private spend key of the wallet to create (optional)
- * @param {string} config.language - language of the wallet's seed phrase (defaults to "English" or auto-detected)
- * @return {MoneroWalletKeys} the created wallet
- */
-module.exports.createWalletKeys = function() { return module.exports.MoneroWalletKeys.createWallet(...arguments); }
-
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/scripts/linenumber.js b/docs/scripts/linenumber.js deleted file mode 100644 index 4354785ce..000000000 --- a/docs/scripts/linenumber.js +++ /dev/null @@ -1,25 +0,0 @@ -/*global document */ -(() => { - const source = document.getElementsByClassName('prettyprint source linenums'); - let i = 0; - let lineNumber = 0; - let lineId; - let lines; - let totalLines; - let anchorHash; - - if (source && source[0]) { - anchorHash = document.location.hash.substring(1); - lines = source[0].getElementsByTagName('li'); - totalLines = lines.length; - - for (; i < totalLines; i++) { - lineNumber++; - lineId = `line${lineNumber}`; - lines[i].id = lineId; - if (lineId === anchorHash) { - lines[i].className += ' selected'; - } - } - } -})(); diff --git a/docs/scripts/prettify/Apache-License-2.0.txt b/docs/scripts/prettify/Apache-License-2.0.txt deleted file mode 100644 index d64569567..000000000 --- a/docs/scripts/prettify/Apache-License-2.0.txt +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/docs/scripts/prettify/lang-css.js b/docs/scripts/prettify/lang-css.js deleted file mode 100644 index 041e1f590..000000000 --- a/docs/scripts/prettify/lang-css.js +++ /dev/null @@ -1,2 +0,0 @@ -PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\f\r ]+/,null," \t\r\n "]],[["str",/^"(?:[^\n\f\r"\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*"/,null],["str",/^'(?:[^\n\f\r'\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*'/,null],["lang-css-str",/^url\(([^"')]*)\)/i],["kwd",/^(?:url|rgb|!important|@import|@page|@media|@charset|inherit)(?=[^\w-]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*)\s*:/i],["com",/^\/\*[^*]*\*+(?:[^*/][^*]*\*+)*\//],["com", -/^(?:<\!--|--\>)/],["lit",/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],["lit",/^#[\da-f]{3,6}/i],["pln",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i],["pun",/^[^\s\w"']+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[["kwd",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[["str",/^[^"')]+/]]),["css-str"]); diff --git a/docs/scripts/prettify/prettify.js b/docs/scripts/prettify/prettify.js deleted file mode 100644 index eef5ad7e6..000000000 --- a/docs/scripts/prettify/prettify.js +++ /dev/null @@ -1,28 +0,0 @@ -var q=null;window.PR_SHOULD_USE_CONTINUATION=!0; -(function(){function L(a){function m(a){var f=a.charCodeAt(0);if(f!==92)return f;var b=a.charAt(1);return(f=r[b])?f:"0"<=b&&b<="7"?parseInt(a.substring(1),8):b==="u"||b==="x"?parseInt(a.substring(2),16):a.charCodeAt(1)}function e(a){if(a<32)return(a<16?"\\x0":"\\x")+a.toString(16);a=String.fromCharCode(a);if(a==="\\"||a==="-"||a==="["||a==="]")a="\\"+a;return a}function h(a){for(var f=a.substring(1,a.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g),a= -[],b=[],o=f[0]==="^",c=o?1:0,i=f.length;c122||(d<65||j>90||b.push([Math.max(65,j)|32,Math.min(d,90)|32]),d<97||j>122||b.push([Math.max(97,j)&-33,Math.min(d,122)&-33]))}}b.sort(function(a,f){return a[0]-f[0]||f[1]-a[1]});f=[];j=[NaN,NaN];for(c=0;ci[0]&&(i[1]+1>i[0]&&b.push("-"),b.push(e(i[1])));b.push("]");return b.join("")}function y(a){for(var f=a.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),b=f.length,d=[],c=0,i=0;c=2&&a==="["?f[c]=h(j):a!=="\\"&&(f[c]=j.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return f.join("")}for(var t=0,s=!1,l=!1,p=0,d=a.length;p=5&&"lang-"===b.substring(0,5))&&!(o&&typeof o[1]==="string"))c=!1,b="src";c||(r[f]=b)}i=d;d+=f.length;if(c){c=o[1];var j=f.indexOf(c),k=j+c.length;o[2]&&(k=f.length-o[2].length,j=k-c.length);b=b.substring(5);B(l+i,f.substring(0,j),e,p);B(l+i+j,c,C(b,c),p);B(l+i+k,f.substring(k),e,p)}else p.push(l+i,b)}a.e=p}var h={},y;(function(){for(var e=a.concat(m), -l=[],p={},d=0,g=e.length;d=0;)h[n.charAt(k)]=r;r=r[1];n=""+r;p.hasOwnProperty(n)||(l.push(r),p[n]=q)}l.push(/[\S\s]/);y=L(l)})();var t=m.length;return e}function u(a){var m=[],e=[];a.tripleQuotedStrings?m.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):a.multiLineStrings?m.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/, -q,"'\"`"]):m.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]);a.verbatimStrings&&e.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var h=a.hashComments;h&&(a.cStyleComments?(h>1?m.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):m.push(["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),e.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,q])):m.push(["com",/^#[^\n\r]*/, -q,"#"]));a.cStyleComments&&(e.push(["com",/^\/\/[^\n\r]*/,q]),e.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q]));a.regexLiterals&&e.push(["lang-regex",/^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]);(h=a.types)&&e.push(["typ",h]);a=(""+a.keywords).replace(/^ | $/g, -"");a.length&&e.push(["kwd",RegExp("^(?:"+a.replace(/[\s,]+/g,"|")+")\\b"),q]);m.push(["pln",/^\s+/,q," \r\n\t\xa0"]);e.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,q],["pun",/^.[^\s\w"-$'./@\\`]*/,q]);return x(m,e)}function D(a,m){function e(a){switch(a.nodeType){case 1:if(k.test(a.className))break;if("BR"===a.nodeName)h(a), -a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)e(a);break;case 3:case 4:if(p){var b=a.nodeValue,d=b.match(t);if(d){var c=b.substring(0,d.index);a.nodeValue=c;(b=b.substring(d.index+d[0].length))&&a.parentNode.insertBefore(s.createTextNode(b),a.nextSibling);h(a);c||a.parentNode.removeChild(a)}}}}function h(a){function b(a,d){var e=d?a.cloneNode(!1):a,f=a.parentNode;if(f){var f=b(f,1),g=a.nextSibling;f.appendChild(e);for(var h=g;h;h=g)g=h.nextSibling,f.appendChild(h)}return e} -for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),e;(e=a.parentNode)&&e.nodeType===1;)a=e;d.push(a)}var k=/(?:^|\s)nocode(?:\s|$)/,t=/\r\n?|\n/,s=a.ownerDocument,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=s.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);for(l=s.createElement("LI");a.firstChild;)l.appendChild(a.firstChild);for(var d=[l],g=0;g=0;){var h=m[e];A.hasOwnProperty(h)?window.console&&console.warn("cannot override language handler %s",h):A[h]=a}}function C(a,m){if(!a||!A.hasOwnProperty(a))a=/^\s*=o&&(h+=2);e>=c&&(a+=2)}}catch(w){"console"in window&&console.log(w&&w.stack?w.stack:w)}}var v=["break,continue,do,else,for,if,return,while"],w=[[v,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"], -"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],F=[w,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],G=[w,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"], -H=[G,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],w=[w,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],I=[v,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"], -J=[v,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],v=[v,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],K=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,N=/\S/,O=u({keywords:[F,H,w,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END"+ -I,J,v],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),A={};k(O,["default-code"]);k(x([],[["pln",/^[^]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]), -["default-markup","htm","html","mxml","xhtml","xml","xsl"]);k(x([["pln",/^\s+/,q," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css", -/^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);k(x([],[["atv",/^[\S\s]+/]]),["uq.val"]);k(u({keywords:F,hashComments:!0,cStyleComments:!0,types:K}),["c","cc","cpp","cxx","cyc","m"]);k(u({keywords:"null,true,false"}),["json"]);k(u({keywords:H,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:K}),["cs"]);k(u({keywords:G,cStyleComments:!0}),["java"]);k(u({keywords:v,hashComments:!0,multiLineStrings:!0}),["bsh","csh","sh"]);k(u({keywords:I,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}), -["cv","py"]);k(u({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["perl","pl","pm"]);k(u({keywords:J,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb"]);k(u({keywords:w,cStyleComments:!0,regexLiterals:!0}),["js"]);k(u({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes", -hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);k(x([],[["str",/^[\S\s]+/]]),["regex"]);window.prettyPrintOne=function(a,m,e){var h=document.createElement("PRE");h.innerHTML=a;e&&D(h,e);E({g:m,i:e,h:h});return h.innerHTML};window.prettyPrint=function(a){function m(){for(var e=window.PR_SHOULD_USE_CONTINUATION?l.now()+250:Infinity;p=0){var k=k.match(g),f,b;if(b= -!k){b=n;for(var o=void 0,c=b.firstChild;c;c=c.nextSibling)var i=c.nodeType,o=i===1?o?b:c:i===3?N.test(c.nodeValue)?b:o:o;b=(f=o===b?void 0:o)&&"CODE"===f.tagName}b&&(k=f.className.match(g));k&&(k=k[1]);b=!1;for(o=n.parentNode;o;o=o.parentNode)if((o.tagName==="pre"||o.tagName==="code"||o.tagName==="xmp")&&o.className&&o.className.indexOf("prettyprint")>=0){b=!0;break}b||((b=(b=n.className.match(/\blinenums\b(?::(\d+))?/))?b[1]&&b[1].length?+b[1]:!0:!1)&&D(n,b),d={g:k,h:n,i:b},E(d))}}p - - - - JSDoc: Source: src/main/js/common/Filter.js - - - - - - - - - - -
- -

Source: src/main/js/common/Filter.js

- - - - - - -
-
-
/**
- * Base filter.
- * 
- * @private
- */
-class Filter {
-  
-  /**
-   * Indicates if the given value meets the criteria of this filter.
-   * 
-   * @param val is the value to test
-   * @return true if the value meets the criteria of this filter, false otherwise
-   */
-  meetsCriteria(val) {
-    throw new Error("Subclass must implement");
-  }
-  
-  /**
-   * Returns a new array comprised of elements from the given array that meet
-   * the filter's criteria.
-   * 
-   * @param filter implements meetsCriteria(elem) to filter the given array
-   * @param array is the array to apply the filter to
-   * @return the new array of filtered elements
-   */
-  static apply(filter, array) {
-    return array.filter(elem => !filter || filter.meetsCriteria(elem));
-  }
-}
-
-module.exports = Filter;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_common_GenUtils.js.html b/docs/src_main_js_common_GenUtils.js.html deleted file mode 100644 index 2441babd5..000000000 --- a/docs/src_main_js_common_GenUtils.js.html +++ /dev/null @@ -1,1578 +0,0 @@ - - - - - JSDoc: Source: src/main/js/common/GenUtils.js - - - - - - - - - - -
- -

Source: src/main/js/common/GenUtils.js

- - - - - - -
-
-
const assert = require("assert");
-const BigInteger = require("./biginteger").BigInteger;
-
-/**
- * MIT License
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-/**
- * Collection of general purpose utilities.
- * 
- * TODO: could pull in assert and remove these asserts
- * TODO: needs cleanup as ES6+ utility class
- */
-class GenUtils {
-  
-  /**
-   * Indicates if the given argument is defined.
-   * 
-   * @param arg is the arg to test
-   * @returns true if the given arg is defined, false otherwise
-   */
-  static isDefined(arg) {
-    return typeof arg !== 'undefined';
-  }
-
-  /**
-   * Indicates if the given argument is undefined.
-   * 
-   * @param arg is the arg to test
-   * @returns true if the given arg is undefined, false otherwise
-   */
-  static isUndefined(arg) {
-    return typeof arg === 'undefined';
-  }
-
-  /**
-   * Indicates if the given arg is initialized.
-   * 
-   * @param arg is the arg to test
-   * @returns true if the given arg is initialized, false otherwise
-   */
-  static isInitialized(arg) {
-    return arg !== undefined && arg !== null;
-  }
-
-  /**
-   * Indicates if the given arg is uninitialized.
-   * 
-   * @param arg is the arg to test
-   * @returns true if the given arg is uninitialized, false otherwise
-   */
-  static isUninitialized(arg) {
-    if (!arg) return true;
-    return false;
-  }
-
-  /**
-   * Indicates if the given argument is a number.
-   * 
-   * @param arg is the argument to test
-   * @returns true if the argument is a number, false otherwise
-   */
-  static isNumber(arg) {
-    return !isNaN(parseFloat(arg)) && isFinite(arg);
-  }
-
-  /**
-   * Indicates if the given argument is an integer.
-   * 
-   * @param arg is the argument to test
-   * @returns true if the given argument is an integer, false otherwise
-   */
-  static isInt(arg) {
-    return arg === parseInt(Number(arg)) && !isNaN(arg) && !isNaN(parseInt(arg, 10));
-  }
-
-  /**
-   * Indicates if the given argument is an array.
-   * 
-   * @param arg is the argument to test as being an array
-   * @returns true if the argument is an array, false otherwise
-   */
-  static isArray(arg) {
-    return arg instanceof Array && Array.isArray(arg);
-  }
-
-  /**
-   * Indicates if the given argument is a string.
-   * 
-   * @param arg is the argument to test as being a string
-   * @returns true if the argument is a string, false otherwise
-   */
-  static isString(arg) {
-    return typeof arg === 'string';
-  }
-
-  /**
-   * Determines if the given argument is a boolean.
-   * 
-   * @param arg is the argument to test as being a boolean
-   * @returns true if the argument is a boolean, false otherwise
-   */
-  static isBoolean(arg) {
-    return typeof(arg) == typeof(true);
-  }
-
-  /**
-   * Determines if the given argument is a static.
-   * 
-   * @param arg is the argument to test as being a static
-   * @returns true if the argument is a static, false otherwise
-   */
-  static isFunction(arg) {
-    return typeof arg === "static";
-  }
-
-  /**
-   * Indicates if the given argument is an object and optionally if it has the given constructor name.
-   * 
-   * @param arg is the argument to test
-   * @param obj is an object to test arg instanceof obj (optional)
-   * @returns true if the given argument is an object and optionally has the given constructor name
-   */
-  static isObject(arg, obj) {
-    if (!arg) return false;
-    if (typeof arg !== 'object') return false;
-    if (obj && !(arg instanceof obj)) return false;
-    return true;
-  }
-
-  /**
-   * Determines if all alphabet characters in the given string are upper case.
-   * 
-   * @param str is the string to test
-   * @returns true if the string is upper case, false otherwise
-   */
-  static isUpperCase(str) {
-    return str.toUpperCase() === str;
-  }
-
-  /**
-   * Determines if all alphabet characters in the given string are lower case.
-   * 
-   * @param str is the string to test
-   * @param true if the string is lower case, false otherwise
-   */
-  static isLowerCase(str) {
-    return str.toLowerCase() === str;
-  }
-
-  /**
-   * Asserts that the given argument is hex.
-   * 
-   * @param arg is the argument to assert as hex
-   * @param msg is the message to throw if the argument is not hex
-   */
-  static assertHex(str, msg) {
-    GenUtils.assertTrue(isHex(str), msg ? msg : "Argument asserted as hex but is not hex");
-  }
-
-  /**
-   * Indicates if the given argument is a hexidemal string.
-   * 
-   * Credit: https://github.com/roryrjb/is-hex/blob/master/is-hex.js.
-   * 
-   * @param str is the string to test
-   * @returns true if the given string is hexidecimal, false otherwise
-   */
-  static isHex(arg) {
-    if (typeof arg !== 'string') return false;
-    if (arg.length === 0) return false;
-    return (arg.match(/([0-9]|[a-f])/gim) || []).length === arg.length;
-  }
-
-  /**
-   * Determines if the given string is base32.
-   */
-  static isBase32(str) {
-    if (typeof str !== 'string') return false;
-    GenUtils.assertTrue(str.length > 0, "Cannot determine if empty string is base32");
-    return /^[ABCDEFGHIJKLMNOPQRSTUVWXYZ234567]+$/.test(str);
-  }
-
-  /**
-   * Asserts that the given argument is base58.
-   * 
-   * @param arg is the argument to assert as base58
-   * @param msg is the message to throw if the argument is not base58
-   */
-  static assertBase58(str, msg) {
-    GenUtils.assertTrue(isBase58(str), msg ? msg : "Argument asserted as base58 but is not base58");
-  }
-
-  /**
-   * Determines if the given string is base58.
-   */
-  static isBase58(str) {
-    if (typeof str !== 'string') return false;
-    GenUtils.assertTrue(str.length > 0, "Cannot determine if empty string is base58");
-    return /^[123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]+$/.test(str);
-  }
-
-  /**
-   * Asserts that the given argument is base64.
-   * 
-   * @param arg is the argument to assert as base64
-   * @param msg is the message to throw if the argument is not base64
-   */
-  static assertBase64(str, msg) {
-    GenUtils.assertTrue(isBase64(str), msg ? msg : "Argument asserted as base64 but is not base64");
-  }
-
-  /**
-   * Determines if the given string is base64.
-   */
-  static isBase64(str) {
-    if (typeof str !== 'string') return false;
-    GenUtils.assertTrue(str.length > 0, "Cannot determine if empty string is base64");
-    try {
-      return btoa(atob(str)) == str;
-    } catch (err) {
-      return false;
-    }
-  }
-
-  /**
-   * Throws an exception with the given message.
-   * 
-   * @param msg defines the message to throw the exception with (optional)
-   */
-  static fail(msg) {
-    throw new Error(msg ? msg : "Failure (no message)");
-  }
-
-  /**
-   * Asserts that the given boolean is true.  Throws an exception if not a boolean or false.
-   * 
-   * @param bool is the boolean to assert true
-   * @param msg is the message to throw if bool is false (optional)
-   */
-  static assertTrue(bool, msg) {
-    if (typeof bool !== 'boolean') throw new Error("Argument is not a boolean");
-    if (!bool) throw new Error(msg ? msg : "Boolean asserted as true but was false");
-  }
-
-  /**
-   * Asserts that the given boolean is false.  Throws an exception if not a boolean or true.
-   * 
-   * @param bool is the boolean to assert false
-   * @param msg is the message to throw if bool is true (optional)
-   */
-  static assertFalse(bool, msg) {
-    if (typeof bool !== 'boolean') throw new Error("Argument is not a boolean");
-    if (bool) throw new Error(msg ? msg : "Boolean asserted as false but was true");
-  }
-
-  /**
-   * Asserts that the given argument is null.  Throws an exception if not null.
-   * 
-   * @param arg is the argument to assert null
-   * @param msg is the message to throw if arg is not null (optional)
-   */
-  static assertNull(arg, msg) {
-    if (arg !== null) throw new Error(msg ? msg : "Argument asserted as null but was not null: " + arg);
-  }
-
-  /**
-   * Asserts that the given argument is not null.  Throws an exception if null.
-   * 
-   * @param arg is the argument to assert not null
-   * @param msg is the message to throw if arg is null (optional)
-   */
-  static assertNotNull(arg, msg) {
-    if (arg === null) throw new Error(msg ? msg : "Argument asserted as not null but was null");
-  }
-
-  /**
-   * Asserts that the given argument is defined.  Throws an exception if undefined.
-   * 
-   * @param arg is the argument to assert defined
-   * @param msg is the message to throw if arg is undefined (optional)
-   */
-  static assertDefined(arg, msg) {
-    if (GenUtils.isUndefined(arg)) throw new Error(msg ? msg : "Argument asserted as defined but was undefined");
-  }
-
-  /**
-   * Asserts that the given argument is undefined.  Throws an exception if defined.
-   * 
-   * @param arg is the argument to assert undefined
-   * @param msg is the message to throw if arg is defined (optional)
-   */
-  static assertUndefined(arg, msg) {
-    if (GenUtils.isDefined(arg)) throw new Error(msg ? msg : "Argument asserted as undefined but was defined: " + arg);
-  }
-
-  /**
-   * Asserts that the given argument is initialized.  Throws an exception if not initialized.
-   * 
-   * @param arg is the argument to assert as initialized
-   * @param msg is the message to throw if arg is not initialized (optional)
-   */
-  static assertInitialized(arg, msg) {
-    if (GenUtils.isUninitialized(arg)) {
-      throw new Error(msg ? msg : "Argument asserted as initialized but was " + arg);
-    }
-  }
-
-  /**
-   * Asserts that the given argument is uninitialized.  Throws an exception if initialized.
-   * 
-   * @param arg is the argument to assert as uninitialized
-   * @param msg is the message to throw if arg is initialized (optional)
-   */
-  static assertUninitialized(arg, msg) {
-    if (GenUtils.isInitialized(arg)) throw new Error(msg ? msg : "Argument asserted as uninitialized but was initialized");
-  }
-
-  /**
-   * Asserts that the given arguments are equal.  Throws an exception if not equal.
-   * 
-   * @param arg1 is an argument to assert as equal
-   * @param arg2 is an argument to assert as equal
-   * @param msg is the message to throw if the arguments are not equal
-   */
-  static assertEquals(arg1, arg2, msg) {
-    GenUtils.assertTrue(GenUtils.equals(arg1, arg2), msg ? msg : "Arguments asserted as equal but are not equal: " + arg1 + " vs " + arg2);
-  }
-
-  /**
-   * Asserts that the given arguments are not equal.  Throws an exception if equal.
-   * 
-   * @param arg1 is an argument to assert as not equal
-   * @param arg2 is an argument to assert as not equal
-   * @param msg is the message to throw if the arguments are equal
-   */
-  static assertNotEquals(arg1, arg2, msg) {
-    if (arg1 === arg2) throw new Error(msg ? msg : "Arguments asserted as not equal but are equal: " + arg1 + " vs " + arg2);
-  }
-
-  /**
-   * Asserts that the given argument is an integer.
-   * 
-   * @param arg is the argument to assert as an integer
-   * @param msg is the message to throw if the argument is not an integer
-   */
-  static assertInt(arg, msg) {
-    if (!GenUtils.isInt(arg)) throw new Error(msg ? msg : "Argument asserted as an integer but is not an integer");
-  }
-
-  /**
-   * Asserts that the given argument is a number.
-   * 
-   * @param arg is the argument to assert as a number
-   * @param msg is the message to throw if the argument is not a number
-   */
-  static assertNumber(arg, msg) {
-    if (!GenUtils.isNumber(arg)) throw new Error(msg ? msg : "Argument asserted as a number but is not a number");
-  }
-
-  /**
-   * Asserts that the given argument is a boolean.
-   * 
-   * @param arg is the argument to assert as a boolean
-   * @param msg is the message to throw if the argument is not a boolean
-   */
-  static assertBoolean(arg, msg) {
-    if (!GenUtils.isBoolean(arg)) throw new Error(msg ? msg : "Argument asserted as a boolean but is not a boolean");
-  }
-
-  /**
-   * Asserts that the given argument is a string.
-   * 
-   * @param arg is the argument to assert as a string
-   * @param msg is the message to throw if the argument is not a string
-   */
-  static assertString(arg, msg) {
-    if (!GenUtils.isString(arg)) throw new Error(msg ? msg : "Argument asserted as a string but is not a string: " + arg);
-  }
-
-  /**
-   * Asserts that the given argument is an array.
-   * 
-   * @param arg is the argument to assert as an array
-   * @param msg is the message to throw if the argument is not an array
-   */
-  static assertArray(arg, msg) {
-    if (!GenUtils.isArray(arg)) throw new Error(msg ? msg : "Argument asserted as an array but is not an array");
-  }
-
-  /**
-   * Asserts that the given argument is a static.
-   * 
-   * @param arg is the argument to assert as a static
-   * @param msg is the message to throw if the argument is not a static
-   */
-  static assertFunction(arg, msg) {
-    if (!GenUtils.isFunction(arg)) throw new Error(msg ? msg : "Argument asserted as a static but is not a static");
-  }
-
-  /**
-   * Asserts that the given argument is an object with the given name.
-   * 
-   * @param arg is the argument to test
-   * @param obj is an object to assert arg instanceof obj (optional)
-   * @param msg is the message to throw if the argument is not the specified object
-   */
-  static assertObject(arg, obj, msg) {
-    GenUtils.assertInitialized(arg, msg);
-    if (obj) {
-      if (!isObject(arg, obj)) throw new Error(msg ? msg : "Argument asserted as object '" + obj.name + "' but was not");
-    } else {
-      if (!isObject(arg)) throw new Error(msg ? msg : "Argument asserted as object but was not");
-    }
-  }
-
-  /**
-   * Sets the child's prototype to the parent's prototype.
-   * 
-   * @param child is the child class
-   * @param parent is the parent class
-   */
-  static inheritsFrom(child, parent) {
-    child.prototype = Object.create(parent.prototype);
-    child.prototype.constructor = child;
-  }
-
-  /**
-   * Invokes functions with arguments.
-   * 
-   * arguments[0] is assumed to be an array of functions to invoke
-   * arguments[1...n] are args to invoke the functions with
-   */
-  static invoke() {
-    let fns = arguments[0];
-    let args = [];
-    for (let i = 1; i < arguments.length; i++) args.push(arguments[i]);
-    for (let i = 0; i < fns.length; i++) {
-      assertFunction(fns[i], "Functions[" + i + "] is not a static");
-      fns[i].apply(null, args);
-    }
-  }
-
-  /**
-   * Returns the power set of the given array.
-   * 
-   * @param arr is the array to get the power set of
-   * @returns [][] is the power set of the given array
-   */
-  static getPowerSet(arr) {
-    let fn = function(n, src, got, all) {
-      if (n == 0) {
-        if (got.length > 0) {
-          all[all.length] = got;
-        }
-        return;
-      }
-      for (let j = 0; j < src.length; j++) {
-        fn(n - 1, src.slice(j + 1), got.concat([ src[j] ]), all);
-      }
-      return;
-    }
-    let all = [];
-    all.push([]);
-    for (let i = 0; i < arr.length; i++) {
-      fn(i, arr, [], all);
-    }
-    all.push(arr);
-    return all;
-  }
-
-  /**
-   * Returns the power set of the given array whose elements are the given size.
-   * 
-   * @param arr is the array to get the power set of
-   * @param size is the required size of the elements within the power set
-   * returns [][] is the power set of the given array whose elements are the given size 
-   */
-  static getPowerSetOfLength(arr, size) {
-    assertInitialized(arr);
-    assertInitialized(size);
-    GenUtils.assertTrue(size >= 1);
-    let powerSet = getPowerSet(arr);
-    let powerSetOfLength = [];
-    for (let i = 0; i < powerSet.length; i++) {
-      if (powerSet[i].length === size) {
-        powerSetOfLength.push(powerSet[i]);
-      }
-    }
-    return powerSetOfLength;
-  }
-
-  /**
-   * Returns an array of indices of the given size.
-   * 
-   * @param size specifies the size to get indices for
-   * @returns array of the given size with indices starting at 0
-   */
-  static getIndices(size) {
-    let indices = [];
-    for (let i = 0; i < size; i++) {
-      indices.push(i);
-    }
-    return indices;
-  }
-
-  /**
-   * Returns a new array containing unique elements of the given array.
-   * 
-   * @param arr is the array to return unique elements from
-   * @returns a new array with the given array's unique elements
-   */
-  static toUniqueArray(arr) {
-    return arr.filter(function(value, index, self) {
-      return self.indexOf(value) === index;
-    });
-  }
-
-  /**
-   * Copies the given array.
-   * 
-   * @param arr is the array to copy
-   * @returns a copy of the given array
-   */
-  static copyArray(arr) {
-    GenUtils.assertArray(arr);
-    let copy = [];
-    for (let i = 0; i < arr.length; i++) copy.push(arr[i]);
-    return copy;
-  }
-  
-  /**
-   * Removes every instance of the given value from the given array.
-   * 
-   * @param arr is the array to remove the value from
-   * @param val is the value to remove from the array
-   * @returns true if the value is found and removed, false otherwise
-   */
-  static remove(arr, val) {
-    let found = false;
-    for (let i = arr.length - 1; i >= 0; i--) {
-      if (arr[i] === val) {
-        arr.splice(i, 1);
-        found = true;
-        i--;
-      }
-    }
-    return found;
-  }
-
-  /**
-   * Returns a copy of the given array where each element is lowercase.
-   * 
-   * @param arr is the array to convert to lowercase
-   * @returns a copy of the given array where each element is lowercase
-   */
-  static toLowerCaseArray(arr) {
-    let arr2 = [];
-    for (let i = 0; i < arr.length; i++) {
-      arr2.push(arr[i].toLowerCase());
-    }
-    return arr2;
-  }
-
-  /**
-   * Listifies the given argument.
-   * 
-   * @param arrOrElem is an array or an element in the array
-   * @returns an array which is the given arg if it's an array or an array with the given arg as an element
-   */
-  static listify(arrOrElem) {
-    return GenUtils.isArray(arrOrElem) ? arrOrElem : [arrOrElem];
-  }
-
-  /**
-   * Indicates if the given array contains the given object.
-   * 
-   * @param {object[]} arr - array that may or may not contain the object
-   * @param {object} obj - object to check for inclusion in the array
-   * @param {boolean} compareByReference - compare strictly by reference, forgoing deep equality check
-   * @returns true if the array contains the object, false otherwise
-   */
-  static arrayContains(arr, obj, compareByReference) {
-    GenUtils.assertTrue(GenUtils.isArray(arr));
-    for (let i = 0; i < arr.length; i++) {
-      if (arr[i] === obj) return true;
-      if (!compareByReference && GenUtils.equals(arr[i], obj)) return true;
-    }
-    return false;
-  }
-
-  /**
-   * Indicates if the given string contains the given substring.
-   * 
-   * @param str is the string to search for a substring
-   * @param substring is the substring to searchin within the string
-   * @returns true if the substring is within the string, false otherwise
-   */
-  static strContains(str, substring) {
-    return str.indexOf(substring) > -1;
-  }
-
-  /**
-   * Determines if two arrays are equal.
-   * 
-   * @param arr1 is an array to compare
-   * @param arr2 is an array to compare
-   * @returns true if the arrays are equal, false otherwise
-   */
-  static arraysEqual(arr1, arr2) {
-    if (arr1 === arr2) return true;
-    if (arr1 == null && arr2 == null) return true;
-    if (arr1 == null || arr2 == null) return false;
-    if (typeof arr1 === 'undefined' && typeof arr2 === 'undefined') return true;
-    if (typeof arr1 === 'undefined' || typeof arr2 === 'undefined') return false;
-    if (!GenUtils.isArray(arr1)) throw new Error("First argument is not an array");
-    if (!GenUtils.isArray(arr2)) throw new Error("Second argument is not an array");
-    if (arr1.length != arr2.length) return false;
-    for (let i = 0; i < arr1.length; ++i) {
-      if (!GenUtils.equals(arr1[i], arr2[i])) return false;
-    }
-    return true;
-  }
-
-  /**
-   * Determines if two arguments are deep equal.
-   * 
-   * @param arg1 is an argument to compare
-   * @param arg2 is an argument to compare
-   * @returns true if the arguments are deep equals, false otherwise
-   */
-  static equals(arg1, arg2) {
-    if (GenUtils.isArray(arg1) && GenUtils.isArray(arg2)) return GenUtils.arraysEqual(arg1, arg2);
-    if (GenUtils.isObject(arg1) && GenUtils.isObject(arg2)) return GenUtils.objectsEqual(arg1, arg2);
-    return arg1 === arg2;
-  }
-  
-  /**
-   * Determines if two objects are deep equal.
-   * 
-   * Undefined values are considered equal to non-existent keys.
-   * 
-   * @param map1 is a map to compare
-   * @param map2 is a map to compare
-   * @returns true if the maps have identical keys and values, false otherwise
-   */
-  static objectsEqual(map1, map2) {
-    let keys1 = Object.keys(map1);
-    let keys2 = Object.keys(map2);
-    
-    // compare each key1 to keys2
-    for (let key1 of keys1) {
-      let found = false;
-      for (let key2 of keys2) {
-        if (key1 === key2) {
-          if (!GenUtils.equals(map1[key1], map2[key2])) return false;
-          found = true;
-          break;
-        }
-      }
-      if (!found && map1[key1] !== undefined) return false; // allows undefined values to equal non-existent keys
-    }
-    
-    // compare each key2 to keys1
-    for (let key2 of keys2) {
-      let found = false;
-      for (let key1 of keys1) {
-        if (key1 === key2) {
-          found = true; // no need to re-compare which was done earlier
-          break;
-        }
-      }
-      if (!found && map2[key2] !== undefined) return false; // allows undefined values to equal non-existent keys
-    }
-    return true;
-    
-    // TODO: support strict option?
-//    if (strict) {
-//      let keys1 = Object.keys(map1);
-//      if (keys1.length !== Object.keys(map2).length) return false;
-//      for (let i = 0; i < keys1.length; i++) {
-//        let key = Object.keys(map1)[i];
-//        if (!GenUtils.equals(map1[key], map2[key])) return false;
-//      }
-//    }
-  }
-  
-  /**
-   * Deletes properties from the object that are undefined.
-   * 
-   * @param obj is the object to delete undefined keys from
-   */
-  static deleteUndefinedKeys(obj) {
-    for (let key of Object.keys(obj)) {
-      if (obj[key] === undefined) delete obj[key];
-    }
-  }
-
-  /**
-   * Returns combinations of the given array of the given size.
-   * 
-   * @param arr is the array to get combinations from
-   * @param combinationSize specifies the size of each combination
-   */
-  static getCombinations(arr, combinationSize) {
-    
-    // validate input
-    assertInitialized(arr);
-    assertInitialized(combinationSize);
-    GenUtils.assertTrue(combinationSize >= 1);
-    
-    // get combinations of array indices of the given size
-    let indexCombinations = getPowerSetOfLength(getIndices(arr.length), combinationSize);
-    
-    // collect combinations from each combination of array indices
-    let combinations = [];
-    for (let indexCombinationsIdx = 0; indexCombinationsIdx < indexCombinations.length; indexCombinationsIdx++) {
-      
-      // get combination of array indices
-      let indexCombination = indexCombinations[indexCombinationsIdx];
-      
-      // build combination from array
-      let combination = [];
-      for (let indexCombinationIdx = 0; indexCombinationIdx < indexCombination.length; indexCombinationIdx++) {
-        combination.push(arr[indexCombination[indexCombinationIdx]]);
-      }
-      
-      // add to combinations
-      combinations.push(combination);
-    }
-    
-    return combinations;
-  }
-
-  /**
-   * Gets an 'a' element that is downloadable when clicked.
-   * 
-   * @param name is the name of the file to download
-   * @param contents are the string contents of the file to download
-   * @returns 'a' dom element with downloadable file
-   */
-  static getDownloadableA(name, contents) {
-    let a = window.document.createElement('a');
-    a.href = window.URL.createObjectURL(new Blob([contents], {type: 'text/plain'}));
-    a.download = name;
-    a.target="_blank";
-    a.innerHTML = name;
-    return a;
-  }
-
-  /**
-   * Returns the given node's outer HTML.
-   * 
-   * @param node is the node to get outer HTML for
-   * @returns the outer HTML of the given node
-   */
-  static getOuterHtml(node) {
-    return $('<div>').append($(node).clone()).html();
-  }
-
-  /**
-   * Copies properties in the given object to a new object.
-   * 
-   * @param obj is object to copy properties for
-   * @returns a new object with properties copied from the given object
-   */
-  static copyProperties(obj) {
-    return JSON.parse(JSON.stringify(obj))
-  }
-
-  /**
-   * Deletes all properties in the given object.
-   * 
-   * @param obj is the object to delete properties from
-   */
-  static deleteProperties(obj) {
-    let props = [];
-    for (let prop in obj) props.push(prop); // TODO: if (obj.hasOwnProperty(prop)) { ...
-    for (i = 0; i < props.length; i++) delete obj[props[i].toString()];
-  }
-
-  /**
-   * Converts a CSV string to a 2-dimensional array of strings.
-   * 
-   * @param csv is the CSV string to convert
-   * @returns a 2-dimensional array of strings
-   */
-  static csvToArr(csv) {
-    return $.csv.toArrays(csv);
-  }
-
-  /**
-   * Converts the given array to a CSV string.
-   * 
-   * @param arr is a 2-dimensional array of strings
-   * @returns the CSV string
-   */
-  static arrToCsv(arr) {
-    return $.csv.fromObjects(arr, {headers: false});
-  }
-
-  /**
-   * Indicates if the given string contains whitespace.
-   * 
-   * @param str is the string to test
-   * @returns true if the string contains whitespace, false otherwise
-   */
-  static hasWhitespace(str) {
-    return /\s/g.test(str);
-  }
-
-  /**
-   * Indicates if the given character is whitespace.
-   * 
-   * @param char is the character to test
-   * @returns true if the given character is whitespace, false otherwise
-   */
-  static isWhitespace(char) {
-    return /\s/.test(char);
-  }
-
-  /**
-   * Indicates if the given character is a newline.
-   * 
-   * @param char is the character to test
-   * @returns true if the given character is a newline, false otherwise
-   */
-  static isNewline(char) {
-    return char === '\n' || char === '\r';
-  }
-
-  /**
-   * Counts the number of non-whitespace characters in the given string.
-   * 
-   * @param str is the string to count the number of non-whitespace characters in
-   * @returns int is the number of non-whitespace characters in the given string
-   */
-  static countNonWhitespaceCharacters(str) {
-    let count = 0;
-    for (let i = 0; i < str.length; i++) {
-      if (!isWhitespace(str.charAt(i))) count++;
-    }
-    return count;
-  }
-
-  /**
-   * Returns tokens separated by whitespace from the given string.
-   * 
-   * @param str is the string to get tokens from
-   * @returns string[] are the tokens separated by whitespace within the string
-   */
-  static getWhitespaceTokens(str) {
-    return str.match(/\S+/g);
-  }
-
-  /**
-   * Returns lines separated by newlines from the given string.
-   * 
-   * @param str is the string to get lines from
-   * @param string[] are the lines separated by newlines within the string
-   */
-  static getLines(str) {
-    return str.match(/[^\r\n]+/g);
-  }
-
-  /**
-   * Returns the document's first stylesheet which has no href.
-   * 
-   * @returns StyleSheet is the internal stylesheet
-   */
-  static getInternalStyleSheet() {
-    for (let i = 0; i < document.styleSheets.length; i++) {
-      let styleSheet = document.styleSheets[i];
-      if (!styleSheet.href) return styleSheet;
-    }
-    return null;
-  }
-
-  /**
-   * Returns the document's internal stylesheet as text.
-   * 
-   * @returns str is the document's internal stylesheet
-   */
-  static getInternalStyleSheetText() {
-    let internalCss = "";
-    let internalStyleSheet = getInternalStyleSheet();
-    if (!internalStyleSheet) return null;
-    for (let i = 0; i < internalStyleSheet.cssRules.length; i++) {
-      internalCss += internalStyleSheet.cssRules[i].cssText + "\n";
-    }
-    return internalCss;
-  }
-
-  /**
-   * Manually builds an HTML document string.
-   * 
-   * @param content specifies optional document content
-   *        content.div is a pre-existing div to stringify and add to the body
-   *        content.title is the title of the new tab
-   *        content.dependencyPaths specifies paths to js, css, or img paths
-   *        content.internalCss is css to embed in the html document
-   *        content.metas are meta elements with keys/values to include
-   * @returns str is the document string
-   */
-  static buildHtmlDocument(content) {
-    let str = "<!DOCTYPE HTML>";
-    str += "<html><head>";
-    
-    // add metas
-    if (content.metas) {
-      let metas = listify(content.metas);
-      for (let i = 0; i < metas.length; i++) {
-        let meta = metas[i];
-        let elem = document.createElement("meta");
-        for (let prop in meta) {
-          if (meta.hasOwnProperty(prop)) {
-            elem.setAttribute(prop.toString(), meta[prop.toString()]);
-          }
-        }
-        str += elem.outerHTML;
-      }
-    }
-    
-    // add title and internal css
-    str += content.title ? "<title>" + content.title + "</title>" : "";
-    str += content.internalCss ? "<style>" + content.internalCss + "</style>" : "";
-    
-    // add dependency paths
-    if (content.dependencyPaths) {
-      let dependencyPaths = listify(content.dependencyPaths);
-      for (let i = 0; i < dependencyPaths.length; i++) {
-        let dependencyPath = dependencyPaths[i];
-        if (dependencyPath.endsWith(".js")) str += "<script src='" + dependencyPath + "'></script>";
-        else if (dependencyPath.endsWith(".css")) str += "<link rel='stylesheet' type='text/css' href='" + dependencyPath + "'/>";
-        else if (dependencyPath.endsWith(".png") || dependencyPath.endsWith(".img"))  str += "<img src='" + dependencyPath + "'>";
-        else throw new Error("Unrecognized dependency path extension: " + dependencyPath);      
-      }
-    }
-    str += "</head><body>";
-    if (content.div) str += $("<div>").append(content.div.clone()).html();  // add cloned div as string
-    str += "</body></html>";
-    return str;
-  }
-
-  /**
-   * Opens the given div in a new window.
-   * 
-   * @param content specifies optional window content
-   *        content.div is a pre-existing div to stringify and add to the body
-   *        content.title is the title of the new tab
-   *        content.dependencyPaths specifies paths to js, css, or img paths
-   *        content.internalCss is css to embed in the html document
-   *        content.metas are meta elements with keys/values to include
-   * @param onLoad(err, window) is invoked with a reference to the window when available
-   */
-  static newWindow(content, onLoad) {
-    let onLoadCalled = false;
-    let w = window.open();
-    if (!isInitialized(w) || !isInitialized(w.document)) {
-      onLoadOnce(new Error("Could not get window reference"));
-      return;
-    }
-    w.opener = null;
-    w.document.write(buildHtmlDocument(content));
-    w.addEventListener('load', function() {
-      onLoadOnce(null, w);
-    });
-    w.document.close();
-    
-    // prevents onLoad() from being called multiple times
-    function onLoadOnce(err, window) {
-      if (onLoadCalled) return;
-      onLoadCalled = true;
-      if (onLoad) onLoad(err, window);
-    }
-  }
-
-  /**
-   * Converts the given image to a base64 encoded data url.
-   * 
-   * @param img is the image to convert
-   * @param quality is a number between 0 and 1 specifying the image quality
-   */
-  static imgToDataUrl(img, quality) {
-    let canvas = document.createElement('canvas');
-    canvas.height = img.naturalHeight;
-    canvas.width = img.naturalWidth;
-    let context = canvas.getContext('2d');
-    context.drawImage(img, 0, 0);
-    return canvas.toDataURL(quality);
-  }
-
-  /**
-   * Determines if the image at the given URL is accessible.
-   * 
-   * @param url is the url to an image
-   * @param timeout is the maximum time to wait
-   * @param onDone(bool) when the image is determined to be accessible or not
-   */
-  static isImageAccessible(url, timeout, onDone) {
-    
-    // track return so it only executes once
-    let returned = false;
-    
-    // attempt to load favicon
-    let img = new Image();
-    img.onload = onResponse;
-    img.onerror = onResponse;
-    img.src = url + "?" + (+new Date()); // trigger image load with cache buster
-    
-    // nest failure timeouts to give response a chance when browser is under load
-    setTimeout(function() {
-      setImmediate(function() {
-        setImmediate(function() {
-          setImmediate(function() {
-            if (!returned) {
-              returned = true;
-              onDone(false);
-            }
-          });
-        });
-      });
-    }, timeout);
-    
-    function onResponse(e) {
-      if (returned) return;
-      returned = true;
-      if (typeof e === 'undefined' || e.type === "error") onDone(false);
-      else onDone(true);
-    }
-  }
-
-  /**
-   * Determines if the given file is a zip file.
-   * 
-   * @param file is a file
-   * @returns true if the given file is a zip file, false otherwise
-   */
-  static isZipFile(file) {
-    return file.name.endsWith(".zip") || file.type === 'application/zip';
-  }
-
-  /**
-   * Determines if the given file is a json file.
-   * 
-   * @param file is a file
-   * @returns true if the given file is a json file, false otherwise
-   */
-  static isJsonFile(file) {
-    return file.name.endsWith(".json") || file.type === 'application/json';
-  }
-
-  /**
-   * Determines if the given file is a csv file.
-   * 
-   * @param file is a file
-   * @returns true if the given file is a csv file, false otherwise
-   */
-  static isCsvFile(file) {
-    return file.name.endsWith(".csv") || file.type === 'text/csv';
-  }
-
-  /**
-   * Determines if the given file is a txt file.
-   * 
-   * @param file is a file
-   * @returns true if the given file is a txt file, false otherwise
-   */
-  static isTxtFile(file) {
-    return file.name.endsWith(".txt") || file.type === 'text/plain';
-  }
-
-  /**
-   * Fetches the given list of images.
-   * 
-   * Prerequisite: async.js.
-   * 
-   * @param paths are the paths to the images to fetch
-   * @param onDone(err, images) is called when done
-   */
-  static getImages(paths, onDone) {
-    
-    // listify paths
-    if (!GenUtils.isArray(paths)) {
-      GenUtils.assertTrue(isString(paths));
-      paths = [paths];
-    }
-    
-    // collect functions to fetch images
-    let funcs = [];
-    for (let i = 0; i < paths.length; i++) {
-      funcs.push(loadFunc(paths[i]));
-    }
-    
-    // fetch in parallel
-    async.parallel(funcs, onDone);
-    
-    // callback static to fetch a single image
-    function loadFunc(path) {
-      return function(onDone) {
-        let img = new Image();
-        img.onload = function() { onDone(null, img); }
-        img.onerror = function() { onDone(new Error("Cannot load image: " + path)); }
-        img.src = path;
-      }
-    }
-  }
-  
-  /**
-   * Returns a string indentation of the given length;
-   * 
-   * @param length is the length of the indentation
-   * @returns {string} is an indentation string of the given length
-   */
-  static getIndent(length) {
-    let str = "";
-    for (let i = 0; i < length; i++) str += '  '; // two spaces
-    return str;
-  }
-  
-  static initPolyfills() {
-    
-    // Polyfill Object.assign()
-    // Credit: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign
-    if (typeof Object.assign != 'static') {
-      // Must be writable: true, enumerable: false, configurable: true
-      Object.defineProperty(Object, "assign", {
-        value: function assign(target, varArgs) { // .length of static is 2
-          'use strict';
-          if (target == null) { // TypeError if undefined or null
-            throw new TypeError('Cannot convert undefined or null to object');
-          }
-
-          let to = Object(target);
-
-          for (let index = 1; index < arguments.length; index++) {
-            let nextSource = arguments[index];
-
-            if (nextSource != null) { // Skip over if undefined or null
-              for (let nextKey in nextSource) {
-                // Avoid bugs when hasOwnProperty is shadowed
-                if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {
-                  to[nextKey] = nextSource[nextKey];
-                }
-              }
-            }
-          }
-          return to;
-        },
-        writable: true,
-        configurable: true
-      });
-    }
-    
-    /**
-     * Polyfill str.replaceAt(idx, replacement).
-     */
-    String.prototype.replaceAt=function(idx, replacement) {
-      return this.substr(0, idx) + replacement + this.substr(idx + replacement.length);
-    }
-
-    /**
-     * Polyfill str.startsWith(searchString, position).
-     * 
-     * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith#Polyfill
-     */
-    String.prototype.startsWith = function(searchString, position) {
-      return this.substr(position || 0, searchString.length) === searchString;
-    };
-
-    /**
-     * Polyfill str.endsWith(searchString, position).
-     * 
-     * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith#Polyfill
-     */
-    String.prototype.endsWith = function(searchString, position) {
-      if (!(position < this.length)) position = this.length;  // works better than >= because it compensates for NaN
-      else position |= 0; // round position
-      return this.substr(position - searchString.length, searchString.length) === searchString;
-    }
-
-    /**
-     * Removes the given value from the array.
-     * 
-     * @returns true if the value was found and removed, false otherwise
-     */
-    Array.prototype.removeVal = function(val) {
-      var found = false;
-      for (var i = 0; i < this.length; i++) {
-        if (this[i] == val) {    
-          found = true;
-          this.splice(i, 1);
-          i--;
-        }
-      }
-      return found;;
-    };
-  }
-
-  /**
-   * Generates a v4 UUID.
-   * 
-   * Source: https://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript
-   */
-  static getUUID() {
-    return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
-      let r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
-      return v.toString(16);
-    });
-  }
-  
-  /**
-   * Indicates if the current environment is a browser.
-   * 
-   * @return {boolean} true if the environment is a browser, false otherwise
-   */
-  static isBrowser() {
-    let isWorker = typeof importScripts === 'function';
-    let isBrowserMain = new Function("try {return this===window;}catch(e){return false;}")();
-    let isJsDom = isBrowserMain ? new Function("try {return window.navigator.userAgent.includes('jsdom');}catch(e){return false;}")() : false;
-    return isWorker || (isBrowserMain && !isJsDom);
-  }
-  
-  /**
-   * Indicates if the current environment is a firefox-based browser.
-   * 
-   * @return {boolean} true if the environment is a firefox-based browser, false otherwise
-   */
-  static isFirefox() {
-    return this.isBrowser() && navigator.userAgent.indexOf("Firefox") > 0;
-  }
-
-  /**
-   * Gets the IE version number.
-   * 
-   * Credit: https://stackoverflow.com/questions/19999388/check-if-user-is-using-ie-with-jquery/21712356#21712356
-   * 
-   * @returns the IE version number or null if not IE
-   */
-  static getIEVersion() {
-    let ua = window.navigator.userAgent;
-
-    let msie = ua.indexOf('MSIE ');
-    if (msie > 0) {
-        // IE 10 or older => return version number
-        return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);
-    }
-
-    let trident = ua.indexOf('Trident/');
-    if (trident > 0) {
-        // IE 11 => return version number
-        let rv = ua.indexOf('rv:');
-        return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);
-    }
-
-    let edge = ua.indexOf('Edge/');
-    if (edge > 0) {
-       // Edge (IE 12+) => return version number
-       return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);
-    }
-
-    // other browser
-    return null;
-  }
-
-  /**
-   * Gets a parameter value.
-   * 
-   * Credit: https://stackoverflow.com/questions/901115/how-can-i-get-query-string-values-in-javascript
-   * 
-   * @param name is the name of the parameter to get the value of
-   * @param url is a URL to get the parameter from, uses the window's current href if not given
-   * @returns the parameter's value
-   */
-  static getParameterByName(name, url) {
-    if (!url) url = window.location.href;
-    name = name.replace(/[\[\]]/g, "\\$&");
-    let regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"), results = regex.exec(url);
-    if (!results) return null;
-    if (!results[2]) return '';
-    return decodeURIComponent(results[2].replace(/\+/g, " "));
-  }
-  
-  /**
-   * Gets a non-cryptographically secure random number within a given range.
-   * 
-   * @param min is the minimum range of the int to generate, inclusive
-   * @param max is the maximum range of the int to generate, inclusive
-   * 
-   * Source: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/random
-   */
-  static getRandomInt(min, max) {
-    min = Math.ceil(min);
-    max = Math.floor(max);
-    return Math.floor(Math.random() * (max - min + 1)) + min;
-  }
-  
-  /**
-   * Gets random ints.
-   * 
-   * @param min is the minimum range of the ints to generate, inclusive
-   * @param max is the maximum range of the ints to generate, inclusive
-   * @param count is the number of random ints to get
-   */
-  static getRandomInts(min, max, count) {
-    GenUtils.assertTrue(typeof count === "number");
-    let ints = [];
-    for (let i = 0; i < count; i++) ints.push(GenUtils.getRandomInt(min, max));
-    return ints;
-  }
-  
-  /**
-   * Gets a given number of unique random ints within a range.
-   * 
-   * @param min is the minimum range of the ints to generate, inclusive
-   * @param max is the maximum range of the ints to generate, inclusive
-   * @param count is the number of unique random ints to get
-   */
-  static getUniqueRandomInts(min, max, count) {
-    let ints = [];
-    GenUtils.assertTrue(count >= 0);
-    GenUtils.assertTrue(max - min + 1 >= count);
-    while (ints.length < count) {
-      let randomInt = GenUtils.getRandomInt(min, max);
-      if (!ints.includes(randomInt)) ints.push(randomInt);
-    }
-    return ints;
-  }
-  
-  /**
-   * Randomize array element order in-place using Durstenfeld shuffle algorithm.
-   * 
-   * Credit: https://stackoverflow.com/questions/2450954/how-to-randomize-shuffle-a-javascript-array
-   */
-  static shuffle(array) {
-    for (var i = array.length - 1; i > 0; i--) {
-      var j = Math.floor(Math.random() * (i + 1));
-      var temp = array[i];
-      array[i] = array[j];
-      array[j] = temp;
-    }
-  }
-  
-  /**
-   * Sorts an array by natural ordering.
-   * 
-   * @param the array to sort
-   */
-  static sort(array) {
-    array.sort((a, b) => a === b ? 0 : a > b ? 1 : -1);
-  }
-  
-  /**
-   * Sets the given value ensuring a previous value is not overwritten.
-   * 
-   * TODO: remove for portability because function passing not supported in other languages, use reconcile only
-   * 
-   * @param obj is the object to invoke the getter and setter on
-   * @param getFn gets the current value
-   * @param setFn sets the current value
-   * @param val is the value to set iff it does not overwrite a previous value
-   * @param config specifies reconciliation configuration
-   *        config.resolveDefined uses defined value if true or undefined, undefined if false
-   *        config.resolveTrue uses true over false if true, false over true if false, must be equal if undefined
-   *        config.resolveMax uses max over min if true, min over max if false, must be equal if undefined
-   * @param errMsg is the error message to throw if the values cannot be reconciled (optional)
-   */
-  static safeSet(obj, getFn, setFn, val, config, errMsg) {
-    let curVal = getFn.call(obj);
-    let reconciledVal = GenUtils.reconcile(curVal, val, config, errMsg);
-    if (curVal !== reconciledVal) setFn.call(obj, reconciledVal);
-  }
-  
-  /**
-   * Reconciles two values.
-   * 
-   * TODO: remove custom error message
-   * 
-   * @param val1 is a value to reconcile
-   * @param val2 is a value to reconcile
-   * @param config specifies reconciliation configuration
-   *        config.resolveDefined uses defined value if true or undefined, undefined if false
-   *        config.resolveTrue uses true over false if true, false over true if false, must be equal if undefined
-   *        config.resolveMax uses max over min if true, min over max if false, must be equal if undefined
-   * @param errMsg is the error message to throw if the values cannot be reconciled (optional)
-   * @returns the reconciled value if reconcilable, throws error otherwise
-   */
-  static reconcile(val1, val2, config, errMsg) {
-    
-    // check for equality
-    if (val1 === val2) return val1;
-    
-    // check for BigInteger equality
-    let comparison; // save comparison for later if applicable
-    if (val1 instanceof BigInteger && val2 instanceof BigInteger) {
-      comparison = val1.compare(val2);  
-      if (comparison === 0) return val1;
-    }
-    
-    // resolve one value defined
-    if (val1 === undefined || val2 === undefined) {
-      if (config && config.resolveDefined === false) return undefined;  // use undefined
-      else return val1 === undefined ? val2 : val1;  // use defined value
-    }
-    
-    // resolve different booleans
-    if (config && config.resolveTrue !== undefined && typeof val1 === "boolean" && typeof val2 === "boolean") {
-      assert.equal(typeof config.resolveTrue, "boolean");
-      return config.resolveTrue;
-    }
-    
-    // resolve different numbers
-    if (config && config.resolveMax !== undefined) {
-      assert.equal(typeof config.resolveMax, "boolean");
-      
-      // resolve js numbers
-      if (typeof val1 === "number" && typeof val2 === "number") {
-        return config.resolveMax ? Math.max(val1, val2) : Math.min(val1, val2);
-      }
-      
-      // resolve BigIntegers
-      if (val1 instanceof BigInteger && val2 instanceof BigInteger) {
-        return config.resolveMax ? (comparison < 0 ? val2 : val1) : (comparison < 0 ? val1 : val2);
-      }
-    }
-    
-    // assert deep equality
-    assert.deepEqual(val1, val2, errMsg ? errMsg : "Cannot reconcile values " + val1 + " and " + val2 + " with config: " + JSON.stringify(config));
-    return val1;
-  }
-  
-  /**
-   * Returns a human-friendly key value line.
-   * 
-   * @param key is the key
-   * @param value is the value
-   * @param indent indents the line
-   * @param newline specifies if the string should be terminated with a newline or not
-   * @param ignoreUndefined specifies if undefined values should return an empty string
-   * @returns {string} is the human-friendly key value line
-   */
-  static kvLine(key, value, indent = 0, newline = true, ignoreUndefined = true) {
-    if (value === undefined && ignoreUndefined) return "";
-    return GenUtils.getIndent(indent) + key + ": " + value + (newline ? '\n' : "");
-  }
-  
-  /**
-   * Replace big integers (16 or more consecutive digits) with strings in order
-   * to preserve numeric precision.
-   * 
-   * @param {string} str is the string to be modified
-   * @return {string} the modified string with big numbers converted to strings
-   */
-  static stringifyBIs(str) {
-    return str.replace(/("[^"]*"\s*:\s*)(\d{16,})/g, '$1"$2"');
-  }
-  
-  /**
-   * Print the current stack trace. 
-   * 
-   * @param {string} msg - optional message to print with the trace
-   */
-  static printStackTrace(msg) {
-    try { throw new Error(msg); }
-    catch (err) { console.error(err.stack); }
-  }
-  
-  /**
-   * Wait for the duration.
-   * 
-   * @param {number} durationMs - the duration to wait for in milliseconds
-   */
-  static async waitFor(durationMs) {
-    return new Promise(function(resolve) { setTimeout(resolve, durationMs); });
-  }
-  
-  /**
-   * Kill the given nodejs child process.
-   * 
-   * @param {process} process - the nodejs child process to kill
-   * @param {string|undefined} signal - the kill signal, e.g. SIGTERM, SIGKILL, SIGINT (default)
-   * @return {Promise<number|undefined>} the exit code from killing the process
-   */
-  static async killProcess(process, signal) {
-    return new Promise((resolve, reject) => {
-      process.on("exit", function(code, signal) { resolve(code); });
-      process.on("error", function(err) { reject(err); });
-      try {
-        if (!process.kill(signal ? signal : "SIGINT")) resolve(); // resolve immediately if not running
-      } catch (err) {
-        reject(err);
-      }
-    });
-  }
-
-  /**
-   * Normalize a URI.
-   * 
-   * @param {string} uri - the URI to normalize
-   * @return {string} the normalized URI
-   */
-  static normalizeUri(uri) {
-    if (!uri) throw Error("Must provide URI to normalize");
-    uri = uri.replace(/\/$/, ""); // strip trailing slash
-    if (!new RegExp("^\\w+://.+").test(uri)) uri= "http://" + uri; // assume http if protocol not given
-    return uri;
-  }
-}
-
-module.exports = GenUtils;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_common_HttpClient.js.html b/docs/src_main_js_common_HttpClient.js.html deleted file mode 100644 index 62135f146..000000000 --- a/docs/src_main_js_common_HttpClient.js.html +++ /dev/null @@ -1,546 +0,0 @@ - - - - - JSDoc: Source: src/main/js/common/HttpClient.js - - - - - - - - - - -
- -

Source: src/main/js/common/HttpClient.js

- - - - - - -
-
-
const GenUtils = require("../common/GenUtils");
-const LibraryUtils = require("./LibraryUtils");
-const MoneroUtils = require("./MoneroUtils");
-const ThreadPool = require("./ThreadPool");
-const PromiseThrottle = require("promise-throttle");
-const Request = require("request-promise");
-
-/**
- * Handle HTTP requests with a uniform interface.
- * 
- * @hideconstructor
- */
-class HttpClient {
-  
-  /**
-   * <p>Make a HTTP request.<p>
-   * 
-   * @param {object} request - configures the request to make
-   * @param {string} request.method - HTTP method ("GET", "PUT", "POST", "DELETE", etc)
-   * @param {string} request.uri - uri to request
-   * @param {string|object|Uint8Array} request.body - request body
-   * @param {string} request.username - username to authenticate the request (optional)
-   * @param {string} request.password - password to authenticate the request (optional)
-   * @param {object} request.headers - headers to add to the request (optional)
-   * @param {string} request.requestApi - one of "fetch" or "xhr" (default "fetch")
-   * @param {boolean} request.resolveWithFullResponse - return full response if true, else body only (default false)
-   * @param {boolean} request.rejectUnauthorized - whether or not to reject self-signed certificates (default true)
-   * @param {number} request.timeout - maximum time allowed in milliseconds
-   * @param {number} request.proxyToWorker - proxy request to worker thread
-   * @returns {object} response - the response object
-   * @returns {string|object|Uint8Array} response.body - the response body
-   * @returns {number} response.statusCode - the response code
-   * @returns {String} response.statusText - the response message
-   * @returns {object} response.headers - the response headers
-   */
-  static async request(request) {
-    
-    // proxy to worker if configured
-    if (request.proxyToWorker) {
-      try {
-        return await LibraryUtils.invokeWorker(undefined, "httpRequest", request);
-      } catch (err) {
-        if (err.message.length > 0 && err.message.charAt(0) === "{") {
-          let parsed = JSON.parse(err.message);
-          err.message = parsed.statusMessage;
-          err.statusCode = parsed.statusCode;
-        }
-        throw err;
-      }
-    }
-    
-    // assign defaults
-    request = Object.assign({}, HttpClient._DEFAULT_REQUEST, request);
-    
-    // validate request
-    try { request.host = new URL(request.uri).host; } // hostname:port
-    catch (err) { throw new Error("Invalid request URL: " + request.uri); }
-    if (request.body && !(typeof request.body === "string" || typeof request.body === "object")) {
-      throw new Error("Request body type is not string or object");
-    }
-    
-    // initialize one task queue per host
-    if (!HttpClient._TASK_QUEUES[request.host]) HttpClient._TASK_QUEUES[request.host] = new ThreadPool(1);
-    
-    // initialize one promise throttle per host
-    if (!HttpClient._PROMISE_THROTTLES[request.host]) {
-      HttpClient._PROMISE_THROTTLES[request.host] = new PromiseThrottle({
-        requestsPerSecond: MoneroUtils.MAX_REQUESTS_PER_SECOND, // TODO: HttpClient should not depend on MoneroUtils for configuration
-        promiseImplementation: Promise
-      });
-    }
-    
-    // request using fetch or xhr with timeout
-    let timeout = request.timeout === undefined ? HttpClient._DEFAULT_TIMEOUT : request.timeout === 0 ? HttpClient.MAX_TIMEOUT : request.timeout;
-    let requestPromise = request.requestApi === "fetch" ? HttpClient._requestFetch(request) : HttpClient._requestXhr(request);
-    let timeoutPromise = new Promise((resolve, reject) => {
-      let id = setTimeout(() => {
-        clearTimeout(id);
-        reject('Request timed out in '+ timeout + ' milliseconds')
-      }, timeout);
-    });
-    return Promise.race([requestPromise, timeoutPromise]);
-  }
-  
-  // ----------------------------- PRIVATE HELPERS ----------------------------
-  
-  static async _requestFetch(req) {
-    
-    // build request options
-    let opts = {
-      method: req.method,
-      uri: req.uri,
-      body: req.body,
-      agent: req.uri.startsWith("https") ? HttpClient._getHttpsAgent() : HttpClient._getHttpAgent(),
-      rejectUnauthorized: req.rejectUnauthorized,
-      resolveWithFullResponse: req.resolveWithFullResponse,
-      requestCert: true // TODO: part of config?
-    };
-    if (req.username) {
-      opts.forever = true;
-      opts.auth = {
-        user: req.username,
-        pass: req.password,
-        sendImmediately: false
-      }
-    }
-    if (req.body instanceof Uint8Array) opts.encoding = null;
-    
-    // queue and throttle request to execute in serial and rate limited
-    let host = req.host;
-    let resp = await HttpClient._TASK_QUEUES[host].submit(async function() {
-      return HttpClient._PROMISE_THROTTLES[host].add(function(opts) { return Request(opts); }.bind(this, opts));
-    });
-    
-    // normalize response
-    let normalizedResponse = {};
-    if (req.resolveWithFullResponse) {
-      normalizedResponse.statusCode = resp.statusCode;
-      normalizedResponse.statusText = resp.statusMessage;
-      normalizedResponse.headers = resp.headers;
-      normalizedResponse.body = resp.body;
-    } else {
-      normalizedResponse.body = resp;
-    }
-    return normalizedResponse;
-  }
-  
-  static async _requestXhr(req) {
-    if (req.headers) throw new Error("Custom headers not implemented in XHR request");  // TODO
-    
-    // collect params from request which change on await
-    let method = req.method;
-    let uri = req.uri;
-    let host = req.host;
-    let username = req.username;
-    let password = req.password;
-    let body = req.body;
-    let isBinary = body instanceof Uint8Array;
-    
-    // queue and throttle requests to execute in serial and rate limited per host
-    let resp = await HttpClient._TASK_QUEUES[host].submit(async function() {
-      return HttpClient._PROMISE_THROTTLES[host].add(function() {
-        return new Promise(function(resolve, reject) {
-          let digestAuthRequest = new HttpClient.digestAuthRequest(method, uri, username, password);
-          digestAuthRequest.request(function(resp) {
-            resolve(resp);
-          }, function(resp) {
-            if (resp.status) resolve(resp);
-            else reject(new Error("Request failed without response: " + method + " " + uri));
-          }, body);
-        });
-      }.bind(this));
-    });
-    
-    // normalize response
-    let normalizedResponse = {};
-    normalizedResponse.statusCode = resp.status;
-    normalizedResponse.statusText = resp.statusText;
-    normalizedResponse.headers = HttpClient._parseXhrResponseHeaders(resp.getAllResponseHeaders());
-    normalizedResponse.body = isBinary ? new Uint8Array(resp.response) : resp.response;
-    if (normalizedResponse.body instanceof ArrayBuffer) normalizedResponse.body = new Uint8Array(normalizedResponse.body);  // handle empty binary request
-    return normalizedResponse;
-  }
-  
-  /**
-   * Get a singleton instance of an HTTP client to share.
-   * 
-   * @return {http.Agent} a shared agent for network requests among library instances
-   */
-  static _getHttpAgent() {
-    if (!HttpClient.HTTP_AGENT) {
-      let http = require('http');
-      HttpClient.HTTP_AGENT = new http.Agent({keepAlive: true});
-    }
-    return HttpClient.HTTP_AGENT;
-  }
-  
-  /**
-   * Get a singleton instance of an HTTPS client to share.
-   * 
-   * @return {https.Agent} a shared agent for network requests among library instances
-   */
-  static _getHttpsAgent() {
-    if (!HttpClient.HTTPS_AGENT) {
-      let https = require('https');
-      HttpClient.HTTPS_AGENT = new https.Agent({keepAlive: true});
-    }
-    return HttpClient.HTTPS_AGENT;
-  }
-  
-  
-  static _parseXhrResponseHeaders(headersStr) {
-    let headerMap = {};
-    let headers = headersStr.trim().split(/[\r\n]+/);
-    for (let header of headers) {
-      let headerVals = header.split(": ");
-      headerMap[headerVals[0]] = headerVals[1];
-    }
-    return headerMap;
-  }
-}
-
-/**
- * Modification of digest auth request by @inorganik.
- * 
- * Dependent on CryptoJS MD5 hashing: http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/md5.js
- * 
- * MIT licensed.
- */
-HttpClient.digestAuthRequest = function(method, url, username, password) {
-  var self = this;
-
-  if (typeof CryptoJS === 'undefined' && typeof require === 'function') {
-    var CryptoJS = require('crypto-js');
-  }
-
-  this.scheme = null; // we just echo the scheme, to allow for 'Digest', 'X-Digest', 'JDigest' etc
-  this.nonce = null; // server issued nonce
-  this.realm = null; // server issued realm
-  this.qop = null; // "quality of protection" - '' or 'auth' or 'auth-int'
-  this.response = null; // hashed response to server challenge
-  this.opaque = null; // hashed response to server challenge
-  this.nc = 1; // nonce count - increments with each request used with the same nonce
-  this.cnonce = null; // client nonce
-
-  // settings
-  this.timeout = 60000; // timeout
-  this.loggingOn = false; // toggle console logging
-
-  // determine if a post, so that request will send data
-  this.post = false;
-  if (method.toLowerCase() === 'post' || method.toLowerCase() === 'put') {
-    this.post = true;
-  }
-
-  // start here
-  // successFn - will be passed JSON data
-  // errorFn - will be passed the failed authenticatedRequest
-  // data - optional, for POSTS
-  this.request = function(successFn, errorFn, data) {
-    
-    // stringify json
-    if (data) {
-      try {
-        self.data = data instanceof Uint8Array || typeof data === "string" ? data : JSON.stringify(data);
-      } catch (err) {
-        console.error(err);
-        throw err;
-      }
-    }
-    self.successFn = successFn;
-    self.errorFn = errorFn;
-
-    if (!self.nonce) {
-      self.makeUnauthenticatedRequest(self.data);
-    } else {
-      self.makeAuthenticatedRequest();
-    }
-  }
-  this.makeUnauthenticatedRequest = function(data) {
-    self.firstRequest = new XMLHttpRequest();
-    self.firstRequest.open(method, url, true);
-    self.firstRequest.timeout = self.timeout;
-    // if we are posting, add appropriate headers
-    if (self.post && data) {
-      if (typeof data === "string") {
-        self.firstRequest.setRequestHeader('Content-type', 'text/plain');
-      } else {
-        self.firstRequest.responseType = "arraybuffer";
-      }
-    }
-
-    self.firstRequest.onreadystatechange = function() {
-
-      // 2: received headers,  3: loading, 4: done
-      if (self.firstRequest.readyState === 2) {
-
-        var responseHeaders = self.firstRequest.getAllResponseHeaders();
-        responseHeaders = responseHeaders.split('\n');
-        // get authenticate header
-        var digestHeaders;
-        for(var i = 0; i < responseHeaders.length; i++) {
-          if (responseHeaders[i].match(/www-authenticate/i) != null) {
-            digestHeaders = responseHeaders[i];
-          }
-        }
-
-        if (digestHeaders != null) {
-          // parse auth header and get digest auth keys
-          digestHeaders = digestHeaders.slice(digestHeaders.indexOf(':') + 1, -1);
-          digestHeaders = digestHeaders.split(',');
-          self.scheme = digestHeaders[0].split(/\s/)[1];
-          for (var i = 0; i < digestHeaders.length; i++) {
-            var equalIndex = digestHeaders[i].indexOf('='),
-              key = digestHeaders[i].substring(0, equalIndex),
-              val = digestHeaders[i].substring(equalIndex + 1);
-            val = val.replace(/['"]+/g, '');
-            // find realm
-            if (key.match(/realm/i) != null) {
-              self.realm = val;
-            }
-            // find nonce
-            if (key.match(/nonce/i) != null) {
-              self.nonce = val;
-            }
-            // find opaque
-            if (key.match(/opaque/i) != null) {
-              self.opaque = val;
-            }
-            // find QOP
-            if (key.match(/qop/i) != null) {
-              self.qop = val;
-            }
-          }
-          // client generated keys
-          self.cnonce = self.generateCnonce();
-          self.nc++;
-          // if logging, show headers received:
-          self.log('received headers:');
-          self.log('  realm: '+self.realm);
-          self.log('  nonce: '+self.nonce);
-          self.log('  opaque: '+self.opaque);
-          self.log('  qop: '+self.qop);
-          // now we can make an authenticated request
-          self.makeAuthenticatedRequest();
-        }
-      }
-      if (self.firstRequest.readyState === 4) {
-        if (self.firstRequest.status === 200) {
-          self.log('Authentication not required for '+url);
-          if (data instanceof Uint8Array) {
-            self.successFn(self.firstRequest);
-          } else {
-            if (self.firstRequest.responseText !== 'undefined') {
-              if (self.firstRequest.responseText.length > 0) {
-                // If JSON, parse and return object
-                if (self.isJson(self.firstRequest.responseText)) {  // TODO: redundant
-                  self.successFn(self.firstRequest);
-                } else {
-                  self.successFn(self.firstRequest);
-                }
-              }
-            } else {
-              self.successFn();
-            }
-          }
-        }
-      }
-    }
-    // send
-    if (self.post) {
-      // in case digest auth not required
-      self.firstRequest.send(self.data);
-    } else {
-      self.firstRequest.send();
-    }
-    self.log('Unauthenticated request to '+url);
-
-    // handle error
-    self.firstRequest.onerror = function() {
-      if (self.firstRequest.status !== 401) {
-        self.log('Error ('+self.firstRequest.status+') on unauthenticated request to '+url);
-        self.errorFn(self.firstRequest);
-      }
-    }
-  }
-  this.makeAuthenticatedRequest= function() {
-
-    self.response = self.formulateResponse();
-    self.authenticatedRequest = new XMLHttpRequest();
-    self.authenticatedRequest.open(method, url, true);
-    self.authenticatedRequest.timeout = self.timeout;
-    var digestAuthHeader = self.scheme+' '+
-      'username="'+username+'", '+
-      'realm="'+self.realm+'", '+
-      'nonce="'+self.nonce+'", '+
-      'uri="'+url+'", '+
-      'response="'+self.response+'", '+
-      'opaque="'+self.opaque+'", '+
-      'qop='+self.qop+', '+
-      'nc='+('00000000' + self.nc).slice(-8)+', '+
-      'cnonce="'+self.cnonce+'"';
-    self.authenticatedRequest.setRequestHeader('Authorization', digestAuthHeader);
-    self.log('digest auth header response to be sent:');
-    self.log(digestAuthHeader);
-    // if we are posting, add appropriate headers
-    if (self.post && self.data) {
-      if (typeof self.data === "string") {
-        self.authenticatedRequest.setRequestHeader('Content-type', 'text/plain');
-      } else {
-        self.authenticatedRequest.responseType = "arraybuffer";        
-      }
-    }
-    self.authenticatedRequest.onload = function() {
-      // success
-      if (self.authenticatedRequest.status >= 200 && self.authenticatedRequest.status < 400) {
-        // increment nonce count
-        self.nc++;
-        // return data
-        if (self.data instanceof Uint8Array) {
-          self.successFn(self.authenticatedRequest);
-        } else {
-          if (self.authenticatedRequest.responseText !== 'undefined' && self.authenticatedRequest.responseText.length > 0 ) {
-            // If JSON, parse and return object
-            if (self.isJson(self.authenticatedRequest.responseText)) {  // TODO: redundant from not parsing
-              self.successFn(self.authenticatedRequest);
-            } else {
-              self.successFn(self.authenticatedRequest);
-            }
-          } else {
-           self.successFn();
-          }
-        }
-      }
-      // failure
-      else {
-        self.nonce = null;
-        self.errorFn(self.authenticatedRequest);
-      }
-    }
-    // handle errors
-    self.authenticatedRequest.onerror = function() {
-      self.log('Error ('+self.authenticatedRequest.status+') on authenticated request to '+url);
-      self.nonce = null;
-      self.errorFn(self.authenticatedRequest);
-    };
-    // send
-    if (self.post) {
-      self.authenticatedRequest.send(self.data);
-    } else {
-      self.authenticatedRequest.send();
-    }
-    self.log('Authenticated request to '+url);
-  }
-  // hash response based on server challenge
-  this.formulateResponse = function() {
-    var HA1 = CryptoJS.MD5(username+':'+self.realm+':'+password).toString();
-    var HA2 = CryptoJS.MD5(method+':'+url).toString();
-    var response = CryptoJS.MD5(HA1+':'+
-      self.nonce+':'+
-      ('00000000' + self.nc).slice(-8)+':'+
-      self.cnonce+':'+
-      self.qop+':'+
-      HA2).toString();
-    return response;
-  }
-  // generate 16 char client nonce
-  this.generateCnonce = function() {
-    var characters = 'abcdef0123456789';
-    var token = '';
-    for (var i = 0; i < 16; i++) {
-      var randNum = Math.round(Math.random() * characters.length);
-      token += characters.substr(randNum, 1);
-    }
-    return token;
-  }
-  this.abort = function() {
-    self.log('[digestAuthRequest] Aborted request to '+url);
-    if (self.firstRequest != null) {
-      if (self.firstRequest.readyState != 4) self.firstRequest.abort();
-    }
-    if (self.authenticatedRequest != null) {
-      if (self.authenticatedRequest.readyState != 4) self.authenticatedRequest.abort();
-    }
-  }
-  this.isJson = function(str) {
-    try {
-      JSON.parse(str);
-    } catch (err) {
-      return false;
-    }
-    return true;
-  }
-  this.log = function(str) {
-    if (self.loggingOn) {
-      console.log('[digestAuthRequest] '+str);
-    }
-  }
-  this.version = function() { return '0.8.0' }
-}
-
-// default request config
-HttpClient._DEFAULT_REQUEST = {
-  method: "GET",
-  requestApi: "fetch",
-  resolveWithFullResponse: false,
-  rejectUnauthorized: true
-}
-
-// rate limit requests per host
-HttpClient._PROMISE_THROTTLES = [];
-HttpClient._TASK_QUEUES = [];
-HttpClient._DEFAULT_TIMEOUT = 60000;
-HttpClient.MAX_TIMEOUT = 2147483647; // max 32-bit signed number
-
-module.exports = HttpClient;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_common_LibraryUtils.js.html b/docs/src_main_js_common_LibraryUtils.js.html deleted file mode 100644 index 6ab6d8883..000000000 --- a/docs/src_main_js_common_LibraryUtils.js.html +++ /dev/null @@ -1,306 +0,0 @@ - - - - - JSDoc: Source: src/main/js/common/LibraryUtils.js - - - - - - - - - - -
- -

Source: src/main/js/common/LibraryUtils.js

- - - - - - -
-
-
const assert = require("assert");
-const GenUtils = require("./GenUtils");
-const MoneroError = require("./MoneroError");
-const ThreadPool = require("./ThreadPool");
-
-/**
- * Collection of helper utilities for the library.
- * 
- * @hideconstructor
- */
-class LibraryUtils {
-  
-  /**
-   * Log a message.
-   *
-   * @param {int} level - log level of the message
-   * @param {string} msg - message to log
-   */
-  static log(level, msg) {
-    assert(level === parseInt(level, 10) && level >= 0, "Log level must be an integer >= 0");
-    if (LibraryUtils.LOG_LEVEL >= level) console.log(msg);
-  }
-  
-  /**
-   * Set the library's log level with 0 being least verbose.
-   *
-   * @param {int} level - the library's log level
-   */
-  static async setLogLevel(level) {
-    assert(level === parseInt(level, 10) && level >= 0, "Log level must be an integer >= 0");
-    LibraryUtils.LOG_LEVEL = level;
-    if (LibraryUtils.WASM_MODULE) LibraryUtils.WASM_MODULE.set_log_level(level);
-    if (LibraryUtils.WORKER) await LibraryUtils.invokeWorker(undefined, "setLogLevel", [level]);
-  }
-  
-  /**
-   * Get the library's log level.
-   *
-   * @return {int} the library's log level
-   */
-  static getLogLevel() {
-    return LibraryUtils.LOG_LEVEL;
-  }
-  
-  /**
-   * Get the total memory used by WebAssembly.
-   * 
-   * @return {int} the total memory used by WebAssembly
-   */
-  static async getWasmMemoryUsed() {
-    let total = 0;
-    if (LibraryUtils.WORKER) total += await LibraryUtils.invokeWorker(undefined, "getWasmMemoryUsed", []);
-    if (LibraryUtils.getWasmModule() && LibraryUtils.getWasmModule().HEAP8) total += LibraryUtils.getWasmModule().HEAP8.length;
-    return total;
-  }
-  
-  /**
-   * Get the WebAssembly module in the current context (nodejs, browser main thread or worker).
-   */
-  static getWasmModule() {
-    return LibraryUtils.WASM_MODULE;
-  }
-  
-  /**
-   * Load the WebAssembly keys module with caching.
-   */
-  static async loadKeysModule() {
-    
-    // use cache if suitable, full module supersedes keys module because it is superset
-    if (LibraryUtils.WASM_MODULE) return LibraryUtils.WASM_MODULE;
-    
-    // load module
-    delete LibraryUtils.WASM_MODULE;
-    LibraryUtils.WASM_MODULE = require("../../../../dist/monero_wallet_keys")();
-    return new Promise(function(resolve, reject) {
-      LibraryUtils.WASM_MODULE.then(module => {
-        LibraryUtils.WASM_MODULE = module
-        delete LibraryUtils.WASM_MODULE.then;
-        LibraryUtils._initWasmModule(LibraryUtils.WASM_MODULE);
-        resolve(LibraryUtils.WASM_MODULE);
-      });
-    });
-  }
-  
-  /**
-   * Load the WebAssembly full module with caching.
-   * 
-   * The full module is a superset of the keys module and overrides it.
-   * 
-   * TODO: this is separate static function from loadKeysModule() because webpack cannot bundle worker using runtime param for conditional import
-   */
-  static async loadFullModule() {
-    
-    // use cache if suitable, full module supersedes keys module because it is superset
-    if (LibraryUtils.WASM_MODULE && LibraryUtils.FULL_LOADED) return LibraryUtils.WASM_MODULE;
-    
-    // load module
-    delete LibraryUtils.WASM_MODULE;
-    LibraryUtils.WASM_MODULE = require("../../../../dist/monero_wallet_full")();
-    return new Promise(function(resolve, reject) {
-      LibraryUtils.WASM_MODULE.then(module => {
-        LibraryUtils.WASM_MODULE = module;
-        delete LibraryUtils.WASM_MODULE.then;
-        LibraryUtils.FULL_LOADED = true;
-        LibraryUtils._initWasmModule(LibraryUtils.WASM_MODULE);
-        resolve(LibraryUtils.WASM_MODULE);
-      });
-    });
-  }
-  
-  /**
-   * Register a function by id which informs if unauthorized requests (e.g.
-   * self-signed certificates) should be rejected.
-   * 
-   * @param {string} fnId - unique identifier for the function
-   * @param {function} fn - function to inform if unauthorized requests should be rejected
-   */
-  static setRejectUnauthorizedFn(fnId, fn) {
-    if (!LibraryUtils.REJECT_UNAUTHORIZED_FNS) LibraryUtils.REJECT_UNAUTHORIZED_FNS = [];
-    if (fn === undefined) delete LibraryUtils.REJECT_UNAUTHORIZED_FNS[fnId];
-    else LibraryUtils.REJECT_UNAUTHORIZED_FNS[fnId] = fn;
-  }
-  
-  /**
-   * Indicate if unauthorized requests should be rejected.
-   * 
-   * @param {string} fnId - uniquely identifies the function
-   */
-  static isRejectUnauthorized(fnId) {
-    if (!LibraryUtils.REJECT_UNAUTHORIZED_FNS[fnId]) throw new Error("No function registered with id " + fnId + " to inform if unauthorized reqs should be rejected");
-    return LibraryUtils.REJECT_UNAUTHORIZED_FNS[fnId]();
-  }
-  
-  /**
-   * Set the path to load the worker. Defaults to "/monero_web_worker.js" in the browser
-   * and "./MoneroWebWorker.js" in node.
-   * 
-   * @param {string} workerDistPath - path to load the worker
-   */
-  static setWorkerDistPath(workerDistPath) {
-    let path = LibraryUtils._prefixWindowsPath(workerDistPath ? workerDistPath : LibraryUtils.WORKER_DIST_PATH_DEFAULT);
-    if (path !== LibraryUtils.WORKER_DIST_PATH) delete LibraryUtils.WORKER;
-    LibraryUtils.WORKER_DIST_PATH = path;
-  }
-
-  /**
-   * Get a singleton instance of a worker to share.
-   * 
-   * @return {Worker} a worker to share among wallet instances
-   */
-  static async getWorker() {
-    
-    // one time initialization
-    if (!LibraryUtils.WORKER) {
-      if (GenUtils.isBrowser()) LibraryUtils.WORKER = new Worker(LibraryUtils.WORKER_DIST_PATH);
-      else { 
-       const Worker = require("web-worker"); // import web worker if nodejs
-       LibraryUtils.WORKER = new Worker(LibraryUtils.WORKER_DIST_PATH);
-      }
-      LibraryUtils.WORKER_OBJECTS = {};  // store per object running in the worker
-      
-      // receive worker errors
-      LibraryUtils.WORKER.onerror = function(err) {
-        console.error("Error posting message to MoneroWebWorker.js; is it copied to the app's build directory (e.g. in the root)?");
-        console.log(err);
-      };
-      
-      // receive worker messages
-      LibraryUtils.WORKER.onmessage = function(e) {
-        
-        // lookup object id, callback function, and this arg
-        let thisArg = null;
-        let callbackFn = LibraryUtils.WORKER_OBJECTS[e.data[0]].callbacks[e.data[1]]; // look up by object id then by function name
-        if (callbackFn === undefined) throw new Error("No worker callback function defined for key '" + e.data[1] + "'");
-        if (callbackFn instanceof Array) {  // this arg may be stored with callback function
-          thisArg = callbackFn[1];
-          callbackFn = callbackFn[0];
-        }
-        
-        // invoke callback function with this arg and arguments
-        callbackFn.apply(thisArg, e.data.slice(2));
-      }
-    }
-    return LibraryUtils.WORKER;
-  }
-  
-  /**
-   * Terminate monero-javascript's singleton worker.
-   */
-  static async terminateWorker() {
-    if (LibraryUtils.WORKER) {
-      LibraryUtils.WORKER.terminate();
-      delete LibraryUtils.WORKER;
-      LibraryUtils.WORKER = undefined;
-    }
-  }
-  
-  /**
-   * Invoke a worker function and get the result with error handling.
-   * 
-   * @param {string} objectId identifies the worker object to invoke (default random id)
-   * @param {string} fnName is the name of the function to invoke
-   * @param {any[]} args are function arguments to invoke with
-   * @return {any} resolves with response payload from the worker or an error
-   */
-  static async invokeWorker(objectId, fnName, args) {
-    assert(fnName.length >= 2);
-    let worker = await LibraryUtils.getWorker();
-    let randomObject = objectId === undefined;
-    if (randomObject) objectId = GenUtils.getUUID();
-    if (!LibraryUtils.WORKER_OBJECTS[objectId]) LibraryUtils.WORKER_OBJECTS[objectId] = {callbacks: {}};
-    return await new Promise(function(resolve, reject) {
-      let callbackId = GenUtils.getUUID();
-      LibraryUtils.WORKER_OBJECTS[objectId].callbacks[callbackId] = function(resp) {  // TODO: this defines function once per callback
-        resp ? (resp.error ? reject(LibraryUtils.deserializeError(resp.error)) : resolve(resp.result)) : resolve();
-        delete LibraryUtils.WORKER_OBJECTS[objectId].callbacks[callbackId];
-        if (randomObject) delete LibraryUtils.WORKER_OBJECTS[objectId];
-      };
-      worker.postMessage([objectId, fnName, callbackId].concat(args === undefined ? [] : GenUtils.listify(args)));
-    });
-  }
-
-  static serializeError(err) {
-    const serializedErr = { name: err.name, message: err.message, stack: err.stack };
-    if (err instanceof MoneroError) serializedErr.type = "MoneroError";
-    return serializedErr;
-  }
-
-  static deserializeError(serializedErr) {
-    const err = serializedErr.type === "MoneroError" ? new MoneroError(serializedErr.message) : new Error(serializedErr.message);
-    err.name = serializedErr.name;
-    err.stack = serializedErr.stack;
-    return err;
-  }
-  
-  // ------------------------------ PRIVATE HELPERS ---------------------------
-  
-  static _initWasmModule(wasmModule) {
-    wasmModule.taskQueue = new ThreadPool(1);
-    wasmModule.queueTask = async function(asyncFn) { return wasmModule.taskQueue.submit(asyncFn); }
-  }
-  
-  static _prefixWindowsPath(path) {
-    if (/^[A-Z]:/.test(path) && path.indexOf("file://") == -1) path = "file://" + path; // prepend e.g. C: paths with file://
-    return path;
-  }
-}
-
-LibraryUtils.LOG_LEVEL = 0;
-LibraryUtils.WORKER_DIST_PATH_DEFAULT = GenUtils.isBrowser() ? "/monero_web_worker.js" : function() {
-    const path = require("path");
-    return LibraryUtils._prefixWindowsPath(path.join(__dirname, "./MoneroWebWorker.js"));
-}();
-LibraryUtils.WORKER_DIST_PATH = LibraryUtils.WORKER_DIST_PATH_DEFAULT;
-
-module.exports = LibraryUtils;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_common_MoneroConnectionManager.js.html b/docs/src_main_js_common_MoneroConnectionManager.js.html deleted file mode 100644 index a11dc46cb..000000000 --- a/docs/src_main_js_common_MoneroConnectionManager.js.html +++ /dev/null @@ -1,696 +0,0 @@ - - - - - JSDoc: Source: src/main/js/common/MoneroConnectionManager.js - - - - - - - - - - -
- -

Source: src/main/js/common/MoneroConnectionManager.js

- - - - - - -
-
-
const GenUtils = require("./GenUtils");
-const MoneroError = require("./MoneroError");
-const MoneroRpcConnection = require("./MoneroRpcConnection");
-const TaskLooper = require("./TaskLooper");
-const ThreadPool = require("./ThreadPool");
-
-/**
- * <p>Manages a collection of prioritized connections to daemon or wallet RPC endpoints.</p>
- *
- * <p>Example usage:</p>
- * 
- * <code>
- * // imports<br>
- * const monerojs = require("monero-javascript");<br>
- * const MoneroRpcConnection = monerojs.MoneroRpcConnection;<br>
- * const MoneroConnectionManager = monerojs.MoneroConnectionManager;<br>
- * const MoneroConnectionManagerListener = monerojs.MoneroConnectionManagerListener;<br><br>
- * 
- * // create connection manager<br>
- * let connectionManager = new MoneroConnectionManager();<br><br>
- * 
- * // add managed connections with priorities<br>
- * connectionManager.addConnection(new MoneroRpcConnection("http://localhost:38081").setPriority(1)); // use localhost as first priority<br>
- * connectionManager.addConnection(new MoneroRpcConnection("http://example.com")); // default priority is prioritized last<br><br>
- * 
- * // set current connection<br>
- * connectionManager.setConnection(new MoneroRpcConnection("http://foo.bar", "admin", "password")); // connection is added if new<br><br>
- * 
- * // check connection status<br>
- * await connectionManager.checkConnection();<br>
- * console.log("Connection manager is connected: " + connectionManager.isConnected());<br>
- * console.log("Connection is online: " + connectionManager.getConnection().isOnline());<br>
- * console.log("Connection is authenticated: " + connectionManager.getConnection().isAuthenticated());<br><br>
- * 
- * // receive notifications of any changes to current connection<br>
- * connectionManager.addListener(new class extends MoneroConnectionManagerListener {<br>
- * &nbsp;&nbsp; onConnectionChanged(connection) {<br>
- * &nbsp;&nbsp;&nbsp;&nbsp; console.log("Connection changed to: " + connection);<br>
- * &nbsp;&nbsp; }<br>
- * });<br><br>
- *  
- * // start polling for best connection every 10 seconds and automatically switch<br>
- * connectionManager.startPolling(10000);<br><br>
- * 
- * // automatically switch to best available connection if disconnected<br>
- * connectionManager.setAutoSwitch(true);<br><br>
- * 
- * // get best available connection in order of priority then response time<br>
- * let bestConnection = await connectionManager.getBestAvailableConnection();<br><br>
- * 
- * // check status of all connections<br>
- * await connectionManager.checkConnections();<br><br>
- * 
- * // get connections in order of current connection, online status from last check, priority, and name<br>
- * let connections = connectionManager.getConnections();<br><br>
- * 
- * // clear connection manager<br>
- * connectionManager.clear();
- * <code>
- */
-class MoneroConnectionManager {
-
-  /**
-   * Specify behavior when polling.
-   * 
-   * One of PRIORITIZED (poll connections in order of priority until connected; default), CURRENT (poll current connection), or ALL (poll all connections).
-   */
-  static PollType = {
-    PRIORITIZED: 0,
-    CURRENT: 1,
-    ALL: 2
-  }
-  
-  /**
-   * Construct a connection manager.
-   * 
-   * @param {boolean} proxyToWorker - configure all connections to proxy to worker (default true)
-   */
-  constructor(proxyToWorker) {
-    this._proxyToWorker = proxyToWorker !== false;
-    this._timeoutMs = MoneroConnectionManager.DEFAULT_TIMEOUT;
-    this._autoSwitch = MoneroConnectionManager.DEFAULT_AUTO_SWITCH;
-    this._connections = [];
-    this._responseTimes = new Map();
-    this._listeners = [];
-  }
-  
-  /**
-   * Add a listener to receive notifications when the connection changes.
-   * 
-   * @param {MoneroConnectionManagerListener} listener - the listener to add
-   * @return {MoneroConnectionManager} this connection manager for chaining
-   */
-  addListener(listener) {
-    this._listeners.push(listener);
-    return this;
-  }
-  
-  /**
-   * Remove a listener.
-   * 
-   * @param {MoneroConnectionManagerListener} listener - the listener to remove
-   * @return {MoneroConnectionManager} this connection manager for chaining
-   */
-  removeListener(listener) {
-    if (!GenUtils.remove(this._listeners, listener)) throw new MoneroError("Monero connection manager does not contain listener to remove");
-    return this;
-  }
-  
-  /**
-   * Remove all listeners.
-   * 
-   * @return {MoneroConnectionManager} this connection manager for chaining
-   */
-  removeListeners() {
-    this._listeners.splice(0, this._listeners.length);
-    return this;
-  }
-
-  /**
-   * Get all listeners.
-   * 
-   * @return {MoneroConnectionManagerListener[]} all listeners
-   */
-  getListeners() {
-    return this._listeners
-  }
-
-  /**
-   * Add a connection. The connection may have an elevated priority for this manager to use.
-   * 
-   * @param {string|MoneroRpcConnection} uriOrConnection - uri or connection to add
-   * @return {Promise<MoneroConnectionManager>} this connection manager for chaining
-   */
-  async addConnection(uriOrConnection) {
-    let connection = typeof uriOrConnection === "string" ? new MoneroRpcConnection(uriOrConnection) : uriOrConnection;
-    for (let aConnection of this._connections) {
-      if (aConnection.getUri() === connection.getUri()) throw new MoneroError("Connection URI already exists");
-    }
-    if (this._proxyToWorker !== undefined) connection.setProxyToWorker(this._proxyToWorker);
-    this._connections.push(connection);
-    return this;
-  }
-  
-  /**
-   * Remove a connection.
-   * 
-   * @param {string} uri - of the the connection to remove
-   * @return {Promise<MoneroConnectionManager>} this connection manager for chaining
-   */
-  async removeConnection(uri) {
-    let connection = this.getConnectionByUri(uri);
-    if (!connection) throw new MoneroError("No connection exists with URI: " + uri);
-    GenUtils.remove(this._connections, connection);
-    this._responseTimes.delete(connection.getUri());
-    if (connection === this._currentConnection) {
-      this._currentConnection = undefined;
-      await this._onConnectionChanged(this._currentConnection);
-    }
-    return this;
-  }
-  
-  /**
-   * Set the current connection.
-   * Provide a URI to select an existing connection without updating its credentials.
-   * Provide a MoneroRpcConnection to add new connection or replace existing connection with the same URI.
-   * Notify if current connection changes.
-   * Does not check the connection.
-   * 
-   * @param {string|MoneroRpcConnection} uriOrConnection - is the uri of the connection or the connection to make current (default undefined for no current connection)
-   * @return {Promise<MoneroConnectionManager>} this connection manager for chaining
-   */
-  async setConnection(uriOrConnection) {
-    
-    // handle uri
-    if (uriOrConnection && typeof uriOrConnection === "string") {
-      let connection = this.getConnectionByUri(uriOrConnection);
-      return this.setConnection(connection === undefined ? new MoneroRpcConnection(uriOrConnection) : connection);
-    }
-    
-    // handle connection
-    let connection = uriOrConnection;
-    if (this._currentConnection === connection) return this;
-    
-    // check if setting undefined connection
-    if (!connection) {
-      this._currentConnection = undefined;
-      await this._onConnectionChanged(undefined);
-      return this;
-    }
-    
-    // validate connection
-    if (!(connection instanceof MoneroRpcConnection)) throw new MoneroError("Must provide string or MoneroRpcConnection to set connection");
-    if (!connection.getUri()) throw new MoneroError("Connection is missing URI");
-
-    // add or replace connection
-    let prevConnection = this.getConnectionByUri(connection.getUri());
-    if (prevConnection) GenUtils.remove(this._connections, prevConnection);
-    await this.addConnection(connection);
-    this._currentConnection = connection;
-    await this._onConnectionChanged(this._currentConnection);
-    
-    return this;
-  }
-
-  /**
-   * Get the current connection.
-   * 
-   * @return {MoneroRpcConnection} the current connection or undefined if no connection set
-   */
-  getConnection() {
-    return this._currentConnection;
-  }
-
-  /**
-   * Indicates if this manager has a connection with the given URI.
-   * 
-   * @param {string} uri URI of the connection to check
-   * @return {boolean} true if this manager has a connection with the given URI, false otherwise
-   */
-  hasConnection(uri) {
-    return this.getConnectionByUri(uri) !== undefined;
-  }
-  
-  /**
-   * Get a connection by URI.
-   * 
-   * @param {string} uri is the URI of the connection to get
-   * @return {MoneroRpcConnection} the connection with the URI or undefined if no connection with the URI exists
-   */
-  getConnectionByUri(uri) {
-    for (let connection of this._connections) if (connection.getUri() === uri) return connection;
-    return undefined;
-  }
-  
-  /**
-   * Get all connections in order of current connection (if applicable), online status, priority, and name.
-   * 
-   * @return {MoneroRpcConnection[]} the list of sorted connections
-   */
-  getConnections() {
-    let sortedConnections = GenUtils.copyArray(this._connections);
-    sortedConnections.sort(this._compareConnections.bind(this));
-    return sortedConnections;
-  }
-
-  /**
-   * Indicates if the connection manager is connected to a node.
-   * 
-   * @return {boolean|undefined} true if the current connection is set, online, and not unauthenticated, undefined if unknown, false otherwise
-   */
-  isConnected() {
-    if (!this._currentConnection) return false;
-    return this._currentConnection.isConnected();
-  }
-
-  /**
-   * Start polling connections.
-   * 
-   * @param {number} periodMs poll period in milliseconds (default 20s)
-   * @param {boolean} autoSwitch specifies to automatically switch to the best connection (default true unless changed)
-   * @param {number} timeoutMs specifies the timeout to poll a single connection (default 5s unless changed)
-   * @param {number} pollType one of PRIORITIZED (poll connections in order of priority until connected; default), CURRENT (poll current connection), or ALL (poll all connections)
-   * @param {MoneroRpcConnection[]} excludedConnections connections excluded from being polled
-   * @return {MoneroConnectionManager} this connection manager for chaining
-   */
-  startPolling(periodMs, autoSwitch, timeoutMs, pollType, excludedConnections) {
-
-    // apply defaults
-    if (periodMs == undefined) periodMs = MoneroConnectionManager.DEFAULT_POLL_PERIOD;
-    if (autoSwitch !== undefined) this.setAutoSwitch(autoSwitch);
-    if (timeoutMs !== undefined) this.setTimeout(timeoutMs);
-    if (pollType === undefined) pollType = MoneroConnectionManager.PollType.PRIORITIZED;
-
-    // stop polling
-    this.stopPolling();
-
-    // start polling
-    switch (pollType) {
-      case MoneroConnectionManager.PollType.CURRENT:
-        this._startPollingConnection(periodMs);
-        break;
-      case MoneroConnectionManager.PollType.ALL:
-        this._startPollingConnections(periodMs);
-        break;
-      case MoneroConnectionManager.PollType.PRIORITIZED:
-      default:
-        this._startPollingPrioritizedConnections(periodMs, excludedConnections);
-    }
-    return this;
-  }
-
-  /**
-   * Stop polling connections.
-   * 
-   * @return {MoneroConnectionManager} this connection manager for chaining
-   */
-  stopPolling() {
-    if (this._poller) this._poller.stop();
-    this._poller = undefined;
-    return this;
-  }
-
-  /**
-   * Check the current connection. If disconnected and auto switch enabled, switches to best available connection.
-   * 
-   * @return {Promise<MoneroConnectionManager>} this connection manager for chaining
-   */
-  async checkConnection() {
-    let connectionChanged = false;
-    let connection = this.getConnection();
-    if (connection) {
-      if (await connection.checkConnection(this._timeoutMs)) connectionChanged = true;
-      await this._processResponses([connection]);
-    }
-    if (this._autoSwitch && !this.isConnected()) {
-      let bestConnection = await this.getBestAvailableConnection([connection]);
-      if (bestConnection) {
-        await this.setConnection(bestConnection);
-        return this;
-      }
-    }
-    if (connectionChanged) await this._onConnectionChanged(connection);   
-    return this;
-  }
-  
-  /**
-   * Check all managed connections.
-   * 
-   * @return {Promise<MoneroConnectionManager>} this connection manager for chaining
-   */
-  async checkConnections() {
-    return this._checkConnections(this.getConnections());
-  }
-
-  /**
-   * Check all managed connections, returning a promise for each connection check.
-   * Does not auto switch if disconnected.
-   *
-   * @return {Promise[]} a promise for each connection in the order of getConnections().
-   */
-  checkConnectionPromises() {
-    let that = this;
-    let checkPromises = [];
-    let pool = new ThreadPool(this._connections.length);
-    for (let connection of this.getConnections()) {
-      checkPromises.push(pool.submit(async function() {
-        try {
-          if (await connection.checkConnection(that._timeoutMs) && connection === this._currentConnection) await that._onConnectionChanged(connection);
-        } catch (err) {
-          // ignore error
-        }
-      }));
-    }
-    Promise.all(checkPromises);
-    return checkPromises;
-  }
-  
-  /**
-   * Get the best available connection in order of priority then response time.
-   * 
-   * @param {MoneroRpcConnection[]} excludedConnections - connections to be excluded from consideration (optional)
-   * @return {Promise<MoneroRpcConnection>} the best available connection in order of priority then response time, undefined if no connections available
-   */
-  async getBestAvailableConnection(excludedConnections) {
-    
-    // try connections within each ascending priority
-    for (let prioritizedConnections of this._getConnectionsInAscendingPriority()) {
-      try {
-        
-        // create promises to check connections
-        let that = this;
-        let checkPromises = [];
-        for (let connection of prioritizedConnections) {
-          if (excludedConnections && GenUtils.arrayContains(excludedConnections, connection)) continue;
-          checkPromises.push(new Promise(async function(resolve, reject) {
-            await connection.checkConnection(that._timeoutMs);
-            if (connection.isConnected()) resolve(connection);
-            else reject();
-          }));
-        }
-        
-        // use first available connection
-        let firstAvailable = await Promise.any(checkPromises);
-        if (firstAvailable) return firstAvailable;
-      } catch (err) {
-        if (!(err instanceof AggregateError)) throw new MoneroError(err);
-      }
-    }
-    return undefined;
-  }
-  
-  /**
-   * Automatically switch to the best available connection as connections are polled, based on priority, response time, and consistency.
-   * 
-   * @param {boolean} autoSwitch specifies if the connection should auto switch to a better connection
-   * @return {MoneroConnectionManager} this connection manager for chaining
-   */
-  setAutoSwitch(autoSwitch) {
-    this._autoSwitch = autoSwitch;
-    return this;
-  }
-  
-  /**
-   * Get if auto switch is enabled or disabled.
-   * 
-   * @return {boolean} true if auto switch enabled, false otherwise
-   */
-  getAutoSwitch() {
-    return this._autoSwitch;
-  }
-  
-  /**
-   * Set the maximum request time before its connection is considered offline.
-   * 
-   * @param {int} timeoutMs - the timeout before the connection is considered offline
-   * @return {MoneroConnectionManager} this connection manager for chaining
-   */
-  setTimeout(timeoutMs) {
-    this._timeoutMs = timeoutMs;
-    return this;
-  }
-  
-  /**
-   * Get the request timeout.
-   * 
-   * @return {int} the request timeout before a connection is considered offline
-   */
-  getTimeout() {
-    return this._timeoutMs;
-  }
-  
-  /**
-   * Collect connectable peers of the managed connections.
-   *
-   * @return {Promise<MoneroRpcConnection[]>} connectable peers
-   */
-  async getPeerConnections() {
-    throw new MoneroError("Not implemented");
-  }
-  
-  /**
-   * Disconnect from the current connection.
-   * 
-   * @return {Promise<MoneroConnectionManager>} this connection manager for chaining
-   */
-  async disconnect() {
-    await this.setConnection(undefined);
-    return this;
-  }
-  
-  /**
-   * Remove all connections.
-   * 
-   * @return {Promise<MoneroConnectonManager>} this connection manager for chaining
-   */
-  async clear() {
-    this._connections.splice(0, this._connections.length);
-    if (this._currentConnection) {
-      this._currentConnection = undefined;
-      await this._onConnectionChanged(undefined);
-    }
-    return this;
-  }
-  
-  /**
-   * Reset to default state.
-   * 
-   * @return {MoneroConnectonManager} this connection manager for chaining
-   */
-  reset() {
-    this.removeListeners();
-    this.stopPolling();
-    this.clear();
-    this._timeoutMs = MoneroConnectionManager.DEFAULT_TIMEOUT;
-    this._autoSwitch = MoneroConnectionManager.DEFAULT_AUTOSWITCH;
-    return this;
-  }
-
-  // ------------------------------ PRIVATE HELPERS ---------------------------
-  
-  async _onConnectionChanged(connection) {
-    let promises = [];
-    for (let listener of this._listeners) promises.push(listener.onConnectionChanged(connection));
-    return Promise.all(promises);
-  }
-  
-  _getConnectionsInAscendingPriority() {
-    let connectionPriorities = new Map();
-    for (let connection of this._connections) {
-      if (!connectionPriorities.has(connection.getPriority())) connectionPriorities.set(connection.getPriority(), []);
-      connectionPriorities.get(connection.getPriority()).push(connection);
-    }
-    let ascendingPriorities = new Map([...connectionPriorities].sort((a, b) => parseInt(a[0]) - parseInt(b[0]))); // create map in ascending order
-    let ascendingPrioritiesList = [];
-    for (let priorityConnections of ascendingPriorities.values()) ascendingPrioritiesList.push(priorityConnections);
-    if (connectionPriorities.has(0)) ascendingPrioritiesList.push(ascendingPrioritiesList.splice(0, 1)[0]); // move priority 0 to end
-    return ascendingPrioritiesList;
-  }
-  
-  _compareConnections(c1, c2) {
-    
-      // current connection is first
-      if (c1 === this._currentConnection) return -1;
-      if (c2 === this._currentConnection) return 1;
-      
-      // order by availability then priority then by name
-      if (c1.isOnline() === c2.isOnline()) {
-        if (c1.getPriority() === c2.getPriority()) return c1.getUri().localeCompare(c2.getUri());
-        else return c1.getPriority() == 0 ? 1 : c2.getPriority() == 0 ? -1 : c1.getPriority() - c2.getPriority();
-      } else {
-        if (c1.isOnline()) return -1;
-        else if (c2.isOnline()) return 1;
-        else if (c1.isOnline() === undefined) return -1;
-        else return 1; // c1 is offline
-      }
-  }
-
-  _startPollingConnection(periodMs) {
-    this._poller = new TaskLooper(async () => {
-      try { await this.checkConnection(); }
-      catch (err) { console.error("Error checking connection: " + err.message); }
-    });
-    this._poller.start(periodMs);
-    return this;
-  }
-
-  _startPollingConnections(periodMs) {
-    this._poller = new TaskLooper(async () => {
-      try { await this.checkConnections(); }
-      catch (err) { console.error("Error checking connections: " + err.message); }
-    });
-    this._poller.start(periodMs);
-    return this;
-  }
-
-  _startPollingPrioritizedConnections(periodMs, excludedConnections) {
-    this._poller = new TaskLooper(async () => {
-      try { await this._checkPrioritizedConnections(excludedConnections); }
-      catch (err) { console.error("Error checking connections: " + err.message); }
-    });
-    this._poller.start(periodMs);
-    return this;
-  }
-
-  async _checkPrioritizedConnections(excludedConnections) {
-    for (let prioritizedConnections of this._getConnectionsInAscendingPriority()) {
-      let hasConnection = await this._checkConnections(prioritizedConnections, excludedConnections);
-      if (hasConnection) return;
-    }
-  }
-
-  async _checkConnections(connections, excludedConnections) {
-    try {
-
-      // check connections in parallel
-      let that = this;
-      let checkPromises = [];
-      let hasConnection = false;
-      for (let connection of connections) {
-        if (excludedConnections && GenUtils.arrayContains(excludedConnections, connection)) continue;
-        checkPromises.push(new Promise(async function(resolve, reject) {
-          try {
-            let change = await connection.checkConnection(that._timeoutMs);
-            if (change && connection === that.getConnection()) await that._onConnectionChanged(connection);
-            if (connection.isConnected() && !hasConnection) {
-              hasConnection = true;
-              if (!that.isConnected() && that._autoSwitch) await that.setConnection(connection); // set first available connection if disconnected
-            }
-            resolve();
-          } catch (err) {
-            reject(err);
-          }
-        }));
-      }
-      await Promise.all(checkPromises);
-
-      // process responses
-      await this._processResponses(connections);
-      return hasConnection;
-    } catch (err) {
-      throw new MoneroError(err);
-    }
-  }
-
-  async _processResponses(responses) {
-
-    // add non-existing connections
-    for (let connection of responses) {
-      if (!this._responseTimes.has(connection.getUri())) this._responseTimes.set(connection.getUri(), []);
-    }
-
-    // insert response times or undefined
-    this._responseTimes.forEach((times, connection) => {
-      times.unshift(GenUtils.arrayContains(responses, connection) ? connection.getResponseTime() : undefined);
-
-      // remove old response times
-      if (times.length > MoneroConnectionManager.MIN_BETTER_RESPONSES) times.pop();
-    });
-
-    // update best connection based on responses and priority
-    await this._updateBestConnectionInPriority();
-  }
-
-  async _updateBestConnectionInPriority() {
-    if (!this._autoSwitch) return;
-    for (let prioritizedConnections of this._getConnectionsInAscendingPriority()) {
-      if (await this._updateBestConnectionFromResponses(prioritizedConnections)) break;
-    }
-  }
-
- async _updateBestConnectionFromResponses(responses) {
-    let bestConnection = this.isConnected() ? this.getConnection() : undefined;
-    if (bestConnection && (this._responseTimes.has(bestConnection.getUri()) || this._responseTimes.get(bestConnection.getUri()).length < MoneroConnectionManager.MIN_BETTER_RESPONSES)) return bestConnection;
-    if (this.isConnected()) {
-
-      // check if connection is consistently better
-      for (let connection of responses) {
-        if (connection === bestConnection) continue;
-        if (!this._responseTimes.has(connection.getUri()) || this._responseTimes.get(connection.getUri()).length < MIN_BETTER_RESPONSES) continue;
-        let better = true;
-        for (let i = 0; i < MIN_BETTER_RESPONSES; i++) {
-          if (this._responseTimes.get(connection.getUri())[i] === undefined || this._responseTimes.get(connection.getUri())[i] >= this._responseTimes.get(bestConnection.getUri())[i]) {
-            better = false;
-            break;
-          }
-        }
-        if (better) bestConnection = connection;
-      }
-    } else {
-      for (let connection of responses) {
-        if (connection.isConnected() && (!bestConnection || connection.getResponseTime() < bestConnection.getResponseTime())) bestConnection = connection;
-      }
-    }
-    if (bestConnection) await this.setConnection(bestConnection);
-    return bestConnection;
-  }
-}
-
-MoneroConnectionManager.DEFAULT_TIMEOUT = 5000;
-MoneroConnectionManager.DEFAULT_POLL_PERIOD = 20000;
-MoneroConnectionManager.DEFAULT_AUTO_SWITCH = true;
-MoneroConnectionManager.MIN_BETTER_RESPONSES = 3;
-
-module.exports = MoneroConnectionManager;
-
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_common_MoneroConnectionManagerListener.js.html b/docs/src_main_js_common_MoneroConnectionManagerListener.js.html deleted file mode 100644 index efce10294..000000000 --- a/docs/src_main_js_common_MoneroConnectionManagerListener.js.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - - JSDoc: Source: src/main/js/common/MoneroConnectionManagerListener.js - - - - - - - - - - -
- -

Source: src/main/js/common/MoneroConnectionManagerListener.js

- - - - - - -
-
-
/**
- * Default connection manager listener which takes no action on notifications.
- */
-class MoneroConnectionManagerListener {
-  
-  /**
-   * Notified on connection change events.
-   * 
-   * @param {MoneroRpcConnection} connection - the connection manager's current connection
-   */
-  async onConnectionChanged(connection) { }
-}
-
-module.exports = MoneroConnectionManagerListener;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_common_MoneroError.js.html b/docs/src_main_js_common_MoneroError.js.html deleted file mode 100644 index 1132bf405..000000000 --- a/docs/src_main_js_common_MoneroError.js.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - JSDoc: Source: src/main/js/common/MoneroError.js - - - - - - - - - - -
- -

Source: src/main/js/common/MoneroError.js

- - - - - - -
-
-
/**
- * Exception when interacting with a Monero wallet or daemon.
- */
-class MoneroError extends Error {
-  
-  /**
-   * Constructs the error.
-   * 
-   * @param {string} message is a human-readable message of the error
-   * @param {int} code is the error code (optional)
-   */
-  constructor(message, code) {
-    super(message);
-    this.code = code;
-  }
-  
-  getCode() {
-    return this.code;
-  }
-  
-  toString() {
-    if (this.message === undefined && this.getCode() === undefined) return super.message;
-    let str = "";
-    if (this.getCode() !== undefined) str += this.getCode() + ": ";
-    str += this.message;
-    return str;
-  }
-}
-
-module.exports = MoneroError;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_common_MoneroRpcConnection.js.html b/docs/src_main_js_common_MoneroRpcConnection.js.html deleted file mode 100644 index 42bd98a3b..000000000 --- a/docs/src_main_js_common_MoneroRpcConnection.js.html +++ /dev/null @@ -1,467 +0,0 @@ - - - - - JSDoc: Source: src/main/js/common/MoneroRpcConnection.js - - - - - - - - - - -
- -

Source: src/main/js/common/MoneroRpcConnection.js

- - - - - - -
-
-
const GenUtils = require("./GenUtils");
-const HttpClient = require("./HttpClient");
-const LibraryUtils = require("./LibraryUtils");
-const MoneroError = require("../common/MoneroError");
-const MoneroRpcError = require("../common/MoneroRpcError");
-const MoneroUtils = require("./MoneroUtils");
-
-/**
- * Maintains a connection and sends requests to a Monero RPC API.
- */
-class MoneroRpcConnection {
-  
-  /**
-   * <p>Construct a RPC connection.</p>
-   * 
-   * <p>Examples:</p>
-   * 
-   * <code>
-   * let connection1 = new MoneroRpcConnection("http://localhost:38081", "daemon_user", "daemon_password_123")<br><br>
-   * 
-   * let connection2 = new MoneroRpcConnection({<br>
-   * &nbsp;&nbsp; uri: http://localhost:38081,<br>
-   * &nbsp;&nbsp; username: "daemon_user",<br>
-   * &nbsp;&nbsp; password: "daemon_password_123",<br>
-   * &nbsp;&nbsp; rejectUnauthorized: false, // accept self-signed certificates e.g. for local development<br>
-   * &nbsp;&nbsp; proxyToWorker: true // proxy request to worker (default false)<br>
-   * });
-   * </code>
-   * 
-   * @param {string|object|MoneroRpcConnection} uriOrConfigOrConnection - RPC endpoint URI, MoneroRpcConnection, or equivalent JS object
-   * @param {string} uriOrConfigOrConnection.uri - URI of the RPC endpoint
-   * @param {string} uriOrConfigOrConnection.username - username to authenticate with the RPC endpoint (optional)
-   * @param {string} uriOrConfigOrConnection.password - password to authenticate with the RPC endpoint (optional)
-   * @param {boolean} uriOrConfigOrConnection.rejectUnauthorized - rejects self-signed certificates if true (default true)
-   * @param {boolean} uriOrConfigOrConnection.proxyToWorker - proxy requests to worker
-   * @param {string} username - username to authenticate with the RPC endpoint (optional)
-   * @param {string} password - password to authenticate with the RPC endpoint (optional)
-   * @param {boolean} rejectUnauthorized - reject self-signed certificates if true (default true)
-   */
-  constructor(uriOrConfigOrConnection, username, password, rejectUnauthorized, proxyToWorker) {
-    
-    // validate and normalize config
-    if (typeof uriOrConfigOrConnection === "string") {
-      this._config = {uri: uriOrConfigOrConnection};
-      this.setCredentials(username, password);
-      if (rejectUnauthorized !== undefined) this._config.rejectUnauthorized = rejectUnauthorized;
-      if (proxyToWorker !== undefined) this._config.proxyToWorker = proxyToWorker;
-    } else if (typeof uriOrConfigOrConnection === "object") {
-      if (username !== undefined || password !== undefined || rejectUnauthorized !== undefined || proxyToWorker !== undefined) throw new MoneroError("Can provide config object or params but not both");
-      if (uriOrConfigOrConnection instanceof MoneroRpcConnection) this._config = Object.assign({}, uriOrConfigOrConnection.getConfig());
-      else this._config = Object.assign({}, uriOrConfigOrConnection);
-      this.setCredentials(this._config.username, this._config.password);
-    } else if (uriOrConfigOrConnection !== undefined) {
-      throw new MoneroError("Invalid configuration to MoneroRpcConnection; must be string or MoneroRpcConnection or equivalent JS object");
-    }
-    
-    // merge default config
-    this._config = Object.assign({}, MoneroRpcConnection.DEFAULT_CONFIG, this._config);
-    
-    // normalize uri
-    if (this._config.uri) this._config.uri = GenUtils.normalizeUri(this._config.uri);
-    
-    // fail with friendly message if using old api
-    if (this._config.user || this._config.pass) throw new MoneroError("Authentication fields 'user' and 'pass' have been renamed to 'username' and 'password'.  Please update to the new api");
-    
-    // check for unsupported fields
-    for (let key of Object.keys(this._config)) {
-      if (!GenUtils.arrayContains(MoneroRpcConnection.SUPPORTED_FIELDS, key)) {
-        throw new MoneroError("RPC connection includes unsupported field: '" + key + "'");
-      }
-    }
-  }
-  
-  setCredentials(username, password) {
-    if (username === "") username = undefined;
-    if (password === "") password = undefined;
-    if (username || password) {
-      if (!username) throw new MoneroError("username must be defined because password is defined");
-      if (!password) throw new MoneroError("password must be defined because username is defined");
-    }
-    if (this._config.username === "") this._config.username = undefined;
-    if (this._config.password === "") this._config.password = undefined;
-    if (this._config.username !== username || this._config.password !== password) {
-      this._isOnline = undefined;
-      this._isAuthenticated = undefined;
-    }
-    this._config.username = username;
-    this._config.password = password;
-    return this;
-  }
-  
-  getUri() {
-    return this._config.uri;
-  }
-  
-  getUsername() {
-    return this._config.username ? this._config.username : "";
-  }
-  
-  getPassword() {
-    return this._config.password ? this._config.password : "";
-  }
-  
-  getRejectUnauthorized() {
-    return this._config.rejectUnauthorized;
-  }
-  
-  setProxyToWorker(proxyToWorker) {
-    this._config.proxyToWorker = proxyToWorker;
-    return this;
-  }
-  
-  getProxyToWorker() {
-    return this._config.proxyToWorker;
-  }
-  
-  getConfig() {
-    return this._config;
-  }
-  
-  getPriority() {
-    return this._config.priority; 
-  }
-  
-  /**
-   * Set the connection's priority relative to other connections. Priority 1 is highest,
-   * then priority 2, etc. The default priority of 0 is lowest priority.
-   * 
-   * @param {int} priority - the connection priority (default 0)
-   * @return {MoneroRpcConnection} this connection
-   */
-  setPriority(priority) {
-    if (!(priority >= 0)) throw new MoneroError("Priority must be >= 0");
-    this._config.priority = priority;
-    return this;
-  }
-  
-  setAttribute(key, value) {
-    if (!this.attributes) this.attributes = new Map();
-    this.attributes.put(key, value);
-    return this;
-  }
-  
-  getAttribute(key) {
-    return this.attributes.get(key);
-  }
-  
-  /**
-   * Check the connection status to update isOnline, isAuthenticated, and response time.
-   * 
-   * @param {int} timeoutInMs - maximum response time before considered offline
-   * @return {Promise<boolean>} true if there is a change in status, false otherwise
-   */
-  async checkConnection(timeoutInMs) {
-    let isOnlineBefore = this._isOnline;
-    let isAuthenticatedBefore = this._isAuthenticated;
-    let startTime = Date.now();
-    try {
-      if (this._fakeDisconnected) throw new Error("Connection is fake disconnected");
-      let heights = [];
-      for (let i = 0; i < 100; i++) heights.push(i);
-      await this.sendBinaryRequest("get_blocks_by_height.bin", {heights: heights}); // assume daemon connection
-      this._isOnline = true;
-      this._isAuthenticated = true;
-    } catch (err) {
-      this._isOnline = false;
-      this._isAuthenticated = undefined;
-      this._responseTime = undefined;
-      if (err instanceof MoneroRpcError) {
-        if (err.getCode() === 401) {
-          this._isOnline = true;
-          this._isAuthenticated = false;
-        } else if (err.getCode() === 404) { // fallback to latency check
-          this._isOnline = true;
-          this._isAuthenticated = true;
-        }
-      }
-    }
-    if (this._isOnline) this._responseTime = Date.now() - startTime;
-    return isOnlineBefore !== this._isOnline || isAuthenticatedBefore !== this._isAuthenticated;
-  }
-  
-  /**
-   * Indicates if the connection is connected according to the last call to checkConnection().<br><br>
-   * 
-   * Note: must call checkConnection() manually unless using MoneroConnectionManager.
-   * 
-   * @return {boolean|undefined} true or false to indicate if connected, or undefined if checkConnection() has not been called
-   */
-  isConnected() {
-    return this._isOnline === undefined ? undefined : this._isOnline && this._isAuthenticated !== false;
-  }
-
-  /**
-   * Indicates if the connection is online according to the last call to checkConnection().<br><br>
-   * 
-   * Note: must call checkConnection() manually unless using MoneroConnectionManager.
-   * 
-   * @return {boolean|undefined} true or false to indicate if online, or undefined if checkConnection() has not been called
-   */
-  isOnline() {
-    return this._isOnline;
-  }
-
-  /**
-   * Indicates if the connection is authenticated according to the last call to checkConnection().<br><br>
-   * 
-   * Note: must call checkConnection() manually unless using MoneroConnectionManager.
-   * 
-   * @return {boolean|undefined} true if authenticated or no authentication, false if not authenticated, or undefined if checkConnection() has not been called
-   */
-  isAuthenticated() {
-    return this._isAuthenticated;
-  }
-
-  getResponseTime() {
-    return this._responseTime;
-  }
-  
-  /**
-   * Send a JSON RPC request.
-   * 
-   * @param {string} method - JSON RPC method to invoke
-   * @param {object} params - request parameters
-   * @param {int} timeoutInMs - request timeout in milliseconds
-   * @return {object} is the response map
-   */
-  async sendJsonRequest(method, params, timeoutInMs) {
-    try {
-      
-      // build request body
-      let body = JSON.stringify({  // body is stringified so text/plain is returned so BigIntegers are preserved
-        id: "0",
-        jsonrpc: "2.0",
-        method: method,
-        params: params
-      });
-
-      // logging
-      if (LibraryUtils.getLogLevel() >= 2) LibraryUtils.log(2, "Sending json request with method '" + method + "' and body: " + body);
-      
-      // send http request
-      let startTime = new Date().getTime();
-      let resp = await HttpClient.request({
-        method: "POST",
-        uri: this.getUri() + '/json_rpc',
-        username: this.getUsername(),
-        password: this.getPassword(),
-        body: body,
-        timeout: timeoutInMs,
-        rejectUnauthorized: this._config.rejectUnauthorized,
-        requestApi: GenUtils.isFirefox() ? "xhr" : "fetch",  // firefox issue: https://bugzilla.mozilla.org/show_bug.cgi?id=1491010
-        proxyToWorker: this._config.proxyToWorker
-      });
-      
-      // validate response
-      MoneroRpcConnection._validateHttpResponse(resp);
-      
-      // deserialize response
-      if (resp.body[0] != '{') throw resp.body;
-      resp = JSON.parse(resp.body.replace(/("[^"]*"\s*:\s*)(\d{16,})/g, '$1"$2"'));  // replace 16 or more digits with strings and parse
-      if (LibraryUtils.getLogLevel() >= 3) {
-        let respStr = JSON.stringify(resp);
-        LibraryUtils.log(3, "Received response from method='" + method + "', response=" + respStr.substring(0, Math.min(1000, respStr.length) + "(" + (new Date().getTime() - startTime) + " ms)"));
-      }
-      
-      // check rpc response for errors
-      MoneroRpcConnection._validateRpcResponse(resp, method, params);
-      return resp;
-    } catch (err) {
-      if (err instanceof MoneroRpcError) throw err;
-      else throw new MoneroRpcError(err, err.statusCode, method, params);
-    }
-  }
-  
-  /**
-   * Send a RPC request to the given path and with the given paramters.
-   * 
-   * E.g. "/get_transactions" with params
-   * 
-   * @param {string} path - JSON RPC path to invoke
-   * @param {object} params - request parameters
-   * @param {int} timeoutInMs - request timeout in milliseconds
-   * @return {object} is the response map
-   */
-  async sendPathRequest(path, params, timeoutInMs) {
-    try {
-
-      // logging
-      if (LibraryUtils.getLogLevel() >= 2) LibraryUtils.log(2, "Sending path request with path '" + path + "' and params: " + JSON.stringify(params));
-      
-      // send http request
-      let startTime = new Date().getTime();
-      let resp = await HttpClient.request({
-        method: "POST",
-        uri: this.getUri() + '/' + path,
-        username: this.getUsername(),
-        password: this.getPassword(),
-        body: JSON.stringify(params),  // body is stringified so text/plain is returned so BigIntegers are preserved
-        timeout: timeoutInMs,
-        rejectUnauthorized: this._config.rejectUnauthorized,
-        requestApi: GenUtils.isFirefox() ? "xhr" : "fetch",
-        proxyToWorker: this._config.proxyToWorker
-      });
-      
-      // validate response
-      MoneroRpcConnection._validateHttpResponse(resp);
-      
-      // deserialize response
-      if (resp.body[0] != '{') throw resp.body;
-      resp = JSON.parse(resp.body.replace(/("[^"]*"\s*:\s*)(\d{16,})/g, '$1"$2"'));  // replace 16 or more digits with strings and parse
-      if (typeof resp === "string") resp = JSON.parse(resp);  // TODO: some responses returned as strings?
-      if (LibraryUtils.getLogLevel() >= 3) {
-        let respStr = JSON.stringify(resp);
-        LibraryUtils.log(3, "Received response from path='" + method + "', response=" + respStr.substring(0, Math.min(1000, respStr.length) + "(" + (new Date().getTime() - startTime) + " ms)"));
-      }
-      
-      // check rpc response for errors
-      MoneroRpcConnection._validateRpcResponse(resp, path, params);
-      return resp;
-    } catch (err) {
-      if (err instanceof MoneroRpcError) throw err;
-      else throw new MoneroRpcError(err, err.statusCode, path, params);
-    }
-  }
-  
-  /**
-   * Send a binary RPC request.
-   * 
-   * @param {string} path - path of the binary RPC method to invoke
-   * @param {object} params - request parameters
-   * @param {int} timeoutInMs - request timeout in milliseconds
-   * @return {Uint8Array} the binary response
-   */
-  async sendBinaryRequest(path, params, timeoutInMs) {
-    
-    // serialize params
-    let paramsBin = await MoneroUtils.jsonToBinary(params);
-    
-    try {
-
-      // logging
-      if (LibraryUtils.getLogLevel() >= 2) LibraryUtils.log(2, "Sending binary request with path '" + path + "' and params: " + JSON.stringify(params));
-      
-      // send http request
-      let resp = await HttpClient.request({
-        method: "POST",
-        uri: this.getUri() + '/' + path,
-        username: this.getUsername(),
-        password: this.getPassword(),
-        body: paramsBin,
-        timeout: timeoutInMs,
-        rejectUnauthorized: this._config.rejectUnauthorized,
-        requestApi: GenUtils.isFirefox() ? "xhr" : "fetch",
-        proxyToWorker: this._config.proxyToWorker
-      });
-      
-      // validate response
-      MoneroRpcConnection._validateHttpResponse(resp);
-      
-      // process response
-      resp = resp.body;
-      if (!(resp instanceof Uint8Array)) {
-        console.error("resp is not uint8array");
-        console.error(resp);
-      }
-      if (resp.error) throw new MoneroRpcError(resp.error.message, resp.error.code, path, params);
-      return resp;
-    } catch (err) {
-      if (err instanceof MoneroRpcError) throw err;
-      else throw new MoneroRpcError(err, err.statusCode, path, params);
-    }
-  }
-
-  toJson() {
-    return this._config;
-  }
-  
-  toString() {
-    return this.getUri() + " (username=" + this.getUsername() + ", password=" + (this.getPassword() ? "***" : this.getPassword()) + ", priority=" + this.getPriority() + ", isOnline=" + this.isOnline() + ", isAuthenticated=" + this.isAuthenticated() + ")";
-  }
-  
-  // ------------------------------ PRIVATE HELPERS --------------------------
-  
-  static _validateHttpResponse(resp) {
-    let code = resp.statusCode;
-    if (code < 200 || code > 299) {
-      let content = resp.body;
-      throw new MoneroRpcError(code + " " + resp.statusText + (!content ? "" : (": " + content)), code, undefined, undefined);
-    }
-  }
-  
-  static _validateRpcResponse(resp, method, params) {
-    if (!resp.error) return;
-    throw new MoneroRpcError(resp.error.message, resp.error.code, method, params);
-  }
-  
-  _setFakeDisconnected(fakeDisconnected) { // used to test connection manager
-    this._fakeDisconnected = fakeDisconnected; 
-  }
-}
-
-/**
- * Default RPC configuration.
- */
-MoneroRpcConnection.DEFAULT_CONFIG = {
-    uri: undefined,
-    username: undefined,
-    password: undefined,
-    rejectUnauthorized: true, // reject self-signed certificates if true
-    proxyToWorker: false,
-    priority: 0
-}
-
-MoneroRpcConnection.SUPPORTED_FIELDS = ["uri", "username", "password", "rejectUnauthorized", "priority", "proxyToWorker"];
-
-module.exports = MoneroRpcConnection;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_common_MoneroRpcError.js.html b/docs/src_main_js_common_MoneroRpcError.js.html deleted file mode 100644 index 6660067d3..000000000 --- a/docs/src_main_js_common_MoneroRpcError.js.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - JSDoc: Source: src/main/js/common/MoneroRpcError.js - - - - - - - - - - -
- -

Source: src/main/js/common/MoneroRpcError.js

- - - - - - -
-
-
const MoneroError = require("./MoneroError");
-
-/**
- * Error when interacting with Monero RPC.
- */
-class MoneroRpcError extends MoneroError {
-  
-  /**
-   * Constructs the error.
-   * 
-   * @param {string} rpcDescription is a description of the error from rpc
-   * @param {int} rpcCode is the error code from rpc
-   * @param {string} rpcMethod is the rpc method invoked
-   * @param {object} rpcParams are parameters sent with the rpc request
-   */
-  constructor(rpcDescription, rpcCode, rpcMethod, rpcParams) {
-    super(rpcDescription, rpcCode);
-    this.rpcMethod = rpcMethod;
-    this.rpcParams = rpcParams;
-  }
-  
-  getRpcMethod() {
-    return this.rpcMethod;
-  }
-  
-  getRpcParams() {
-    return this.rpcParams;
-  }
-  
-  toString() {
-    let str = super.toString();
-    if (this.rpcMethod || this.rpcParams) str += "\nRequest: '" + this.rpcMethod + "' with params: " + (typeof this.rpcParams === "object" ? JSON.stringify(this.rpcParams) : this.rpcParams);
-    return str;
-  }
-}
-
-module.exports = MoneroRpcError;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_common_MoneroUtils.js.html b/docs/src_main_js_common_MoneroUtils.js.html deleted file mode 100644 index 38b4148bc..000000000 --- a/docs/src_main_js_common_MoneroUtils.js.html +++ /dev/null @@ -1,503 +0,0 @@ - - - - - JSDoc: Source: src/main/js/common/MoneroUtils.js - - - - - - - - - - -
- -

Source: src/main/js/common/MoneroUtils.js

- - - - - - -
-
-
const assert = require("assert");
-const BigInteger = require("./biginteger").BigInteger;
-const GenUtils = require("./GenUtils");
-const LibraryUtils = require("./LibraryUtils");
-const MoneroError = require("./MoneroError");
-const MoneroIntegratedAddress = require("../wallet/model/MoneroIntegratedAddress");
-const MoneroNetworkType = require("../daemon/model/MoneroNetworkType");
-
-/**
- * Collection of Monero utilities. Runs in a worker thread by default.
- * 
- * @hideconstructor
- */
-class MoneroUtils {
-    
-  /**
-   * <p>Get the version of the monero-javascript library.<p>
-   * 
-   * @return {string} the version of this monero-javascript library
-   */
-  static getVersion() {
-    return "0.8.3";
-  }
-  
-  /**
-   * Enable or disable proxying these utilities to a worker thread.
-   * 
-   * @param {boolean} proxyToWorker - specifies if utilities should be proxied to a worker
-   */
-  static setProxyToWorker(proxyToWorker) {
-    MoneroUtils.PROXY_TO_WORKER = proxyToWorker || false;
-  }
-  
-  /**
-   * Validate the given mnemonic, throw an error if invalid.
-   *
-   * TODO: improve validation, use network type
-   * 
-   * @param {string} mnemonic - mnemonic to validate
-   */
-  static async validateMnemonic(mnemonic) {
-    assert(mnemonic, "Mnemonic phrase is not initialized");
-    let words = mnemonic.split(" ");
-    if (words.length !== MoneroUtils.NUM_MNEMONIC_WORDS) throw new MoneroError("Mnemonic phrase is " + words.length + " words but must be " + MoneroUtils.NUM_MNEMONIC_WORDS);
-  }
-  
-  /**
-   * Indicates if a private view key is valid.
-   * 
-   * @param {string} privateViewKey is the private view key to validate
-   * @return {Promise<bool>} true if the private view key is valid, false otherwise
-   */
-  static async isValidPrivateViewKey(privateViewKey) {
-    try {
-      await MoneroUtils.validatePrivateViewKey(privateViewKey);
-      return true;
-    } catch (e) {
-      return false;
-    }
-  }
-  
-  /**
-   * Indicates if a public view key is valid.
-   * 
-   * @param {string} publicViewKey is the public view key to validate
-   * @return {Promise<bool>} true if the public view key is valid, false otherwise
-   */
-  static async isValidPublicViewKey(publicViewKey) {
-    try {
-      await MoneroUtils.validatePublicViewKey(publicViewKey);
-      return true;
-    } catch (e) {
-      return false;
-    }
-  }
-  
-  /**
-   * Indicates if a private spend key is valid.
-   * 
-   * @param {string} privateSpendKey is the private spend key to validate
-   * @return {Promise<bool>} true if the private spend key is valid, false otherwise
-   */
-  static async isValidPrivateSpendKey(privateSpendKey) {
-    try {
-      await MoneroUtils.validatePrivateSpendKey(privateSpendKey);
-      return true;
-    } catch (e) {
-      return false;
-    }
-  }
-  
-  /**
-   * Indicates if a public spend key is valid.
-   * 
-   * @param {string} publicSpendKey is the public spend key to validate
-   * @return {Promise<bool>} true if the public spend key is valid, false otherwise
-   */
-  static async isValidPublicSpendKey(publicSpendKey) {
-    try {
-      await MoneroUtils.validatePublicSpendKey(publicSpendKey);
-      return true;
-    } catch (e) {
-      return false;
-    }
-  }
-  
-  /**
-   * Validate the given private view key, throw an error if invalid.
-   *
-   * @param {string} privateViewKey - private view key to validate
-   */
-  static async validatePrivateViewKey(privateViewKey) {
-    if (!MoneroUtils._isHex64(privateViewKey)) throw new MoneroError("private view key expected to be 64 hex characters");
-  }
-  
-  /**
-   * Validate the given public view key, throw an error if invalid.
-   *
-   * @param {string} publicViewKey - public view key to validate
-   */
-  static async validatePublicViewKey(publicViewKey) {
-    if (!MoneroUtils._isHex64(publicViewKey)) throw new MoneroError("public view key expected to be 64 hex characters");
-  }
-  
-  /**
-   * Validate the given private spend key, throw an error if invalid.
-   *
-   * @param {string} privateSpendKey - private spend key to validate
-   */
-  static async validatePrivateSpendKey(privateSpendKey) {
-    if (!MoneroUtils._isHex64(privateSpendKey)) throw new MoneroError("private spend key expected to be 64 hex characters");
-  }
-  
-  /**
-   * Validate the given public spend key, throw an error if invalid.
-   *
-   * @param {string} publicSpendKey - public spend key to validate
-   */
-  static async validatePublicSpendKey(publicSpendKey) {
-    if (!MoneroUtils._isHex64(publicSpendKey)) throw new MoneroError("public spend key expected to be 64 hex characters");
-  }
-  
-  /**
-   * Get an integrated address.
-   * 
-   * @param {MoneroNetworkType} networkType - network type of the integrated address
-   * @param {string} standardAddress - address to derive the integrated address from
-   * @param {string} paymentId - optionally specifies the integrated address's payment id (defaults to random payment id)
-   * @return {Promise<MoneroIntegratedAddress>} the integrated address
-   */
-  static async getIntegratedAddress(networkType, standardAddress, paymentId) {
-    if (MoneroUtils.PROXY_TO_WORKER) return new MoneroIntegratedAddress(await LibraryUtils.invokeWorker(undefined, "moneroUtilsGetIntegratedAddress", Array.from(arguments)));
-  
-    // validate inputs
-    MoneroNetworkType.validate(networkType);
-    assert(typeof standardAddress === "string", "Address is not string");
-    assert(standardAddress.length > 0, "Address is empty");
-    assert(GenUtils.isBase58(standardAddress), "Address is not base 58");
-    
-    // load keys module by default
-    if (LibraryUtils.getWasmModule() === undefined) await LibraryUtils.loadKeysModule();
-    
-    // get integrated address in queue
-    return LibraryUtils.getWasmModule().queueTask(async function() {
-      let integratedAddressJson = LibraryUtils.getWasmModule().get_integrated_address_util(networkType, standardAddress, paymentId ? paymentId : "");
-      if (integratedAddressJson.charAt(0) !== '{') throw new MoneroError(integratedAddressJson);
-      return new MoneroIntegratedAddress(JSON.parse(integratedAddressJson));
-    });
-  }
-  
-  /**
-   * Determine if the given address is valid.
-   * 
-   * @param {string} address - address
-   * @param {MoneroNetworkType} networkType - network type of the address to validate
-   * @return {Promise<boolean>} true if the address is valid, false otherwise
-   */
-  static async isValidAddress(address, networkType) {
-    try {
-      await MoneroUtils.validateAddress(address, networkType);
-      return true;
-    } catch (err) {
-      return false;
-    }
-  }
-  
-  /**
-   * Validate the given address, throw an error if invalid.
-   *
-   * @param {string} address - address to validate
-   * @param {MoneroNetworkType} networkType - network type of the address to validate
-   */
-  static async validateAddress(address, networkType) {
-    if (MoneroUtils.PROXY_TO_WORKER) return LibraryUtils.invokeWorker(undefined, "moneroUtilsValidateAddress", Array.from(arguments));
-    
-    // validate inputs
-    assert(typeof address === "string", "Address is not string");
-    assert(address.length > 0, "Address is empty");
-    assert(GenUtils.isBase58(address), "Address is not base 58");
-    MoneroNetworkType.validate(networkType);
-    
-    // load keys module by default
-    if (LibraryUtils.getWasmModule() === undefined) await LibraryUtils.loadKeysModule();
-    
-    // validate address in queue
-    return LibraryUtils.getWasmModule().queueTask(async function() {
-      let errMsg = LibraryUtils.getWasmModule().validate_address(address, networkType);
-      if (errMsg) throw new MoneroError(errMsg);
-    });
-  }
-  
-  /**
-   * Determine if the given payment id is valid.
-   * 
-   * @param {string} paymentId - payment id to determine if valid
-   * @return {Promise<bool>} true if the payment id is valid, false otherwise
-   */
-  static async isValidPaymentId(paymentId) {
-    try {
-      await MoneroUtils.validatePaymentId(paymentId);
-      return true;
-    } catch (e) {
-      return false;
-    }
-  }
-  
-  /**
-   * Validate the given payment id, throw an error if invalid.
-   * 
-   * TODO: improve validation
-   * 
-   * @param {string} paymentId - payment id to validate 
-   */
-  static async validatePaymentId(paymentId) {
-    assert.equal(typeof paymentId, "string");
-    assert(paymentId.length === 16 || paymentId.length === 64);
-  }
-    
-  /**
-   * Decode tx extra according to https://cryptonote.org/cns/cns005.txt and
-   * returns the last tx pub key.
-   * 
-   * TODO: use c++ bridge for this
-   * 
-   * @param [byte[]] txExtra - array of tx extra bytes
-   * @return {string} the last pub key as a hexidecimal string
-   */
-  static async getLastTxPubKey(txExtra) {
-    let lastPubKeyIdx;
-    for (let i = 0; i < txExtra.length; i++) {
-      let tag = txExtra[i];
-      if (tag === 0 || tag === 2) {
-        i += 1 + txExtra[i + 1];  // advance to next tag
-      } else if (tag === 1) {
-        lastPubKeyIdx = i + 1;
-        i += 1 + 32;              // advance to next tag
-      } else throw new MoneroError("Invalid sub-field tag: " + tag);
-    }
-    return Buffer.from(new Uint8Array(txExtra.slice(lastPubKeyIdx, lastPubKeyIdx + 32))).toString("hex");
-  }
-  
-  /**
-   * Determines if two payment ids are functionally equal.
-   * 
-   * For example, 03284e41c342f032 and 03284e41c342f032000000000000000000000000000000000000000000000000 are considered equal.
-   * 
-   * @param {string} paymentId1 is a payment id to compare
-   * @param {string} paymentId2 is a payment id to compare
-   * @return {bool} true if the payment ids are equal, false otherwise
-   */
-  static paymentIdsEqual(paymentId1, paymentId2) {
-    let maxLength = Math.max(paymentId1.length, paymentId2.length);
-    for (let i = 0; i < maxLength; i++) {
-      if (i < paymentId1.length && i < paymentId2.length && paymentId1[i] !== paymentId2[i]) return false;
-      if (i >= paymentId1.length && paymentId2[i] !== '0') return false;
-      if (i >= paymentId2.length && paymentId1[i] !== '0') return false;
-    }
-    return true;
-  }
-  
-  /**
-   * Merges a transaction into a list of existing transactions.
-   * 
-   * @param {MoneroTx[]} txs - existing transactions to merge into
-   * @param {MoneroTx} tx - transaction to merge into the list
-   */
-  static mergeTx(txs, tx) {
-    for (let aTx of txs) {
-      if (aTx.getHash() === tx.getHash()) {
-        aTx.merge(tx);
-        return;
-      }
-    }
-    txs.push(tx);
-  }
-  
-  /**
-   * Convert the given JSON to a binary Uint8Array using Monero's portable storage format.
-   * 
-   * @param {object} json - json to convert to binary
-   * @return {Promise<Uint8Array>} the json converted to portable storage binary
-   */
-  static async jsonToBinary(json) {
-    if (MoneroUtils.PROXY_TO_WORKER) return LibraryUtils.invokeWorker(undefined, "moneroUtilsJsonToBinary", Array.from(arguments));
-    
-    // load keys module by default
-    if (LibraryUtils.getWasmModule() === undefined) await LibraryUtils.loadKeysModule();
-    
-    // use wasm in queue
-    return LibraryUtils.getWasmModule().queueTask(async function() {
-      
-      // serialize json to binary which is stored in c++ heap
-      let binMemInfoStr = LibraryUtils.getWasmModule().malloc_binary_from_json(JSON.stringify(json));
-      
-      // sanitize binary memory address info
-      let binMemInfo = JSON.parse(binMemInfoStr);
-      binMemInfo.ptr = parseInt(binMemInfo.ptr);
-      binMemInfo.length = parseInt(binMemInfo.length);
-      
-      // read binary data from heap to Uint8Array
-      let view = new Uint8Array(binMemInfo.length);
-      for (let i = 0; i < binMemInfo.length; i++) {
-        view[i] = LibraryUtils.getWasmModule().HEAPU8[binMemInfo.ptr / Uint8Array.BYTES_PER_ELEMENT + i];
-      }
-      
-      // free binary on heap
-      LibraryUtils.getWasmModule()._free(binMemInfo.ptr);
-      
-      // return json from binary data
-      return view;
-    });
-  }
-  
-  /**
-   * Convert the given portable storage binary to JSON.
-   * 
-   * @param {Uint8Array} uint8arr - binary data in Monero's portable storage format
-   * @return {Promise<object>} JSON object converted from the binary data
-   */
-  static async binaryToJson(uint8arr) {
-    if (MoneroUtils.PROXY_TO_WORKER) return LibraryUtils.invokeWorker(undefined, "moneroUtilsBinaryToJson", Array.from(arguments));
-    
-    // load keys module by default
-    if (LibraryUtils.getWasmModule() === undefined) await LibraryUtils.loadKeysModule();
-    
-    // use wasm in queue
-    return LibraryUtils.getWasmModule().queueTask(async function() {
-      
-      // allocate space in c++ heap for binary
-      let ptr = LibraryUtils.getWasmModule()._malloc(uint8arr.length * uint8arr.BYTES_PER_ELEMENT);
-      let heap = new Uint8Array(LibraryUtils.getWasmModule().HEAPU8.buffer, ptr, uint8arr.length * uint8arr.BYTES_PER_ELEMENT);
-      if (ptr !== heap.byteOffset) throw new MoneroError("Memory ptr !== heap.byteOffset"); // should be equal
-      
-      // write binary to heap
-      heap.set(new Uint8Array(uint8arr.buffer));
-      
-      // create object with binary memory address info
-      let binMemInfo = { ptr: ptr, length: uint8arr.length };
-      
-      // convert binary to json str
-      const ret_string = LibraryUtils.getWasmModule().binary_to_json(JSON.stringify(binMemInfo));
-      
-      // free binary on heap
-      LibraryUtils.getWasmModule()._free(ptr);
-      
-      // parse and return json
-      return JSON.parse(ret_string);
-    });
-  }
-  
-  /**
-   * Convert the binary response from daemon RPC block retrieval to JSON.
-   * 
-   * @param {Uint8Array} uint8arr - binary response from daemon RPC when getting blocks
-   * @return {Promise<object>} JSON object with the blocks data
-   */
-  static async binaryBlocksToJson(uint8arr) {
-    if (MoneroUtils.PROXY_TO_WORKER) return LibraryUtils.invokeWorker(undefined, "moneroUtilsBinaryBlocksToJson", Array.from(arguments));
-    
-    // load keys module by default
-    if (LibraryUtils.getWasmModule() === undefined) await LibraryUtils.loadKeysModule();
-    
-    // use wasm in queue
-    return LibraryUtils.getWasmModule().queueTask(async function() {
-      
-      // allocate space in c++ heap for binary
-      let ptr = LibraryUtils.getWasmModule()._malloc(uint8arr.length * uint8arr.BYTES_PER_ELEMENT);
-      let heap = new Uint8Array(LibraryUtils.getWasmModule().HEAPU8.buffer, ptr, uint8arr.length * uint8arr.BYTES_PER_ELEMENT);
-      if (ptr !== heap.byteOffset) throw new MoneroError("Memory ptr !== heap.byteOffset"); // should be equal
-      
-      // write binary to heap
-      heap.set(new Uint8Array(uint8arr.buffer));
-      
-      // create object with binary memory address info
-      let binMemInfo = { ptr: ptr, length: uint8arr.length  }
-
-      // convert binary to json str
-      const json_str = LibraryUtils.getWasmModule().binary_blocks_to_json(JSON.stringify(binMemInfo));
-      
-      // free memory
-      LibraryUtils.getWasmModule()._free(ptr);
-      
-      // parse result to json
-      let json = JSON.parse(json_str);                                          // parsing json gives arrays of block and tx strings
-      json.blocks = json.blocks.map(blockStr => JSON.parse(blockStr));          // replace block strings with parsed blocks
-      json.txs = json.txs.map(txs => txs ? txs.map(tx => JSON.parse(tx.replace(",", "{") + "}")) : []); // modify tx string to proper json and parse // TODO: more efficient way than this json manipulation?
-      return json;
-    });
-  }
-  
-  /**
-   * Convert XMR to atomic units.
-   * 
-   * @param {number|string} amountXmr - amount in XMR to convert to atomic units
-   * @return {BigInteger} amount in atomic units
-   */
-  static xmrToAtomicUnits(amountXmr) {
-    if (typeof amountXmr === "number") amountXmr = "" + amountXmr;
-    else if (typeof amountXmr !== "string") throw new MoneroError("Must provide XMR amount as a string or js number to convert to atomic units");
-    let decimalDivisor = 1;
-    let decimalIdx = amountXmr.indexOf('.');
-    if (decimalIdx > -1) {
-      decimalDivisor = Math.pow(10, amountXmr.length - decimalIdx - 1);
-      amountXmr = amountXmr.slice(0, decimalIdx) + amountXmr.slice(decimalIdx + 1);
-    }
-    return new BigInteger(amountXmr).multiply(new BigInteger(MoneroUtils.AU_PER_XMR)).divide(new BigInteger(decimalDivisor));
-  }
-  
-  /**
-   * Convert atomic units to XMR.
-   * 
-   * @param {BigInteger|string} amountAtomicUnits - amount in atomic units to convert to XMR
-   * @return {number} amount in XMR 
-   */
-  static atomicUnitsToXmr(amountAtomicUnits) {
-    if (typeof amountAtomicUnits === "string") amountAtomicUnits = new BigInteger(amountAtomicUnits);
-    else if (!(amountAtomicUnits instanceof BigInteger)) throw new MoneroError("Must provide atomic units as BigInteger or string to convert to XMR");
-    let quotientAndRemainder = amountAtomicUnits.divRem(new BigInteger(MoneroUtils.AU_PER_XMR));
-    return Number(quotientAndRemainder[0].toJSValue() + quotientAndRemainder[1].toJSValue() / MoneroUtils.AU_PER_XMR);
-  }
-  
-  static _isHex64(str) {
-    return typeof str === "string" && str.length === 64 && GenUtils.isHex(str);
-  }
-}
-
-MoneroUtils.PROXY_TO_WORKER = true;
-MoneroUtils.NUM_MNEMONIC_WORDS = 25;
-MoneroUtils.RING_SIZE = 12;
-MoneroUtils.MAX_REQUESTS_PER_SECOND = 50;
-MoneroUtils.AU_PER_XMR = 1000000000000;
-
-module.exports = MoneroUtils;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_common_MoneroWebWorker.js.html b/docs/src_main_js_common_MoneroWebWorker.js.html deleted file mode 100644 index 01577b4e9..000000000 --- a/docs/src_main_js_common_MoneroWebWorker.js.html +++ /dev/null @@ -1,1037 +0,0 @@ - - - - - JSDoc: Source: src/main/js/common/MoneroWebWorker.js - - - - - - - - - - -
- -

Source: src/main/js/common/MoneroWebWorker.js

- - - - - - -
-
-
const assert = require("assert");
-const GenUtils = require("./GenUtils");
-const HttpClient = require("./HttpClient");
-const LibraryUtils = require("./LibraryUtils");
-const MoneroBan = require("../daemon/model/MoneroBan");
-const MoneroBlock = require("../daemon/model/MoneroBlock");
-const MoneroDaemonListener = require("../daemon/model/MoneroDaemonListener");
-const MoneroDaemonRpc = require("../daemon/MoneroDaemonRpc");
-const MoneroError = require("./MoneroError");
-const MoneroKeyImage = require("../daemon/model/MoneroKeyImage");
-const MoneroRpcConnection = require("./MoneroRpcConnection");
-const MoneroTxConfig = require("../wallet/model/MoneroTxConfig");
-const MoneroTxSet = require("../wallet/model/MoneroTxSet");
-const MoneroUtils = require("../common/MoneroUtils");
-const MoneroWalletConfig = require("../wallet/model/MoneroWalletConfig");
-const MoneroWalletListener = require("../wallet/model/MoneroWalletListener");
-const MoneroWalletFull = require("../wallet/MoneroWalletFull");
-
-/**
- * Worker to manage a daemon and wasm wallet off the main thread using messages.
- * 
- * Required message format: e.data[0] = object id, e.data[1] = function name, e.data[2+] = function args
- *
- * For browser applications, this file must be browserified and placed in the web app root.
- * 
- * @private
- */
-onmessage = async function(e) {
-  
-  // initialize one time
-  await self.initOneTime();
-  
-  // validate params
-  let objectId = e.data[0];
-  let fnName = e.data[1];
-  let callbackId = e.data[2];
-  assert(fnName, "Must provide function name to worker");
-  assert(callbackId, "Must provide callback id to worker");
-  if (!self[fnName]) throw new Error("Method '" + fnName + "' is not registered with worker");
-  e.data.splice(1, 2); // remove function name and callback id to apply function with arguments
-  
-  // execute worker function and post result to callback
-  try {
-    postMessage([objectId, callbackId, {result: await self[fnName].apply(null, e.data)}]);
-  } catch (e) {
-    if (!(e instanceof Error)) e = new Error(e);
-    postMessage([objectId, callbackId, {error: LibraryUtils.serializeError(e)}]);
-  }
-}
-
-self.initOneTime = async function() {
-  if (!self.isInitialized) {
-    self.WORKER_OBJECTS = {};
-    self.isInitialized = true;
-    MoneroUtils.PROXY_TO_WORKER = false;
-  }
-}
-
-// --------------------------- STATIC UTILITIES -------------------------------
-
-self.httpRequest = async function(objectId, opts) {
-  try {
-    return await HttpClient.request(Object.assign(opts, {proxyToWorker: false}));  
-  } catch (err) {
-    throw err.statusCode ? new Error(JSON.stringify({statusCode: err.statusCode, statusMessage: err.message})) : err;
-  }
-}
-
-self.setLogLevel = async function(objectId, level) {
-  return LibraryUtils.setLogLevel(level);
-}
-
-self.getWasmMemoryUsed = async function(objectId) {
-  return LibraryUtils.getWasmModule() && LibraryUtils.getWasmModule().HEAP8 ? LibraryUtils.getWasmModule().HEAP8.length : undefined;
-}
-
-// ----------------------------- MONERO UTILS ---------------------------------
-
-self.moneroUtilsGetIntegratedAddress = async function(objectId, networkType, standardAddress, paymentId) {
-  return (await MoneroUtils.getIntegratedAddress(networkType, standardAddress, paymentId)).toJson();
-}
-
-self.moneroUtilsValidateAddress = async function(objectId, address, networkType) {
-  return MoneroUtils.validateAddress(address, networkType);
-}
-
-self.moneroUtilsJsonToBinary = async function(objectId, json) {
-  return MoneroUtils.jsonToBinary(json);
-}
-
-self.moneroUtilsBinaryToJson = async function(objectId, uint8arr) {
-  return MoneroUtils.binaryToJson(uint8arr);
-}
-
-self.moneroUtilsBinaryBlocksToJson = async function(objectId, uint8arr) {
-  return MoneroUtils.binaryBlocksToJson(uint8arr);
-}
-
-// ---------------------------- DAEMON METHODS --------------------------------
-
-self.daemonAddListener = async function(daemonId, listenerId) {
-  let listener = new class extends MoneroDaemonListener {
-    async onBlockHeader(blockHeader) {
-      self.postMessage([daemonId, "onBlockHeader_" + listenerId, blockHeader.toJson()]);
-    }
-  }
-  if (!self.daemonListeners) self.daemonListeners = {};
-  self.daemonListeners[listenerId] = listener;
-  await self.WORKER_OBJECTS[daemonId].addListener(listener);
-}
-
-self.daemonRemoveListener = async function(daemonId, listenerId) {
-  if (!self.daemonListeners[listenerId]) throw new MoneroError("No daemon worker listener registered with id: " + listenerId);
-  await self.WORKER_OBJECTS[daemonId].removeListener(self.daemonListeners[listenerId]);
-  delete self.daemonListeners[listenerId];
-}
-
-self.connectDaemonRpc = async function(daemonId, config) {
-  self.WORKER_OBJECTS[daemonId] = new MoneroDaemonRpc(config);
-}
-
-self.daemonGetRpcConnection = async function(daemonId) {
-  let connection = await self.WORKER_OBJECTS[daemonId].getRpcConnection();
-  return connection ? connection.getConfig() : undefined;
-}
-
-self.daemonIsConnected = async function(daemonId) {
-  return self.WORKER_OBJECTS[daemonId].isConnected();
-}
-
-self.daemonGetVersion = async function(daemonId) {
-  return (await self.WORKER_OBJECTS[daemonId].getVersion()).toJson();
-}
-
-self.daemonIsTrusted = async function(daemonId) {
-  return self.WORKER_OBJECTS[daemonId].isTrusted();
-}
-
-self.daemonGetHeight = async function(daemonId) {
-  return self.WORKER_OBJECTS[daemonId].getHeight();
-}
-
-self.daemonGetBlockHash = async function(daemonId, height) {
-  return self.WORKER_OBJECTS[daemonId].getBlockHash(height);
-}
-
-self.daemonGetBlockTemplate = async function(daemonId, walletAddress, reserveSize) {
-  return (await self.WORKER_OBJECTS[daemonId].getBlockTemplate(walletAddress, reserveSize)).toJson();
-}
-
-self.daemonGetLastBlockHeader = async function(daemonId) {
-  return (await self.WORKER_OBJECTS[daemonId].getLastBlockHeader()).toJson();
-}
-
-self.daemonGetBlockHeaderByHash = async function(daemonId, hash) {
-  return (await self.WORKER_OBJECTS[daemonId].getBlockHeaderByHash(hash)).toJson();
-}
-
-self.daemonGetBlockHeaderByHeight = async function(daemonId, height) {
-  return (await self.WORKER_OBJECTS[daemonId].getBlockHeaderByHeight(height)).toJson();
-}
-
-self.daemonGetBlockHeadersByRange = async function(daemonId, startHeight, endHeight) {
-  let blockHeadersJson = [];
-  for (let blockHeader of await self.WORKER_OBJECTS[daemonId].getBlockHeadersByRange(startHeight, endHeight)) blockHeadersJson.push(blockHeader.toJson());
-  return blockHeadersJson;
-}
-
-self.daemonGetBlockByHash = async function(daemonId, blockHash) {
-  return (await self.WORKER_OBJECTS[daemonId].getBlockByHash(blockHash)).toJson();
-}
-
-self.daemonGetBlocksByHash = async function(daemonId, blockHashes, startHeight, prune) {
-  let blocksJson = [];
-  for (let block of await self.WORKER_OBJECTS[daemonId].getBlocksByHash(blockHashes, startHeight, prune)) blocksJson.push(block.toJson());
-  return blocksJson;
-}
-
-self.daemonGetBlockByHeight = async function(daemonId, height) {
-  return (await self.WORKER_OBJECTS[daemonId].getBlockByHeight(height)).toJson();
-}
-
-self.daemonGetBlocksByHeight = async function(daemonId, heights) {
-  let blocksJson = [];
-  for (let block of await self.WORKER_OBJECTS[daemonId].getBlocksByHeight(heights)) blocksJson.push(block.toJson());
-  return blocksJson;
-}
-
-self.daemonGetBlocksByRange = async function(daemonId, startHeight, endHeight) {
-  let blocksJson = [];
-  for (let block of await self.WORKER_OBJECTS[daemonId].getBlocksByRange(startHeight, endHeight)) blocksJson.push(block.toJson());
-  return blocksJson;
-}
-
-self.daemonGetBlocksByRangeChunked = async function(daemonId, startHeight, endHeight, maxChunkSize) {
-  let blocksJson = [];
-  for (let block of await self.WORKER_OBJECTS[daemonId].getBlocksByRangeChunked(startHeight, endHeight, maxChunkSize)) blocksJson.push(block.toJson());
-  return blocksJson;
-}
-
-self.daemonGetBlockHashes = async function(daemonId, blockHashes, startHeight) {
-  throw new Error("worker.getBlockHashes not implemented");
-}
-
-// TODO: factor common code with self.getTxs()
-self.daemonGetTxs = async function(daemonId, txHashes, prune) {
-  
-  // get txs
-  let txs = await self.WORKER_OBJECTS[daemonId].getTxs(txHashes, prune);
-  
-  // collect unique blocks to preserve model relationships as trees (based on monero_wasm_bridge.cpp::get_txs)
-  let blocks = [];
-  let unconfirmedBlock = undefined
-  let seenBlocks = new Set();
-  for (let tx of txs) {
-    if (!tx.getBlock()) {
-      if (!unconfirmedBlock) unconfirmedBlock = new MoneroBlock().setTxs([]);
-      tx.setBlock(unconfirmedBlock);
-      unconfirmedBlock.getTxs().push(tx);
-    }
-    if (!seenBlocks.has(tx.getBlock())) {
-      seenBlocks.add(tx.getBlock());
-      blocks.push(tx.getBlock());
-    }
-  }
-  
-  // serialize blocks to json
-  for (let i = 0; i < blocks.length; i++) blocks[i] = blocks[i].toJson();
-  return blocks;
-}
-
-self.daemonGetTxHexes = async function(daemonId, txHashes, prune) {
-  return self.WORKER_OBJECTS[daemonId].getTxHexes(txHashes, prune);
-}
-
-self.daemonGetMinerTxSum = async function(daemonId, height, numBlocks) {
-  return (await self.WORKER_OBJECTS[daemonId].getMinerTxSum(height, numBlocks)).toJson();
-}
-
-self.daemonGetFeeEstimate = async function(daemonId, graceBlocks) {
-  return (await self.WORKER_OBJECTS[daemonId].getFeeEstimate(graceBlocks)).toJson();
-}
-
-self.daemonSubmitTxHex = async function(daemonId, txHex, doNotRelay) {
-  return (await self.WORKER_OBJECTS[daemonId].submitTxHex(txHex, doNotRelay)).toJson();
-}
-
-self.daemonRelayTxsByHash = async function(daemonId, txHashes) {
-  return self.WORKER_OBJECTS[daemonId].relayTxsByHash(txHashes);
-}
-
-self.daemonGetTxPool = async function(daemonId) {
-  let txs = await self.WORKER_OBJECTS[daemonId].getTxPool();
-  let block = new MoneroBlock().setTxs(txs);
-  for (let tx of txs) tx.setBlock(block)
-  return block.toJson();
-}
-
-self.daemonGetTxPoolHashes = async function(daemonId) {
-  return self.WORKER_OBJECTS[daemonId].getTxPoolHashes();
-}
-
-//async getTxPoolBacklog() {
-//  throw new MoneroError("Not implemented");
-//}
-
-self.daemonGetTxPoolStats = async function(daemonId) {
-  return (await self.WORKER_OBJECTS[daemonId].getTxPoolStats()).toJson();
-}
-
-self.daemonFlushTxPool = async function(daemonId, hashes) {
-  return self.WORKER_OBJECTS[daemonId].flushTxPool(hashes);
-}
-
-self.daemonGetKeyImageSpentStatuses = async function(daemonId, keyImages) {
-  return self.WORKER_OBJECTS[daemonId].getKeyImageSpentStatuses(keyImages);
-}
-
-//
-//async getOutputs(outputs) {
-//  throw new MoneroError("Not implemented");
-//}
-
-self.daemonGetOutputHistogram = async function(daemonId, amounts, minCount, maxCount, isUnlocked, recentCutoff) {
-  let entriesJson = [];
-  for (let entry of await self.WORKER_OBJECTS[daemonId].getOutputHistogram(amounts, minCount, maxCount, isUnlocked, recentCutoff)) {
-    entriesJson.push(entry.toJson());
-  }
-  return entriesJson;
-}
-
-//
-//async getOutputDistribution(amounts, cumulative, startHeight, endHeight) {
-//  throw new MoneroError("Not implemented");
-//}
-
-self.daemonGetInfo = async function(daemonId) {
-  return (await self.WORKER_OBJECTS[daemonId].getInfo()).toJson();
-}
-
-self.daemonGetSyncInfo = async function(daemonId) {
-  return (await self.WORKER_OBJECTS[daemonId].getSyncInfo()).toJson();
-}
-
-self.daemonGetHardForkInfo = async function(daemonId) {
-  return (await self.WORKER_OBJECTS[daemonId].getHardForkInfo()).toJson();
-}
-
-self.daemonGetAltChains = async function(daemonId) {
-  let altChainsJson = [];
-  for (let altChain of await self.WORKER_OBJECTS[daemonId].getAltChains()) altChainsJson.push(altChain.toJson());
-  return altChainsJson;
-}
-
-self.daemonGetAltBlockHashes = async function(daemonId) {
-  return self.WORKER_OBJECTS[daemonId].getAltBlockHashes();
-}
-
-self.daemonGetDownloadLimit = async function(daemonId) {
-  return self.WORKER_OBJECTS[daemonId].getDownloadLimit();
-}
-
-self.daemonSetDownloadLimit = async function(daemonId, limit) {
-  return self.WORKER_OBJECTS[daemonId].setDownloadLimit(limit);
-}
-
-self.daemonResetDownloadLimit = async function(daemonId) {
-  return self.WORKER_OBJECTS[daemonId].resetDownloadLimit();
-}
-
-self.daemonGetUploadLimit = async function(daemonId) {
-  return self.WORKER_OBJECTS[daemonId].getUploadLimit();
-}
-
-self.daemonSetUploadLimit = async function(daemonId, limit) {
-  return self.WORKER_OBJECTS[daemonId].setUploadLimit(limit);
-}
-
-self.daemonResetUploadLimit = async function(daemonId) {
-  return self.WORKER_OBJECTS[daemonId].resetUploadLimit();
-}
-
-self.daemonGetPeers = async function(daemonId) {
-  let peersJson = [];
-  for (let peer of await self.WORKER_OBJECTS[daemonId].getPeers()) peersJson.push(peer.toJson());
-  return peersJson;
-}
-
-self.daemonGetKnownPeers = async function(daemonId) {
-  let peersJson = [];
-  for (let peer of await self.WORKER_OBJECTS[daemonId].getKnownPeers()) peersJson.push(peer.toJson());
-  return peersJson;
-}
-
-self.daemonSetOutgoingPeerLimit = async function(daemonId, limit) {
-  return self.WORKER_OBJECTS[daemonId].setOutgoingPeerLimit(limit);
-}
-
-self.daemonSetIncomingPeerLimit = async function(daemonId, limit) {
-  return self.WORKER_OBJECTS[daemonId].setIncomingPeerLimit(limit);
-}
-
-self.daemonGetPeerBans = async function(daemonId) {
-  let bansJson = [];
-  for (let ban of await self.WORKER_OBJECTS[daemonId].getPeerBans()) bansJson.push(ban.toJson());
-  return bansJson;
-}
-
-self.daemonSetPeerBans = async function(daemonId, bansJson) {
-  let bans = [];
-  for (let banJson of bansJson) bans.push(new MoneroBan(banJson));
-  return self.WORKER_OBJECTS[daemonId].setPeerBans(bans);
-}
-
-self.daemonStartMining = async function(daemonId, address, numThreads, isBackground, ignoreBattery) {
-  return self.WORKER_OBJECTS[daemonId].startMining(address, numThreads, isBackground, ignoreBattery);
-}
-
-self.daemonStopMining = async function(daemonId) {
-  return self.WORKER_OBJECTS[daemonId].stopMining();
-}
-
-self.daemonGetMiningStatus = async function(daemonId) {
-  return (await self.WORKER_OBJECTS[daemonId].getMiningStatus()).toJson();
-}
-
-self.daemonPruneBlockchain = async function(daemonId, check) {
-  return (await self.WORKER_OBJECTS[daemonId].pruneBlockchain(check)).toJson();
-}
-
-//
-//async submitBlocks(blockBlobs) {
-//  throw new MoneroError("Not implemented");
-//}
-//
-//async checkForUpdate() {
-//  throw new MoneroError("Not implemented");
-//}
-//
-//async downloadUpdate(path) {
-//  throw new MoneroError("Not implemented");
-//}
-
-self.daemonStop = async function(daemonId) {
-  return self.WORKER_OBJECTS[daemonId].stop();
-}
-
-self.daemonWaitForNextBlockHeader = async function(daemonId) {
-  return (await self.WORKER_OBJECTS[daemonId].waitForNextBlockHeader()).toJson();
-}
-
-//------------------------------ WALLET METHODS -------------------------------
-
-self.openWalletData = async function(walletId, path, password, networkType, keysData, cacheData, daemonUriOrConfig) {
-  let daemonConnection = daemonUriOrConfig ? new MoneroRpcConnection(daemonUriOrConfig) : undefined;
-  self.WORKER_OBJECTS[walletId] = await MoneroWalletFull.openWallet({path: "", password: password, networkType: networkType, keysData: keysData, cacheData: cacheData, server: daemonConnection, proxyToWorker: false});
-  self.WORKER_OBJECTS[walletId]._setBrowserMainPath(path);
-}
-
-self._createWallet = async function(walletId, configJson) {
-  let config = new MoneroWalletConfig(configJson);
-  let path = config.getPath();
-  config.setPath("");
-  config.setProxyToWorker(false);
-  self.WORKER_OBJECTS[walletId] = await MoneroWalletFull.createWallet(config);
-  self.WORKER_OBJECTS[walletId]._setBrowserMainPath(path);
-}
-
-self.isViewOnly = async function(walletId) {
-  return self.WORKER_OBJECTS[walletId].isViewOnly();
-}
-
-self.getNetworkType = async function(walletId) {
-  return self.WORKER_OBJECTS[walletId].getNetworkType();
-}
-
-//
-//async getVersion() {
-//  throw new Error("Not implemented");
-//}
-
-self.getSeed = async function(walletId) {
-  return self.WORKER_OBJECTS[walletId].getSeed();
-}
-
-self.getSeedLanguage = async function(walletId) {
-  return self.WORKER_OBJECTS[walletId].getSeedLanguage();
-}
-
-self.getSeedLanguages = async function(walletId) {
-  return self.WORKER_OBJECTS[walletId].getSeedLanguages();
-}
-
-self.getPrivateSpendKey = async function(walletId) {
-  return self.WORKER_OBJECTS[walletId].getPrivateSpendKey();
-}
-
-self.getPrivateViewKey = async function(walletId) {
-  return self.WORKER_OBJECTS[walletId].getPrivateViewKey();
-}
-
-self.getPublicViewKey = async function(walletId) {
-  return self.WORKER_OBJECTS[walletId].getPublicViewKey();
-}
-
-self.getPublicSpendKey = async function(walletId) {
-  return self.WORKER_OBJECTS[walletId].getPublicSpendKey();
-}
-
-self.getAddress = async function(walletId, accountIdx, subaddressIdx) {
-  return self.WORKER_OBJECTS[walletId].getAddress(accountIdx, subaddressIdx);
-}
-
-self.getAddressIndex = async function(walletId, address) {
-  return (await self.WORKER_OBJECTS[walletId].getAddressIndex(address)).toJson();
-}
-
-self.setSubaddressLabel = async function(walletId, accountIdx, subaddressIdx, label) {
-  await self.WORKER_OBJECTS[walletId].setSubaddressLabel(accountIdx, subaddressIdx, label);
-}
-
-self.getIntegratedAddress = async function(walletId, standardAddress, paymentId) {
-  return (await self.WORKER_OBJECTS[walletId].getIntegratedAddress(standardAddress, paymentId)).toJson();
-}
-
-self.decodeIntegratedAddress = async function(walletId, integratedAddress) {
-  return (await self.WORKER_OBJECTS[walletId].decodeIntegratedAddress(integratedAddress)).toJson();
-}
-
-self.setDaemonConnection = async function(walletId, config) {
-  return self.WORKER_OBJECTS[walletId].setDaemonConnection(config ? new MoneroRpcConnection(Object.assign(config, {proxyToWorker: false})) : undefined);
-}
-
-self.getDaemonConnection = async function(walletId) {
-  let connection = await self.WORKER_OBJECTS[walletId].getDaemonConnection();
-  return connection ? connection.getConfig() : undefined;
-}
-
-self.isConnectedToDaemon = async function(walletId) {
-  return self.WORKER_OBJECTS[walletId].isConnectedToDaemon();
-}
-
-self.getRestoreHeight = async function(walletId) {
-  return self.WORKER_OBJECTS[walletId].getRestoreHeight();
-}
-
-self.setRestoreHeight = async function(walletId, restoreHeight) {
-  return self.WORKER_OBJECTS[walletId].setRestoreHeight(restoreHeight);
-}
-
-self.getDaemonHeight = async function(walletId) {
-  return self.WORKER_OBJECTS[walletId].getDaemonHeight();
-}
-
-self.getDaemonMaxPeerHeight = async function(walletId) {
-  return self.WORKER_OBJECTS[walletId].getDaemonMaxPeerHeight()
-}
-
-self.getHeightByDate = async function(walletId, year, month, day) {
-  return self.WORKER_OBJECTS[walletId].getHeightByDate(year, month, day);
-}
-
-self.isDaemonSynced = async function(walletId) {
-  return self.WORKER_OBJECTS[walletId].isDaemonSynced();
-}
-
-self.getHeight = async function(walletId) {
-  return self.WORKER_OBJECTS[walletId].getHeight();
-}
-
-self.addListener = async function(walletId, listenerId) {
-  
-  /**
-   * Internal listener to bridge notifications to external listeners.
-   * 
-   * TODO: MoneroWalletListener is not defined until scripts imported
-   * 
-   * @private
-   */
-  class WalletWorkerHelperListener extends MoneroWalletListener {
-    
-    constructor(walletId, id, worker) {
-      super();
-      this.walletId = walletId;
-      this.id = id;
-      this.worker = worker;
-    }
-    
-    getId() {
-      return this.id;
-    }
-    
-    onSyncProgress(height, startHeight, endHeight, percentDone, message) {
-      this.worker.postMessage([this.walletId, "onSyncProgress_" + this.getId(), height, startHeight, endHeight, percentDone, message]);
-    }
-
-    onNewBlock(height) { 
-      this.worker.postMessage([this.walletId, "onNewBlock_" + this.getId(), height]);
-    }
-    
-    onBalancesChanged(newBalance, newUnlockedBalance) {
-      this.worker.postMessage([this.walletId, "onBalancesChanged_" + this.getId(), newBalance.toString(), newUnlockedBalance.toString()]);
-    }
-
-    onOutputReceived(output) {
-      let block = output.getTx().getBlock();
-      if (block === undefined) block = new MoneroBlock().setTxs([output.getTx()]);
-      this.worker.postMessage([this.walletId, "onOutputReceived_" + this.getId(), block.toJson()]);  // serialize from root block
-    }
-    
-    onOutputSpent(output) {
-      let block = output.getTx().getBlock();
-      if (block === undefined) block = new MoneroBlock().setTxs([output.getTx()]);
-      this.worker.postMessage([this.walletId, "onOutputSpent_" + this.getId(), block.toJson()]);     // serialize from root block
-    }
-  }
-  
-  let listener = new WalletWorkerHelperListener(walletId, listenerId, self);
-  if (!self.listeners) self.listeners = [];
-  self.listeners.push(listener);
-  await self.WORKER_OBJECTS[walletId].addListener(listener);
-}
-
-self.removeListener = async function(walletId, listenerId) {
-  for (let i = 0; i < self.listeners.length; i++) {
-    if (self.listeners[i].getId() !== listenerId) continue;
-    await self.WORKER_OBJECTS[walletId].removeListener(self.listeners[i]);
-    self.listeners.splice(i, 1);
-    return;
-  }
-  throw new MoneroError("Listener is not registered with wallet");
-}
-
-self.isSynced = async function(walletId) {
-  return self.WORKER_OBJECTS[walletId].isSynced();
-}
-
-self.sync = async function(walletId, startHeight, allowConcurrentCalls) {
-  return await self.WORKER_OBJECTS[walletId].sync(undefined, startHeight, allowConcurrentCalls);
-}
-
-self.startSyncing = async function(walletId, syncPeriodInMs) {
-  return self.WORKER_OBJECTS[walletId].startSyncing(syncPeriodInMs);
-}
-
-self.stopSyncing = async function(walletId) {
-  return self.WORKER_OBJECTS[walletId].stopSyncing();
-}
-
-self.scanTxs = async function(walletId, txHashes) {
-  return self.WORKER_OBJECTS[walletId].scanTxs(txHashes);
-}
-
-self.rescanSpent = async function(walletId) {
-  return self.WORKER_OBJECTS[walletId].rescanSpent();
-}
-
-self.rescanBlockchain = async function(walletId) {
-  return self.WORKER_OBJECTS[walletId].rescanBlockchain();
-}
-
-self.getBalance = async function(walletId, accountIdx, subaddressIdx) {
-  return (await self.WORKER_OBJECTS[walletId].getBalance(accountIdx, subaddressIdx)).toString();
-}
-
-self.getUnlockedBalance = async function(walletId, accountIdx, subaddressIdx) {
-  return (await self.WORKER_OBJECTS[walletId].getUnlockedBalance(accountIdx, subaddressIdx)).toString();
-}
-
-self.getAccounts = async function(walletId, includeSubaddresses, tag) {
-  let accountJsons = [];
-  for (let account of await self.WORKER_OBJECTS[walletId].getAccounts(includeSubaddresses, tag)) accountJsons.push(account.toJson());
-  return accountJsons;
-}
-
-self.getAccount = async function(walletId, accountIdx, includeSubaddresses) {
-  return (await self.WORKER_OBJECTS[walletId].getAccount(accountIdx, includeSubaddresses)).toJson();
-}
-
-self.createAccount = async function(walletId, label) {
-  return (await self.WORKER_OBJECTS[walletId].createAccount(label)).toJson();
-}
-
-self.getSubaddresses = async function(walletId, accountIdx, subaddressIndices) {
-  let subaddressJsons = [];
-  for (let subaddress of await self.WORKER_OBJECTS[walletId].getSubaddresses(accountIdx, subaddressIndices)) subaddressJsons.push(subaddress.toJson());
-  return subaddressJsons;
-}
-
-self.createSubaddress = async function(walletId, accountIdx, label) {
-  return (await self.WORKER_OBJECTS[walletId].createSubaddress(accountIdx, label)).toJson();
-}
-
-// TODO: easier or more efficient way than serializing from root blocks?
-self.getTxs = async function(walletId, blockJsonQuery) {
-  
-  // deserialize query which is json string rooted at block
-  let query = new MoneroBlock(blockJsonQuery, MoneroBlock.DeserializationType.TX_QUERY).getTxs()[0];
-  
-  // get txs
-  let txs = await self.WORKER_OBJECTS[walletId].getTxs(query);
-  
-  // collect unique blocks to preserve model relationships as trees (based on monero_wasm_bridge.cpp::get_txs)
-  let seenBlocks = new Set();
-  let unconfirmedBlock = undefined;
-  let blocks = [];
-  for (let tx of txs) {
-    if (!tx.getBlock()) {
-      if (!unconfirmedBlock) unconfirmedBlock = new MoneroBlock().setTxs([]);
-      tx.setBlock(unconfirmedBlock);
-      unconfirmedBlock.getTxs().push(tx);
-    }
-    if (!seenBlocks.has(tx.getBlock())) {
-      seenBlocks.add(tx.getBlock());
-      blocks.push(tx.getBlock());
-    }
-  }
-  
-  // serialize blocks to json
-  for (let i = 0; i < blocks.length; i++) blocks[i] = blocks[i].toJson();
-  return {blocks: blocks};
-}
-
-self.getTransfers = async function(walletId, blockJsonQuery) {
-  
-  // deserialize query which is json string rooted at block
-  let query = new MoneroBlock(blockJsonQuery, MoneroBlock.DeserializationType.TX_QUERY).getTxs()[0].getTransferQuery();
-  
-  // get transfers
-  let transfers = await self.WORKER_OBJECTS[walletId].getTransfers(query);
-  
-  // collect unique blocks to preserve model relationships as tree
-  let unconfirmedBlock = undefined;
-  let blocks = [];
-  let seenBlocks = new Set();
-  for (let transfer of transfers) {
-    let tx = transfer.getTx();
-    if (!tx.getBlock()) {
-      if (!unconfirmedBlock) unconfirmedBlock = new MoneroBlock().setTxs([]);
-      tx.setBlock(unconfirmedBlock);
-      unconfirmedBlock.getTxs().push(tx);
-    }
-    if (!seenBlocks.has(tx.getBlock())) {
-      seenBlocks.add(tx.getBlock());
-      blocks.push(tx.getBlock());
-    }
-  }
-  
-  // serialize blocks to json
-  for (let i = 0; i < blocks.length; i++) blocks[i] = blocks[i].toJson();
-  return blocks;
-}
-
-self.getOutputs = async function(walletId, blockJsonQuery) {
-
-  // deserialize query which is json string rooted at block
-  let query = new MoneroBlock(blockJsonQuery, MoneroBlock.DeserializationType.TX_QUERY).getTxs()[0].getOutputQuery();
-  
-  // get outputs
-  let outputs = await self.WORKER_OBJECTS[walletId].getOutputs(query);
-  
-  // collect unique blocks to preserve model relationships as tree
-  let unconfirmedBlock = undefined;
-  let blocks = [];
-  let seenBlocks = new Set();
-  for (let output of outputs) {
-    let tx = output.getTx();
-    if (!tx.getBlock()) {
-      if (!unconfirmedBlock) unconfirmedBlock = new MoneroBlock().setTxs([]);
-      tx.setBlock(unconfirmedBlock);
-      unconfirmedBlock.getTxs().push(tx);
-    }
-    if (!seenBlocks.has(tx.getBlock())) {
-      seenBlocks.add(tx.getBlock());
-      blocks.push(tx.getBlock());
-    }
-  }
-  
-  // serialize blocks to json
-  for (let i = 0; i < blocks.length; i++) blocks[i] = blocks[i].toJson();
-  return blocks;
-}
-
-self.exportOutputs = async function(walletId, all) {
-  return self.WORKER_OBJECTS[walletId].exportOutputs(all);
-}
-
-self.importOutputs = async function(walletId, outputsHex) {
-  return self.WORKER_OBJECTS[walletId].importOutputs(outputsHex);
-}
-
-self.getKeyImages = async function(walletId, all) {
-  let keyImagesJson = [];
-  for (let keyImage of await self.WORKER_OBJECTS[walletId].exportKeyImages(all)) keyImagesJson.push(keyImage.toJson());
-  return keyImagesJson;
-}
-
-self.importKeyImages = async function(walletId, keyImagesJson) {
-  let keyImages = [];
-  for (let keyImageJson of keyImagesJson) keyImages.push(new MoneroKeyImage(keyImageJson));
-  return (await self.WORKER_OBJECTS[walletId].importKeyImages(keyImages)).toJson();
-}
-
-//async getNewKeyImagesFromLastImport() {
-//  throw new MoneroError("Not implemented");
-//}
-
-self.freezeOutput = async function(walletId, keyImage) {
-  return self.WORKER_OBJECTS[walletId].freezeOutput(keyImage);
-}
-
-self.thawOutput = async function(walletId, keyImage) {
-  return self.WORKER_OBJECTS[walletId].thawOutput(keyImage);
-}
-
-self.isOutputFrozen = async function(walletId, keyImage) {
-  return self.WORKER_OBJECTS[walletId].isOutputFrozen(keyImage);
-}
-
-self.createTxs = async function(walletId, config) {
-  if (typeof config === "object") config = new MoneroTxConfig(config);
-  let txs = await self.WORKER_OBJECTS[walletId].createTxs(config);
-  return txs[0].getTxSet().toJson();
-}
-
-self.sweepOutput = async function(walletId, config) {
-  if (typeof config === "object") config = new MoneroTxConfig(config);
-  let tx = await self.WORKER_OBJECTS[walletId].sweepOutput(config);
-  return tx.getTxSet().toJson();
-}
-
-self.sweepUnlocked = async function(walletId, config) {
-  if (typeof config === "object") config = new MoneroTxConfig(config);
-  let txs = await self.WORKER_OBJECTS[walletId].sweepUnlocked(config);
-  let txSets = [];
-  for (let tx of txs) if (!GenUtils.arrayContains(txSets, tx.getTxSet())) txSets.push(tx.getTxSet());
-  let txSetsJson = [];
-  for (let txSet of txSets) txSetsJson.push(txSet.toJson());
-  return txSetsJson;
-}
-
-self.sweepDust = async function(walletId, relay) {
-  let txs = await self.WORKER_OBJECTS[walletId].sweepDust(relay);
-  return txs.length === 0 ? {} : txs[0].getTxSet().toJson();
-}
-
-self.relayTxs = async function(walletId, txMetadatas) {
-  return self.WORKER_OBJECTS[walletId].relayTxs(txMetadatas);
-}
-
-self.describeTxSet = async function(walletId, txSetJson) {
-  return (await self.WORKER_OBJECTS[walletId].describeTxSet(new MoneroTxSet(txSetJson))).toJson();
-}
-
-self.signTxs = async function(walletId, unsignedTxHex) {
-  return self.WORKER_OBJECTS[walletId].signTxs(unsignedTxHex);
-}
-
-self.submitTxs = async function(walletId, signedTxHex) {
-  return self.WORKER_OBJECTS[walletId].submitTxs(signedTxHex);
-}
-
-self.signMessage = async function(walletId, message, signatureType, accountIdx, subaddressIdx) {
-  return self.WORKER_OBJECTS[walletId].signMessage(message, signatureType, accountIdx, subaddressIdx);
-}
-
-self.verifyMessage = async function(walletId, message, address, signature) {
-  return (await self.WORKER_OBJECTS[walletId].verifyMessage(message, address, signature)).toJson();
-}
-
-self.getTxKey = async function(walletId, txHash) {
-  return self.WORKER_OBJECTS[walletId].getTxKey(txHash);
-}
-
-self.checkTxKey = async function(walletId, txHash, txKey, address) {
-  return (await self.WORKER_OBJECTS[walletId].checkTxKey(txHash, txKey, address)).toJson();
-}
-
-self.getTxProof = async function(walletId, txHash, address, message) {
-  return self.WORKER_OBJECTS[walletId].getTxProof(txHash, address, message);
-}
-
-self.checkTxProof = async function(walletId, txHash, address, message, signature) {
-  return (await self.WORKER_OBJECTS[walletId].checkTxProof(txHash, address, message, signature)).toJson();
-}
-
-self.getSpendProof = async function(walletId, txHash, message) {
-  return self.WORKER_OBJECTS[walletId].getSpendProof(txHash, message);
-}
-
-self.checkSpendProof = async function(walletId, txHash, message, signature) {
-  return self.WORKER_OBJECTS[walletId].checkSpendProof(txHash, message, signature);
-}
-
-self.getReserveProofWallet = async function(walletId, message) {
-  return self.WORKER_OBJECTS[walletId].getReserveProofWallet(message);
-}
-
-self.getReserveProofAccount = async function(walletId, accountIdx, amountStr, message) {
-  return self.WORKER_OBJECTS[walletId].getReserveProofAccount(accountIdx, amountStr, message);
-}
-
-self.checkReserveProof = async function(walletId, address, message, signature) {
-  return (await self.WORKER_OBJECTS[walletId].checkReserveProof(address, message, signature)).toJson();
-}
-
-self.getTxNotes = async function(walletId, txHashes) {
-  return self.WORKER_OBJECTS[walletId].getTxNotes(txHashes);
-}
-
-self.setTxNotes = async function(walletId, txHashes, txNotes) {
-  return self.WORKER_OBJECTS[walletId].setTxNotes(txHashes, txNotes);
-}
-
-self.getAddressBookEntries = async function(walletId, entryIndices) {
-  let entriesJson = [];
-  for (let entry of await self.WORKER_OBJECTS[walletId].getAddressBookEntries(entryIndices)) entriesJson.push(entry.toJson());
-  return entriesJson;
-}
-
-self.addAddressBookEntry = async function(walletId, address, description) {
-  return self.WORKER_OBJECTS[walletId].addAddressBookEntry(address, description);
-}
-
-self.editAddressBookEntry = async function(walletId, index, setAddress, address, setDescription, description) {
-  return self.WORKER_OBJECTS[walletId].editAddressBookEntry(index, setAddress, address, setDescription, description);
-}
-
-self.deleteAddressBookEntry = async function(walletId, index) {
-  return self.WORKER_OBJECTS[walletId].deleteAddressBookEntry(index);
-}
-
-self.tagAccounts = async function(walletId, tag, accountIndices) {
-  throw new Error("Not implemented");
-}
-
-self.untagAccounts = async function(walletId, accountIndices) {
-  throw new Error("Not implemented");
-}
-
-self.getAccountTags = async function(walletId) {
-  throw new Error("Not implemented");
-}
-
-self.setAccountTagLabel = async function(walletId, tag, label) {
-  throw new Error("Not implemented");
-}
-
-self.getPaymentUri = async function(walletId, configJson) {
-  return self.WORKER_OBJECTS[walletId].getPaymentUri(new MoneroTxConfig(configJson));
-}
-
-self.parsePaymentUri = async function(walletId, uri) {
-  return (await self.WORKER_OBJECTS[walletId].parsePaymentUri(uri)).toJson();
-}
-
-self.getAttribute = async function(walletId, key) {
-  return self.WORKER_OBJECTS[walletId].getAttribute(key);
-}
-
-self.setAttribute = async function(walletId, key, value) {
-  return self.WORKER_OBJECTS[walletId].setAttribute(key, value);
-}
-
-self.startMining = async function(walletId, numThreads, backgroundMining, ignoreBattery) {
-  return self.WORKER_OBJECTS[walletId].startMining(numThreads, backgroundMining, ignoreBattery);
-}
-
-self.stopMining = async function(walletId) {
-  return self.WORKER_OBJECTS[walletId].stopMining();
-}
-
-self.isMultisigImportNeeded = async function(walletId) {
-  return self.WORKER_OBJECTS[walletId].isMultisigImportNeeded();
-}
-
-self.isMultisig = async function(walletId) {
-  return self.WORKER_OBJECTS[walletId].isMultisig();
-}
-
-self.getMultisigInfo = async function(walletId) {
-  return (await self.WORKER_OBJECTS[walletId].getMultisigInfo()).toJson();
-}
-
-self.prepareMultisig = async function(walletId) {
-  return self.WORKER_OBJECTS[walletId].prepareMultisig();
-}
-
-self.makeMultisig = async function(walletId, multisigHexes, threshold, password) {
-  return await self.WORKER_OBJECTS[walletId].makeMultisig(multisigHexes, threshold, password);
-}
-
-self.exchangeMultisigKeys = async function(walletId, multisigHexes, password) {
-  return (await self.WORKER_OBJECTS[walletId].exchangeMultisigKeys(multisigHexes, password)).toJson();
-}
-
-self.exportMultisigHex = async function(walletId) {
-  return self.WORKER_OBJECTS[walletId].exportMultisigHex();
-}
-
-self.importMultisigHex = async function(walletId, multisigHexes) {
-  return self.WORKER_OBJECTS[walletId].importMultisigHex(multisigHexes);
-}
-
-self.signMultisigTxHex = async function(walletId, multisigTxHex) {
-  return (await self.WORKER_OBJECTS[walletId].signMultisigTxHex(multisigTxHex)).toJson();
-}
-
-self.submitMultisigTxHex = async function(walletId, signedMultisigTxHex) {
-  return self.WORKER_OBJECTS[walletId].submitMultisigTxHex(signedMultisigTxHex);
-}
-
-self.getData = async function(walletId) {
-  return self.WORKER_OBJECTS[walletId].getData();
-}
-
-self.changePassword = async function(walletId, oldPassword, newPassword) {
-  return self.WORKER_OBJECTS[walletId].changePassword(oldPassword, newPassword);
-}
-
-self.isClosed = async function(walletId) {
-  return self.WORKER_OBJECTS[walletId].isClosed();
-}
-
-self.close = async function(walletId, save) {
-  return self.WORKER_OBJECTS[walletId].close(save); // TODO: remove listeners and delete wallet from WORKER_OBJECTS
-}
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_common_SslOptions.js.html b/docs/src_main_js_common_SslOptions.js.html deleted file mode 100644 index c3e0e0578..000000000 --- a/docs/src_main_js_common_SslOptions.js.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - JSDoc: Source: src/main/js/common/SslOptions.js - - - - - - - - - - -
- -

Source: src/main/js/common/SslOptions.js

- - - - - - -
-
-
/**
- * SSL options for remote endpoints.
- */
-class SslOptions {
-  
-  constructor(state) {
-    this.state = Object.assign({}, state);
-  }
-  
-  getPrivateKeyPath() {
-    return this.state.privateKeyPath;
-  }
-  
-  setPrivateKeyPath(privateKeyPath) {
-    this.state.privateKeyPath = privateKeyPath;
-    return this;
-  }
-  
-  getCertificatePath() {
-    return this.state.certificatePath;
-  }
-  
-  setCertificatePath(certificatePath) {
-    this.state.certificatePath = certificatePath;
-    return this;
-  }
-  
-  getCertificateAuthorityFile() {
-    return this.state.certificateAuthorityFile;
-  }
-  
-  setCertificateAuthorityFile(certificateAuthorityFile) {
-    this.state.certificateAuthorityFile = certificateAuthorityFile;
-    return this;
-  }
-  
-  getAllowedFingerprints() {
-    return this.state.allowedFingerprints;
-  }
-  
-  setAllowedFingerprints(allowedFingerprints) {
-    this.state.allowedFingerprints = allowedFingerprints;
-    return this;
-  }
-  
-  getAllowAnyCert() {
-    return this.state.allowAnyCert;
-  }
-  
-  setAllowAnyCert(allowAnyCert) {
-    this.state.allowAnyCert = allowAnyCert;
-    return this;
-  }
-}
-
-module.exports = SslOptions;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_common_TaskLooper.js.html b/docs/src_main_js_common_TaskLooper.js.html deleted file mode 100644 index 56b3ed0da..000000000 --- a/docs/src_main_js_common_TaskLooper.js.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - JSDoc: Source: src/main/js/common/TaskLooper.js - - - - - - - - - - -
- -

Source: src/main/js/common/TaskLooper.js

- - - - - - -
-
-
/**
- * Run a task in a fixed period loop.
- */
-class TaskLooper {
-  
-  /**
-   * Build the looper with a function to invoke on a fixed period loop.
-   * 
-   * @param {function} task - the task function to invoke
-   */
-  constructor(task) {
-    this._task = task;
-  }
-
-  /**
-   * Get the task function to invoke on a fixed period loop.
-   * 
-   * @return {function} the task function
-   */
-  getTask() {
-    return this._task;
-  }
-  
-  /**
-   * Start the task loop.
-   * 
-   * @param {int} periodInMs the loop period in milliseconds
-   * @return {TaskLooper} this class for chaining
-   */
-  start(periodInMs) {
-    this._periodInMs = periodInMs;
-    if (this._isStarted) return this;
-    this._isStarted = true;
-    
-    // start looping
-    this._runLoop();
-    return this;
-  }
-
-  /**
-   * Indicates if looping.
-   * 
-   * @return {boolean} true if looping, false otherwise
-   */
-  isStarted() {
-    return this._isStarted;
-  }
-  
-  /**
-   * Stop the task loop.
-   */
-  stop() {
-    this._isStarted = false;
-  }
-  
-  /**
-   * Set the loop period in milliseconds.
-   * 
-   * @param {int} periodInMs the loop period in milliseconds
-   */
-  setPeriodInMs(periodInMs) {
-    this._periodInMs = periodInMs;
-  }
-  
-  async _runLoop() {
-    if (this._isLooping) return;
-    this._isLooping = true;
-    let that = this;
-    while (this._isStarted) {
-      let startTime = Date.now();
-      await this._task();
-      if (this._isStarted) await new Promise(function(resolve) { setTimeout(resolve, that._periodInMs - (Date.now() - startTime)); });
-    }
-    this._isLooping = false;
-  }
-}
-
-module.exports = TaskLooper;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_common_ThreadPool.js.html b/docs/src_main_js_common_ThreadPool.js.html deleted file mode 100644 index 851bb6050..000000000 --- a/docs/src_main_js_common_ThreadPool.js.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - JSDoc: Source: src/main/js/common/ThreadPool.js - - - - - - - - - - -
- -

Source: src/main/js/common/ThreadPool.js

- - - - - - -
-
-
const GenUtils = require("./GenUtils");
-
-/**
- * Simple thread pool using the async library.
- */
-class ThreadPool {
-  
-  /**
-   * Construct the thread pool.
-   * 
-   * @param {int} maxConcurrency - maximum number of threads in the pool (default 1)
-   */
-  constructor(maxConcurrency) {
-    if (maxConcurrency === undefined) maxConcurrency = 1;
-    if (maxConcurrency < 1) throw new Error("Max concurrency must be greater than or equal to 1");
-    
-    // manager concurrency with async queue
-    const async = require("async");
-    this.taskQueue = async.queue(function(asyncFn, callback) {
-      if (asyncFn.then) asyncFn.then(resp => { callback(resp); }).catch(err => { callback(undefined, err); });
-      else asyncFn().then(resp => { callback(resp); }).catch(err => { callback(undefined, err); });
-    }, maxConcurrency);
-    
-    // use drain listeners to support await all
-    let that = this;
-    this.drainListeners = [];
-    this.taskQueue.drain = function() {
-      for (let listener of that.drainListeners) listener();
-    }
-  }
-  
-  /**
-   * Submit an asynchronous function to run using the thread pool.
-   * 
-   * @param {function} asyncFn - asynchronous function to run with the thread pool
-   * @return {Promise} resolves when the function completes execution
-   */
-  async submit(asyncFn) {
-    let that = this;
-    return new Promise(function(resolve, reject) {
-      that.taskQueue.push(asyncFn, function(resp, err) {
-        if (err !== undefined) reject(err);
-        else resolve(resp);
-      });
-    });
-  }
-  
-  /**
-   * Await all functions to complete.
-   * 
-   * @return {Promise} resolves when all functions complete
-   */
-  async awaitAll() {
-    if (this.taskQueue.length === 0) return;
-    let that = this;
-    return new Promise(function(resolve) {
-      that.drainListeners.push(function() {
-        GenUtils.remove(that.drainListeners, this);
-        resolve();
-      })
-    });
-  }
-}
-
-module.exports = ThreadPool;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_common_biginteger.js.html b/docs/src_main_js_common_biginteger.js.html deleted file mode 100644 index 3d38b1e73..000000000 --- a/docs/src_main_js_common_biginteger.js.html +++ /dev/null @@ -1,1686 +0,0 @@ - - - - - JSDoc: Source: src/main/js/common/biginteger.js - - - - - - - - - - -
- -

Source: src/main/js/common/biginteger.js

- - - - - - -
-
-
/*
-	JavaScript BigInteger library version 0.9.1
-	http://silentmatt.com/biginteger/
-
-	Copyright (c) 2009 Matthew Crumley <email@matthewcrumley.com>
-	Copyright (c) 2010,2011 by John Tobey <John.Tobey@gmail.com>
-	Licensed under the MIT license.
-
-	Support for arbitrary internal representation base was added by
-	Vitaly Magerya.
-*/
-/*
-
-This file has been modified by Paul Shapiro:
-
-1. to bring in the function lowVal which was written by Lucas Jones
-2. to expose CONSTRUCT
-
-*/
-/*
-	File: biginteger.js
-
-	Exports:
-
-		<BigInteger>
-*/
-(function(exports) {
-"use strict";
-/*
-	Class: BigInteger
-	An arbitrarily-large integer.
-
-	<BigInteger> objects should be considered immutable. None of the "built-in"
-	methods modify *this* or their arguments. All properties should be
-	considered private.
-
-	All the methods of <BigInteger> instances can be called "statically". The
-	static versions are convenient if you don't already have a <BigInteger>
-	object.
-
-	As an example, these calls are equivalent.
-
-	> BigInteger(4).multiply(5); // returns BigInteger(20);
-	> BigInteger.multiply(4, 5); // returns BigInteger(20);
-
-	> var a = 42;
-	> var a = BigInteger.toJSValue("0b101010"); // Not completely useless...
-*/
-
-var CONSTRUCT = {}; // Unique token to call "private" version of constructor
-
-/*
-	Constructor: BigInteger()
-	Convert a value to a <BigInteger>.
-
-	Although <BigInteger()> is the constructor for <BigInteger> objects, it is
-	best not to call it as a constructor. If *n* is a <BigInteger> object, it is
-	simply returned as-is. Otherwise, <BigInteger()> is equivalent to <parse>
-	without a radix argument.
-
-	> var n0 = BigInteger();	  // Same as <BigInteger.ZERO>
-	> var n1 = BigInteger("123"); // Create a new <BigInteger> with value 123
-	> var n2 = BigInteger(123);   // Create a new <BigInteger> with value 123
-	> var n3 = BigInteger(n2);	// Return n2, unchanged
-
-	The constructor form only takes an array and a sign. *n* must be an
-	array of numbers in little-endian order, where each digit is between 0
-	and BigInteger.base.  The second parameter sets the sign: -1 for
-	negative, +1 for positive, or 0 for zero. The array is *not copied and
-	may be modified*. If the array contains only zeros, the sign parameter
-	is ignored and is forced to zero.
-
-	> new BigInteger([5], -1): create a new BigInteger with value -5
-
-	Parameters:
-
-		n - Value to convert to a <BigInteger>.
-
-	Returns:
-
-		A <BigInteger> value.
-
-	See Also:
-
-		<parse>, <BigInteger>
-*/
-function BigInteger(n, s, token) {
-	if (token !== CONSTRUCT) {
-		if (n instanceof BigInteger) {
-			return n;
-		}
-		else if (typeof n === "undefined") {
-			return ZERO;
-		}
-		return BigInteger.parse(n);
-	}
-
-	n = n || [];  // Provide the nullary constructor for subclasses.
-	while (n.length && !n[n.length - 1]) {
-		--n.length;
-	}
-	this._d = n;
-	this._s = n.length ? (s || 1) : 0;
-}
-BigInteger.CONSTRUCT = CONSTRUCT; // added by PS to actually use the constructor
-
-BigInteger._construct = function(n, s) {
-	return new BigInteger(n, s, CONSTRUCT);
-};
-
-// Base-10 speedup hacks in parse, toString, exp10 and log functions
-// require base to be a power of 10. 10^7 is the largest such power
-// that won't cause a precision loss when digits are multiplied.
-var BigInteger_base = 10000000;
-var BigInteger_base_log10 = 7;
-
-BigInteger.base = BigInteger_base;
-BigInteger.base_log10 = BigInteger_base_log10;
-
-var ZERO = new BigInteger([], 0, CONSTRUCT);
-// Constant: ZERO
-// <BigInteger> 0.
-BigInteger.ZERO = ZERO;
-
-var ONE = new BigInteger([1], 1, CONSTRUCT);
-// Constant: ONE
-// <BigInteger> 1.
-BigInteger.ONE = ONE;
-
-var M_ONE = new BigInteger(ONE._d, -1, CONSTRUCT);
-// Constant: M_ONE
-// <BigInteger> -1.
-BigInteger.M_ONE = M_ONE;
-
-// Constant: _0
-// Shortcut for <ZERO>.
-BigInteger._0 = ZERO;
-
-// Constant: _1
-// Shortcut for <ONE>.
-BigInteger._1 = ONE;
-
-/*
-	Constant: small
-	Array of <BigIntegers> from 0 to 36.
-
-	These are used internally for parsing, but useful when you need a "small"
-	<BigInteger>.
-
-	See Also:
-
-		<ZERO>, <ONE>, <_0>, <_1>
-*/
-BigInteger.small = [
-	ZERO,
-	ONE,
-	/* Assuming BigInteger_base > 36 */
-	new BigInteger( [2], 1, CONSTRUCT),
-	new BigInteger( [3], 1, CONSTRUCT),
-	new BigInteger( [4], 1, CONSTRUCT),
-	new BigInteger( [5], 1, CONSTRUCT),
-	new BigInteger( [6], 1, CONSTRUCT),
-	new BigInteger( [7], 1, CONSTRUCT),
-	new BigInteger( [8], 1, CONSTRUCT),
-	new BigInteger( [9], 1, CONSTRUCT),
-	new BigInteger([10], 1, CONSTRUCT),
-	new BigInteger([11], 1, CONSTRUCT),
-	new BigInteger([12], 1, CONSTRUCT),
-	new BigInteger([13], 1, CONSTRUCT),
-	new BigInteger([14], 1, CONSTRUCT),
-	new BigInteger([15], 1, CONSTRUCT),
-	new BigInteger([16], 1, CONSTRUCT),
-	new BigInteger([17], 1, CONSTRUCT),
-	new BigInteger([18], 1, CONSTRUCT),
-	new BigInteger([19], 1, CONSTRUCT),
-	new BigInteger([20], 1, CONSTRUCT),
-	new BigInteger([21], 1, CONSTRUCT),
-	new BigInteger([22], 1, CONSTRUCT),
-	new BigInteger([23], 1, CONSTRUCT),
-	new BigInteger([24], 1, CONSTRUCT),
-	new BigInteger([25], 1, CONSTRUCT),
-	new BigInteger([26], 1, CONSTRUCT),
-	new BigInteger([27], 1, CONSTRUCT),
-	new BigInteger([28], 1, CONSTRUCT),
-	new BigInteger([29], 1, CONSTRUCT),
-	new BigInteger([30], 1, CONSTRUCT),
-	new BigInteger([31], 1, CONSTRUCT),
-	new BigInteger([32], 1, CONSTRUCT),
-	new BigInteger([33], 1, CONSTRUCT),
-	new BigInteger([34], 1, CONSTRUCT),
-	new BigInteger([35], 1, CONSTRUCT),
-	new BigInteger([36], 1, CONSTRUCT)
-];
-
-// Used for parsing/radix conversion
-BigInteger.digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".split("");
-
-/*
-	Method: toString
-	Convert a <BigInteger> to a string.
-
-	When *base* is greater than 10, letters are upper case.
-
-	Parameters:
-
-		base - Optional base to represent the number in (default is base 10).
-			   Must be between 2 and 36 inclusive, or an Error will be thrown.
-
-	Returns:
-
-		The string representation of the <BigInteger>.
-*/
-BigInteger.prototype.toString = function(base) {
-	base = +base || 10;
-	if (base < 2 || base > 36) {
-		throw new Error("illegal radix " + base + ".");
-	}
-	if (this._s === 0) {
-		return "0";
-	}
-	if (base === 10) {
-		var str = this._s < 0 ? "-" : "";
-		str += this._d[this._d.length - 1].toString();
-		for (var i = this._d.length - 2; i >= 0; i--) {
-			var group = this._d[i].toString();
-			while (group.length < BigInteger_base_log10) group = '0' + group;
-			str += group;
-		}
-		return str;
-	}
-	else {
-		var numerals = BigInteger.digits;
-		base = BigInteger.small[base];
-		var sign = this._s;
-
-		var n = this.abs();
-		var digits = [];
-		var digit;
-
-		while (n._s !== 0) {
-			var divmod = n.divRem(base);
-			n = divmod[0];
-			digit = divmod[1];
-			// TODO: This could be changed to unshift instead of reversing at the end.
-			// Benchmark both to compare speeds.
-			digits.push(numerals[digit.valueOf()]);
-		}
-		return (sign < 0 ? "-" : "") + digits.reverse().join("");
-	}
-};
-
-// Verify strings for parsing
-BigInteger.radixRegex = [
-	/^$/,
-	/^$/,
-	/^[01]*$/,
-	/^[012]*$/,
-	/^[0-3]*$/,
-	/^[0-4]*$/,
-	/^[0-5]*$/,
-	/^[0-6]*$/,
-	/^[0-7]*$/,
-	/^[0-8]*$/,
-	/^[0-9]*$/,
-	/^[0-9aA]*$/,
-	/^[0-9abAB]*$/,
-	/^[0-9abcABC]*$/,
-	/^[0-9a-dA-D]*$/,
-	/^[0-9a-eA-E]*$/,
-	/^[0-9a-fA-F]*$/,
-	/^[0-9a-gA-G]*$/,
-	/^[0-9a-hA-H]*$/,
-	/^[0-9a-iA-I]*$/,
-	/^[0-9a-jA-J]*$/,
-	/^[0-9a-kA-K]*$/,
-	/^[0-9a-lA-L]*$/,
-	/^[0-9a-mA-M]*$/,
-	/^[0-9a-nA-N]*$/,
-	/^[0-9a-oA-O]*$/,
-	/^[0-9a-pA-P]*$/,
-	/^[0-9a-qA-Q]*$/,
-	/^[0-9a-rA-R]*$/,
-	/^[0-9a-sA-S]*$/,
-	/^[0-9a-tA-T]*$/,
-	/^[0-9a-uA-U]*$/,
-	/^[0-9a-vA-V]*$/,
-	/^[0-9a-wA-W]*$/,
-	/^[0-9a-xA-X]*$/,
-	/^[0-9a-yA-Y]*$/,
-	/^[0-9a-zA-Z]*$/
-];
-
-/*
-	Function: parse
-	Parse a string into a <BigInteger>.
-
-	*base* is optional but, if provided, must be from 2 to 36 inclusive. If
-	*base* is not provided, it will be guessed based on the leading characters
-	of *s* as follows:
-
-	- "0x" or "0X": *base* = 16
-	- "0c" or "0C": *base* = 8
-	- "0b" or "0B": *base* = 2
-	- else: *base* = 10
-
-	If no base is provided, or *base* is 10, the number can be in exponential
-	form. For example, these are all valid:
-
-	> BigInteger.parse("1e9");			  // Same as "1000000000"
-	> BigInteger.parse("1.234*10^3");	   // Same as 1234
-	> BigInteger.parse("56789 * 10 ** -2"); // Same as 567
-
-	If any characters fall outside the range defined by the radix, an exception
-	will be thrown.
-
-	Parameters:
-
-		s - The string to parse.
-		base - Optional radix (default is to guess based on *s*).
-
-	Returns:
-
-		a <BigInteger> instance.
-*/
-BigInteger.parse = function(s, base) {
-	// Expands a number in exponential form to decimal form.
-	// expandExponential("-13.441*10^5") === "1344100";
-	// expandExponential("1.12300e-1") === "0.112300";
-	// expandExponential(1000000000000000000000000000000) === "1000000000000000000000000000000";
-	function expandExponential(str) {
-		str = str.replace(/\s*[*xX]\s*10\s*(\^|\*\*)\s*/, "e");
-
-		return str.replace(/^([+\-])?(\d+)\.?(\d*)[eE]([+\-]?\d+)$/, function(x, s, n, f, c) {
-			c = +c;
-			var l = c < 0;
-			var i = n.length + c;
-			x = (l ? n : f).length;
-			c = ((c = Math.abs(c)) >= x ? c - x + l : 0);
-			var z = (new Array(c + 1)).join("0");
-			var r = n + f;
-			return (s || "") + (l ? r = z + r : r += z).substr(0, i += l ? z.length : 0) + (i < r.length ? "." + r.substr(i) : "");
-		});
-	}
-
-	s = s.toString();
-	if (typeof base === "undefined" || +base === 10) {
-		s = expandExponential(s);
-	}
-
-	var prefixRE;
-	if (typeof base === "undefined") {
-		prefixRE = '0[xcb]';
-	}
-	else if (base == 16) {
-		prefixRE = '0x';
-	}
-	else if (base == 8) {
-		prefixRE = '0c';
-	}
-	else if (base == 2) {
-		prefixRE = '0b';
-	}
-	else {
-		prefixRE = '';
-	}
-	var parts = new RegExp('^([+\\-]?)(' + prefixRE + ')?([0-9a-z]*)(?:\\.\\d*)?$', 'i').exec(s);
-	if (parts) {
-		var sign = parts[1] || "+";
-		var baseSection = parts[2] || "";
-		var digits = parts[3] || "";
-
-		if (typeof base === "undefined") {
-			// Guess base
-			if (baseSection === "0x" || baseSection === "0X") { // Hex
-				base = 16;
-			}
-			else if (baseSection === "0c" || baseSection === "0C") { // Octal
-				base = 8;
-			}
-			else if (baseSection === "0b" || baseSection === "0B") { // Binary
-				base = 2;
-			}
-			else {
-				base = 10;
-			}
-		}
-		else if (base < 2 || base > 36) {
-			throw new Error("Illegal radix " + base + ".");
-		}
-
-		base = +base;
-
-		// Check for digits outside the range
-		if (!(BigInteger.radixRegex[base].test(digits))) {
-			throw new Error("Bad digit for radix " + base);
-		}
-
-		// Strip leading zeros, and convert to array
-		digits = digits.replace(/^0+/, "").split("");
-		if (digits.length === 0) {
-			return ZERO;
-		}
-
-		// Get the sign (we know it's not zero)
-		sign = (sign === "-") ? -1 : 1;
-
-		// Optimize 10
-		if (base == 10) {
-			var d = [];
-			while (digits.length >= BigInteger_base_log10) {
-				d.push(parseInt(digits.splice(digits.length-BigInteger.base_log10, BigInteger.base_log10).join(''), 10));
-			}
-			d.push(parseInt(digits.join(''), 10));
-			return new BigInteger(d, sign, CONSTRUCT);
-		}
-
-		// Do the conversion
-		var d = ZERO;
-		base = BigInteger.small[base];
-		var small = BigInteger.small;
-		for (var i = 0; i < digits.length; i++) {
-			d = d.multiply(base).add(small[parseInt(digits[i], 36)]);
-		}
-		return new BigInteger(d._d, sign, CONSTRUCT);
-	}
-	else {
-		throw new Error("Invalid BigInteger format: " + s);
-	}
-};
-
-/*
-	Function: add
-	Add two <BigIntegers>.
-
-	Parameters:
-
-		n - The number to add to *this*. Will be converted to a <BigInteger>.
-
-	Returns:
-
-		The numbers added together.
-
-	See Also:
-
-		<subtract>, <multiply>, <quotient>, <next>
-*/
-BigInteger.prototype.add = function(n) {
-	if (this._s === 0) {
-		return BigInteger(n);
-	}
-
-	n = BigInteger(n);
-	if (n._s === 0) {
-		return this;
-	}
-	if (this._s !== n._s) {
-		n = n.negate();
-		return this.subtract(n);
-	}
-
-	var a = this._d;
-	var b = n._d;
-	var al = a.length;
-	var bl = b.length;
-	var sum = new Array(Math.max(al, bl) + 1);
-	var size = Math.min(al, bl);
-	var carry = 0;
-	var digit;
-
-	for (var i = 0; i < size; i++) {
-		digit = a[i] + b[i] + carry;
-		sum[i] = digit % BigInteger_base;
-		carry = (digit / BigInteger_base) | 0;
-	}
-	if (bl > al) {
-		a = b;
-		al = bl;
-	}
-	for (i = size; carry && i < al; i++) {
-		digit = a[i] + carry;
-		sum[i] = digit % BigInteger_base;
-		carry = (digit / BigInteger_base) | 0;
-	}
-	if (carry) {
-		sum[i] = carry;
-	}
-
-	for ( ; i < al; i++) {
-		sum[i] = a[i];
-	}
-
-	return new BigInteger(sum, this._s, CONSTRUCT);
-};
-
-/*
-	Function: negate
-	Get the additive inverse of a <BigInteger>.
-
-	Returns:
-
-		A <BigInteger> with the same magnatude, but with the opposite sign.
-
-	See Also:
-
-		<abs>
-*/
-BigInteger.prototype.negate = function() {
-	return new BigInteger(this._d, (-this._s) | 0, CONSTRUCT);
-};
-
-/*
-	Function: abs
-	Get the absolute value of a <BigInteger>.
-
-	Returns:
-
-		A <BigInteger> with the same magnatude, but always positive (or zero).
-
-	See Also:
-
-		<negate>
-*/
-BigInteger.prototype.abs = function() {
-	return (this._s < 0) ? this.negate() : this;
-};
-
-/*
-	Function: subtract
-	Subtract two <BigIntegers>.
-
-	Parameters:
-
-		n - The number to subtract from *this*. Will be converted to a <BigInteger>.
-
-	Returns:
-
-		The *n* subtracted from *this*.
-
-	See Also:
-
-		<add>, <multiply>, <quotient>, <prev>
-*/
-BigInteger.prototype.subtract = function(n) {
-	if (this._s === 0) {
-		return BigInteger(n).negate();
-	}
-
-	n = BigInteger(n);
-	if (n._s === 0) {
-		return this;
-	}
-	if (this._s !== n._s) {
-		n = n.negate();
-		return this.add(n);
-	}
-
-	var m = this;
-	// negative - negative => -|a| - -|b| => -|a| + |b| => |b| - |a|
-	if (this._s < 0) {
-		m = new BigInteger(n._d, 1, CONSTRUCT);
-		n = new BigInteger(this._d, 1, CONSTRUCT);
-	}
-
-	// Both are positive => a - b
-	var sign = m.compareAbs(n);
-	if (sign === 0) {
-		return ZERO;
-	}
-	else if (sign < 0) {
-		// swap m and n
-		var t = n;
-		n = m;
-		m = t;
-	}
-
-	// a > b
-	var a = m._d;
-	var b = n._d;
-	var al = a.length;
-	var bl = b.length;
-	var diff = new Array(al); // al >= bl since a > b
-	var borrow = 0;
-	var i;
-	var digit;
-
-	for (i = 0; i < bl; i++) {
-		digit = a[i] - borrow - b[i];
-		if (digit < 0) {
-			digit += BigInteger_base;
-			borrow = 1;
-		}
-		else {
-			borrow = 0;
-		}
-		diff[i] = digit;
-	}
-	for (i = bl; i < al; i++) {
-		digit = a[i] - borrow;
-		if (digit < 0) {
-			digit += BigInteger_base;
-		}
-		else {
-			diff[i++] = digit;
-			break;
-		}
-		diff[i] = digit;
-	}
-	for ( ; i < al; i++) {
-		diff[i] = a[i];
-	}
-
-	return new BigInteger(diff, sign, CONSTRUCT);
-};
-
-(function() {
-	function addOne(n, sign) {
-		var a = n._d;
-		var sum = a.slice();
-		var carry = true;
-		var i = 0;
-
-		while (true) {
-			var digit = (a[i] || 0) + 1;
-			sum[i] = digit % BigInteger_base;
-			if (digit <= BigInteger_base - 1) {
-				break;
-			}
-			++i;
-		}
-
-		return new BigInteger(sum, sign, CONSTRUCT);
-	}
-
-	function subtractOne(n, sign) {
-		var a = n._d;
-		var sum = a.slice();
-		var borrow = true;
-		var i = 0;
-
-		while (true) {
-			var digit = (a[i] || 0) - 1;
-			if (digit < 0) {
-				sum[i] = digit + BigInteger_base;
-			}
-			else {
-				sum[i] = digit;
-				break;
-			}
-			++i;
-		}
-
-		return new BigInteger(sum, sign, CONSTRUCT);
-	}
-
-	/*
-		Function: next
-		Get the next <BigInteger> (add one).
-
-		Returns:
-
-			*this* + 1.
-
-		See Also:
-
-			<add>, <prev>
-	*/
-	BigInteger.prototype.next = function() {
-		switch (this._s) {
-		case 0:
-			return ONE;
-		case -1:
-			return subtractOne(this, -1);
-		// case 1:
-		default:
-			return addOne(this, 1);
-		}
-	};
-
-	/*
-		Function: prev
-		Get the previous <BigInteger> (subtract one).
-
-		Returns:
-
-			*this* - 1.
-
-		See Also:
-
-			<next>, <subtract>
-	*/
-	BigInteger.prototype.prev = function() {
-		switch (this._s) {
-		case 0:
-			return M_ONE;
-		case -1:
-			return addOne(this, -1);
-		// case 1:
-		default:
-			return subtractOne(this, 1);
-		}
-	};
-})();
-
-/*
-	Function: compareAbs
-	Compare the absolute value of two <BigIntegers>.
-
-	Calling <compareAbs> is faster than calling <abs> twice, then <compare>.
-
-	Parameters:
-
-		n - The number to compare to *this*. Will be converted to a <BigInteger>.
-
-	Returns:
-
-		-1, 0, or +1 if *|this|* is less than, equal to, or greater than *|n|*.
-
-	See Also:
-
-		<compare>, <abs>
-*/
-BigInteger.prototype.compareAbs = function(n) {
-	if (this === n) {
-		return 0;
-	}
-
-	if (!(n instanceof BigInteger)) {
-		if (!isFinite(n)) {
-			return(isNaN(n) ? n : -1);
-		}
-		n = BigInteger(n);
-	}
-
-	if (this._s === 0) {
-		return (n._s !== 0) ? -1 : 0;
-	}
-	if (n._s === 0) {
-		return 1;
-	}
-
-	var l = this._d.length;
-	var nl = n._d.length;
-	if (l < nl) {
-		return -1;
-	}
-	else if (l > nl) {
-		return 1;
-	}
-
-	var a = this._d;
-	var b = n._d;
-	for (var i = l-1; i >= 0; i--) {
-		if (a[i] !== b[i]) {
-			return a[i] < b[i] ? -1 : 1;
-		}
-	}
-
-	return 0;
-};
-
-/*
-	Function: compare
-	Compare two <BigIntegers>.
-
-	Parameters:
-
-		n - The number to compare to *this*. Will be converted to a <BigInteger>.
-
-	Returns:
-
-		-1, 0, or +1 if *this* is less than, equal to, or greater than *n*.
-
-	See Also:
-
-		<compareAbs>, <isPositive>, <isNegative>, <isUnit>
-*/
-BigInteger.prototype.compare = function(n) {
-	if (this === n) {
-		return 0;
-	}
-
-	n = BigInteger(n);
-
-	if (this._s === 0) {
-		return -n._s;
-	}
-
-	if (this._s === n._s) { // both positive or both negative
-		var cmp = this.compareAbs(n);
-		return cmp * this._s;
-	}
-	else {
-		return this._s;
-	}
-};
-
-/*
-	Function: isUnit
-	Return true iff *this* is either 1 or -1.
-
-	Returns:
-
-		true if *this* compares equal to <BigInteger.ONE> or <BigInteger.M_ONE>.
-
-	See Also:
-
-		<isZero>, <isNegative>, <isPositive>, <compareAbs>, <compare>,
-		<BigInteger.ONE>, <BigInteger.M_ONE>
-*/
-BigInteger.prototype.isUnit = function() {
-	return this === ONE ||
-		this === M_ONE ||
-		(this._d.length === 1 && this._d[0] === 1);
-};
-
-/*
-	Function: multiply
-	Multiply two <BigIntegers>.
-
-	Parameters:
-
-		n - The number to multiply *this* by. Will be converted to a
-		<BigInteger>.
-
-	Returns:
-
-		The numbers multiplied together.
-
-	See Also:
-
-		<add>, <subtract>, <quotient>, <square>
-*/
-BigInteger.prototype.multiply = function(n) {
-	// TODO: Consider adding Karatsuba multiplication for large numbers
-	if (this._s === 0) {
-		return ZERO;
-	}
-
-	n = BigInteger(n);
-	if (n._s === 0) {
-		return ZERO;
-	}
-	if (this.isUnit()) {
-		if (this._s < 0) {
-			return n.negate();
-		}
-		return n;
-	}
-	if (n.isUnit()) {
-		if (n._s < 0) {
-			return this.negate();
-		}
-		return this;
-	}
-	if (this === n) {
-		return this.square();
-	}
-
-	var r = (this._d.length >= n._d.length);
-	var a = (r ? this : n)._d; // a will be longer than b
-	var b = (r ? n : this)._d;
-	var al = a.length;
-	var bl = b.length;
-
-	var pl = al + bl;
-	var partial = new Array(pl);
-	var i;
-	for (i = 0; i < pl; i++) {
-		partial[i] = 0;
-	}
-
-	for (i = 0; i < bl; i++) {
-		var carry = 0;
-		var bi = b[i];
-		var jlimit = al + i;
-		var digit;
-		for (var j = i; j < jlimit; j++) {
-			digit = partial[j] + bi * a[j - i] + carry;
-			carry = (digit / BigInteger_base) | 0;
-			partial[j] = (digit % BigInteger_base) | 0;
-		}
-		if (carry) {
-			digit = partial[j] + carry;
-			carry = (digit / BigInteger_base) | 0;
-			partial[j] = digit % BigInteger_base;
-		}
-	}
-	return new BigInteger(partial, this._s * n._s, CONSTRUCT);
-};
-
-// Multiply a BigInteger by a single-digit native number
-// Assumes that this and n are >= 0
-// This is not really intended to be used outside the library itself
-BigInteger.prototype.multiplySingleDigit = function(n) {
-	if (n === 0 || this._s === 0) {
-		return ZERO;
-	}
-	if (n === 1) {
-		return this;
-	}
-
-	var digit;
-	if (this._d.length === 1) {
-		digit = this._d[0] * n;
-		if (digit >= BigInteger_base) {
-			return new BigInteger([(digit % BigInteger_base)|0,
-					(digit / BigInteger_base)|0], 1, CONSTRUCT);
-		}
-		return new BigInteger([digit], 1, CONSTRUCT);
-	}
-
-	if (n === 2) {
-		return this.add(this);
-	}
-	if (this.isUnit()) {
-		return new BigInteger([n], 1, CONSTRUCT);
-	}
-
-	var a = this._d;
-	var al = a.length;
-
-	var pl = al + 1;
-	var partial = new Array(pl);
-	for (var i = 0; i < pl; i++) {
-		partial[i] = 0;
-	}
-
-	var carry = 0;
-	for (var j = 0; j < al; j++) {
-		digit = n * a[j] + carry;
-		carry = (digit / BigInteger_base) | 0;
-		partial[j] = (digit % BigInteger_base) | 0;
-	}
-	if (carry) {
-		partial[j] = carry;
-	}
-
-	return new BigInteger(partial, 1, CONSTRUCT);
-};
-
-/*
-	Function: square
-	Multiply a <BigInteger> by itself.
-
-	This is slightly faster than regular multiplication, since it removes the
-	duplicated multiplcations.
-
-	Returns:
-
-		> this.multiply(this)
-
-	See Also:
-		<multiply>
-*/
-BigInteger.prototype.square = function() {
-	// Normally, squaring a 10-digit number would take 100 multiplications.
-	// Of these 10 are unique diagonals, of the remaining 90 (100-10), 45 are repeated.
-	// This procedure saves (N*(N-1))/2 multiplications, (e.g., 45 of 100 multiplies).
-	// Based on code by Gary Darby, Intellitech Systems Inc., www.DelphiForFun.org
-
-	if (this._s === 0) {
-		return ZERO;
-	}
-	if (this.isUnit()) {
-		return ONE;
-	}
-
-	var digits = this._d;
-	var length = digits.length;
-	var imult1 = new Array(length + length + 1);
-	var product, carry, k;
-	var i;
-
-	// Calculate diagonal
-	for (i = 0; i < length; i++) {
-		k = i * 2;
-		product = digits[i] * digits[i];
-		carry = (product / BigInteger_base) | 0;
-		imult1[k] = product % BigInteger_base;
-		imult1[k + 1] = carry;
-	}
-
-	// Calculate repeating part
-	for (i = 0; i < length; i++) {
-		carry = 0;
-		k = i * 2 + 1;
-		for (var j = i + 1; j < length; j++, k++) {
-			product = digits[j] * digits[i] * 2 + imult1[k] + carry;
-			carry = (product / BigInteger_base) | 0;
-			imult1[k] = product % BigInteger_base;
-		}
-		k = length + i;
-		var digit = carry + imult1[k];
-		carry = (digit / BigInteger_base) | 0;
-		imult1[k] = digit % BigInteger_base;
-		imult1[k + 1] += carry;
-	}
-
-	return new BigInteger(imult1, 1, CONSTRUCT);
-};
-
-/*
-	Function: quotient
-	Divide two <BigIntegers> and truncate towards zero.
-
-	<quotient> throws an exception if *n* is zero.
-
-	Parameters:
-
-		n - The number to divide *this* by. Will be converted to a <BigInteger>.
-
-	Returns:
-
-		The *this* / *n*, truncated to an integer.
-
-	See Also:
-
-		<add>, <subtract>, <multiply>, <divRem>, <remainder>
-*/
-BigInteger.prototype.quotient = function(n) {
-	return this.divRem(n)[0];
-};
-
-/*
-	Function: divide
-	Deprecated synonym for <quotient>.
-*/
-BigInteger.prototype.divide = BigInteger.prototype.quotient;
-
-/*
-	Function: remainder
-	Calculate the remainder of two <BigIntegers>.
-
-	<remainder> throws an exception if *n* is zero.
-
-	Parameters:
-
-		n - The remainder after *this* is divided *this* by *n*. Will be
-			converted to a <BigInteger>.
-
-	Returns:
-
-		*this* % *n*.
-
-	See Also:
-
-		<divRem>, <quotient>
-*/
-BigInteger.prototype.remainder = function(n) {
-	return this.divRem(n)[1];
-};
-
-/*
-	Function: divRem
-	Calculate the integer quotient and remainder of two <BigIntegers>.
-
-	<divRem> throws an exception if *n* is zero.
-
-	Parameters:
-
-		n - The number to divide *this* by. Will be converted to a <BigInteger>.
-
-	Returns:
-
-		A two-element array containing the quotient and the remainder.
-
-		> a.divRem(b)
-
-		is exactly equivalent to
-
-		> [a.quotient(b), a.remainder(b)]
-
-		except it is faster, because they are calculated at the same time.
-
-	See Also:
-
-		<quotient>, <remainder>
-*/
-BigInteger.prototype.divRem = function(n) {
-	n = BigInteger(n);
-	if (n._s === 0) {
-		throw new Error("Divide by zero");
-	}
-	if (this._s === 0) {
-		return [ZERO, ZERO];
-	}
-	if (n._d.length === 1) {
-		return this.divRemSmall(n._s * n._d[0]);
-	}
-
-	// Test for easy cases -- |n1| <= |n2|
-	switch (this.compareAbs(n)) {
-	case 0: // n1 == n2
-		return [this._s === n._s ? ONE : M_ONE, ZERO];
-	case -1: // |n1| < |n2|
-		return [ZERO, this];
-	}
-
-	var sign = this._s * n._s;
-	var a = n.abs();
-	var b_digits = this._d;
-	var b_index = b_digits.length;
-	var digits = n._d.length;
-	var quot = [];
-	var guess;
-
-	var part = new BigInteger([], 0, CONSTRUCT);
-
-	while (b_index) {
-		part._d.unshift(b_digits[--b_index]);
-		part = new BigInteger(part._d, 1, CONSTRUCT);
-
-		if (part.compareAbs(n) < 0) {
-			quot.push(0);
-			continue;
-		}
-		if (part._s === 0) {
-			guess = 0;
-		}
-		else {
-			var xlen = part._d.length, ylen = a._d.length;
-			var highx = part._d[xlen-1]*BigInteger_base + part._d[xlen-2];
-			var highy = a._d[ylen-1]*BigInteger_base + a._d[ylen-2];
-			if (part._d.length > a._d.length) {
-				// The length of part._d can either match a._d length,
-				// or exceed it by one.
-				highx = (highx+1)*BigInteger_base;
-			}
-			guess = Math.ceil(highx/highy);
-		}
-		do {
-			var check = a.multiplySingleDigit(guess);
-			if (check.compareAbs(part) <= 0) {
-				break;
-			}
-			guess--;
-		} while (guess);
-
-		quot.push(guess);
-		if (!guess) {
-			continue;
-		}
-		var diff = part.subtract(check);
-		part._d = diff._d.slice();
-	}
-
-	return [new BigInteger(quot.reverse(), sign, CONSTRUCT),
-		   new BigInteger(part._d, this._s, CONSTRUCT)];
-};
-
-// Throws an exception if n is outside of (-BigInteger.base, -1] or
-// [1, BigInteger.base).  It's not necessary to call this, since the
-// other division functions will call it if they are able to.
-BigInteger.prototype.divRemSmall = function(n) {
-	var r;
-	n = +n;
-	if (n === 0) {
-		throw new Error("Divide by zero");
-	}
-
-	var n_s = n < 0 ? -1 : 1;
-	var sign = this._s * n_s;
-	n = Math.abs(n);
-
-	if (n < 1 || n >= BigInteger_base) {
-		throw new Error("Argument out of range");
-	}
-
-	if (this._s === 0) {
-		return [ZERO, ZERO];
-	}
-
-	if (n === 1 || n === -1) {
-		return [(sign === 1) ? this.abs() : new BigInteger(this._d, sign, CONSTRUCT), ZERO];
-	}
-
-	// 2 <= n < BigInteger_base
-
-	// divide a single digit by a single digit
-	if (this._d.length === 1) {
-		var q = new BigInteger([(this._d[0] / n) | 0], 1, CONSTRUCT);
-		r = new BigInteger([(this._d[0] % n) | 0], 1, CONSTRUCT);
-		if (sign < 0) {
-			q = q.negate();
-		}
-		if (this._s < 0) {
-			r = r.negate();
-		}
-		return [q, r];
-	}
-
-	var digits = this._d.slice();
-	var quot = new Array(digits.length);
-	var part = 0;
-	var diff = 0;
-	var i = 0;
-	var guess;
-
-	while (digits.length) {
-		part = part * BigInteger_base + digits[digits.length - 1];
-		if (part < n) {
-			quot[i++] = 0;
-			digits.pop();
-			diff = BigInteger_base * diff + part;
-			continue;
-		}
-		if (part === 0) {
-			guess = 0;
-		}
-		else {
-			guess = (part / n) | 0;
-		}
-
-		var check = n * guess;
-		diff = part - check;
-		quot[i++] = guess;
-		if (!guess) {
-			digits.pop();
-			continue;
-		}
-
-		digits.pop();
-		part = diff;
-	}
-
-	r = new BigInteger([diff], 1, CONSTRUCT);
-	if (this._s < 0) {
-		r = r.negate();
-	}
-	return [new BigInteger(quot.reverse(), sign, CONSTRUCT), r];
-};
-
-/*
-	Function: isEven
-	Return true iff *this* is divisible by two.
-
-	Note that <BigInteger.ZERO> is even.
-
-	Returns:
-
-		true if *this* is even, false otherwise.
-
-	See Also:
-
-		<isOdd>
-*/
-BigInteger.prototype.isEven = function() {
-	var digits = this._d;
-	return this._s === 0 || digits.length === 0 || (digits[0] % 2) === 0;
-};
-
-/*
-	Function: isOdd
-	Return true iff *this* is not divisible by two.
-
-	Returns:
-
-		true if *this* is odd, false otherwise.
-
-	See Also:
-
-		<isEven>
-*/
-BigInteger.prototype.isOdd = function() {
-	return !this.isEven();
-};
-
-/*
-	Function: sign
-	Get the sign of a <BigInteger>.
-
-	Returns:
-
-		* -1 if *this* < 0
-		* 0 if *this* == 0
-		* +1 if *this* > 0
-
-	See Also:
-
-		<isZero>, <isPositive>, <isNegative>, <compare>, <BigInteger.ZERO>
-*/
-BigInteger.prototype.sign = function() {
-	return this._s;
-};
-
-/*
-	Function: isPositive
-	Return true iff *this* > 0.
-
-	Returns:
-
-		true if *this*.compare(<BigInteger.ZERO>) == 1.
-
-	See Also:
-
-		<sign>, <isZero>, <isNegative>, <isUnit>, <compare>, <BigInteger.ZERO>
-*/
-BigInteger.prototype.isPositive = function() {
-	return this._s > 0;
-};
-
-/*
-	Function: isNegative
-	Return true iff *this* < 0.
-
-	Returns:
-
-		true if *this*.compare(<BigInteger.ZERO>) == -1.
-
-	See Also:
-
-		<sign>, <isPositive>, <isZero>, <isUnit>, <compare>, <BigInteger.ZERO>
-*/
-BigInteger.prototype.isNegative = function() {
-	return this._s < 0;
-};
-
-/*
-	Function: isZero
-	Return true iff *this* == 0.
-
-	Returns:
-
-		true if *this*.compare(<BigInteger.ZERO>) == 0.
-
-	See Also:
-
-		<sign>, <isPositive>, <isNegative>, <isUnit>, <BigInteger.ZERO>
-*/
-BigInteger.prototype.isZero = function() {
-	return this._s === 0;
-};
-
-/*
-	Function: exp10
-	Multiply a <BigInteger> by a power of 10.
-
-	This is equivalent to, but faster than
-
-	> if (n >= 0) {
-	>	 return this.multiply(BigInteger("1e" + n));
-	> }
-	> else { // n <= 0
-	>	 return this.quotient(BigInteger("1e" + -n));
-	> }
-
-	Parameters:
-
-		n - The power of 10 to multiply *this* by. *n* is converted to a
-		javascipt number and must be no greater than <BigInteger.MAX_EXP>
-		(0x7FFFFFFF), or an exception will be thrown.
-
-	Returns:
-
-		*this* * (10 ** *n*), truncated to an integer if necessary.
-
-	See Also:
-
-		<pow>, <multiply>
-*/
-BigInteger.prototype.exp10 = function(n) {
-	n = +n;
-	if (n === 0) {
-		return this;
-	}
-	if (Math.abs(n) > Number(MAX_EXP)) {
-		throw new Error("exponent too large in BigInteger.exp10");
-	}
-	// Optimization for this == 0. This also keeps us from having to trim zeros in the positive n case
-	if (this._s === 0) {
-		return ZERO;
-	}
-	if (n > 0) {
-		var k = new BigInteger(this._d.slice(), this._s, CONSTRUCT);
-
-		for (; n >= BigInteger_base_log10; n -= BigInteger_base_log10) {
-			k._d.unshift(0);
-		}
-		if (n == 0)
-			return k;
-		k._s = 1;
-		k = k.multiplySingleDigit(Math.pow(10, n));
-		return (this._s < 0 ? k.negate() : k);
-	} else if (-n >= this._d.length*BigInteger_base_log10) {
-		return ZERO;
-	} else {
-		var k = new BigInteger(this._d.slice(), this._s, CONSTRUCT);
-
-		for (n = -n; n >= BigInteger_base_log10; n -= BigInteger_base_log10) {
-			k._d.shift();
-		}
-		return (n == 0) ? k : k.divRemSmall(Math.pow(10, n))[0];
-	}
-};
-
-/*
-	Function: pow
-	Raise a <BigInteger> to a power.
-
-	In this implementation, 0**0 is 1.
-
-	Parameters:
-
-		n - The exponent to raise *this* by. *n* must be no greater than
-		<BigInteger.MAX_EXP> (0x7FFFFFFF), or an exception will be thrown.
-
-	Returns:
-
-		*this* raised to the *nth* power.
-
-	See Also:
-
-		<modPow>
-*/
-BigInteger.prototype.pow = function(n) {
-	if (this.isUnit()) {
-		if (this._s > 0) {
-			return this;
-		}
-		else {
-			return BigInteger(n).isOdd() ? this : this.negate();
-		}
-	}
-
-	n = BigInteger(n);
-	if (n._s === 0) {
-		return ONE;
-	}
-	else if (n._s < 0) {
-		if (this._s === 0) {
-			throw new Error("Divide by zero");
-		}
-		else {
-			return ZERO;
-		}
-	}
-	if (this._s === 0) {
-		return ZERO;
-	}
-	if (n.isUnit()) {
-		return this;
-	}
-
-	if (n.compareAbs(MAX_EXP) > 0) {
-		throw new Error("exponent too large in BigInteger.pow");
-	}
-	var x = this;
-	var aux = ONE;
-	var two = BigInteger.small[2];
-
-	while (n.isPositive()) {
-		if (n.isOdd()) {
-			aux = aux.multiply(x);
-			if (n.isUnit()) {
-				return aux;
-			}
-		}
-		x = x.square();
-		n = n.quotient(two);
-	}
-
-	return aux;
-};
-
-/*
-	Function: modPow
-	Raise a <BigInteger> to a power (mod m).
-
-	Because it is reduced by a modulus, <modPow> is not limited by
-	<BigInteger.MAX_EXP> like <pow>.
-
-	Parameters:
-
-		exponent - The exponent to raise *this* by. Must be positive.
-		modulus - The modulus.
-
-	Returns:
-
-		*this* ^ *exponent* (mod *modulus*).
-
-	See Also:
-
-		<pow>, <mod>
-*/
-BigInteger.prototype.modPow = function(exponent, modulus) {
-	var result = ONE;
-	var base = this;
-
-	while (exponent.isPositive()) {
-		if (exponent.isOdd()) {
-			result = result.multiply(base).remainder(modulus);
-		}
-
-		exponent = exponent.quotient(BigInteger.small[2]);
-		if (exponent.isPositive()) {
-			base = base.square().remainder(modulus);
-		}
-	}
-
-	return result;
-};
-
-/*
-	Function: log
-	Get the natural logarithm of a <BigInteger> as a native JavaScript number.
-
-	This is equivalent to
-
-	> Math.log(this.toJSValue())
-
-	but handles values outside of the native number range.
-
-	Returns:
-
-		log( *this* )
-
-	See Also:
-
-		<toJSValue>
-*/
-BigInteger.prototype.log = function() {
-	switch (this._s) {
-	case 0:	 return -Infinity;
-	case -1: return NaN;
-	default: // Fall through.
-	}
-
-	var l = this._d.length;
-
-	if (l*BigInteger_base_log10 < 30) {
-		return Math.log(this.valueOf());
-	}
-
-	var N = Math.ceil(30/BigInteger_base_log10);
-	var firstNdigits = this._d.slice(l - N);
-	return Math.log((new BigInteger(firstNdigits, 1, CONSTRUCT)).valueOf()) + (l - N) * Math.log(BigInteger_base);
-};
-
-/*
-	Function: valueOf
-	Convert a <BigInteger> to a native JavaScript integer.
-
-	This is called automatically by JavaScipt to convert a <BigInteger> to a
-	native value.
-
-	Returns:
-
-		> parseInt(this.toString(), 10)
-
-	See Also:
-
-		<toString>, <toJSValue>
-*/
-BigInteger.prototype.valueOf = function() {
-	return parseInt(this.toString(), 10);
-};
-
-/*
-	Function: toJSValue
-	Convert a <BigInteger> to a native JavaScript integer.
-
-	This is the same as valueOf, but more explicitly named.
-
-	Returns:
-
-		> parseInt(this.toString(), 10)
-
-	See Also:
-
-		<toString>, <valueOf>
-*/
-BigInteger.prototype.toJSValue = function() {
-	return parseInt(this.toString(), 10);
-};
-
-/*
-	Function: lowVal
-	Author: Lucas Jones
-*/
-BigInteger.prototype.lowVal = function () {
-	return this._d[0] || 0;
-};
-
-var MAX_EXP = BigInteger(0x7FFFFFFF);
-// Constant: MAX_EXP
-// The largest exponent allowed in <pow> and <exp10> (0x7FFFFFFF or 2147483647).
-BigInteger.MAX_EXP = MAX_EXP;
-
-(function() {
-	function makeUnary(fn) {
-		return function(a) {
-			return fn.call(BigInteger(a));
-		};
-	}
-
-	function makeBinary(fn) {
-		return function(a, b) {
-			return fn.call(BigInteger(a), BigInteger(b));
-		};
-	}
-
-	function makeTrinary(fn) {
-		return function(a, b, c) {
-			return fn.call(BigInteger(a), BigInteger(b), BigInteger(c));
-		};
-	}
-
-	(function() {
-		var i, fn;
-		var unary = "toJSValue,isEven,isOdd,sign,isZero,isNegative,abs,isUnit,square,negate,isPositive,toString,next,prev,log".split(",");
-		var binary = "compare,remainder,divRem,subtract,add,quotient,divide,multiply,pow,compareAbs".split(",");
-		var trinary = ["modPow"];
-
-		for (i = 0; i < unary.length; i++) {
-			fn = unary[i];
-			BigInteger[fn] = makeUnary(BigInteger.prototype[fn]);
-		}
-
-		for (i = 0; i < binary.length; i++) {
-			fn = binary[i];
-			BigInteger[fn] = makeBinary(BigInteger.prototype[fn]);
-		}
-
-		for (i = 0; i < trinary.length; i++) {
-			fn = trinary[i];
-			BigInteger[fn] = makeTrinary(BigInteger.prototype[fn]);
-		}
-
-		BigInteger.exp10 = function(x, n) {
-			return BigInteger(x).exp10(n);
-		};
-	})();
-})();
-
-exports.BigInteger = BigInteger;
-})(typeof exports !== 'undefined' ? exports : this);
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_daemon_MoneroDaemon.js.html b/docs/src_main_js_daemon_MoneroDaemon.js.html deleted file mode 100644 index 14b0f45f8..000000000 --- a/docs/src_main_js_daemon_MoneroDaemon.js.html +++ /dev/null @@ -1,761 +0,0 @@ - - - - - JSDoc: Source: src/main/js/daemon/MoneroDaemon.js - - - - - - - - - - -
- -

Source: src/main/js/daemon/MoneroDaemon.js

- - - - - - -
-
-
const MoneroError = require("../common/MoneroError");
-
-/**
- * Copyright (c) woodser
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-/**
- * Monero daemon interface and default implementations.
- * 
- * @interface
- */
-class MoneroDaemon {
-    
-  /**
-   * Register a listener to receive daemon notifications.
-   * 
-   * @param {MoneroDaemonListener} listener - listener to receive daemon notifications
-   */
-  async addListener(listener) {
-    throw new MoneroError("Subclass must implement");
-  }
-  
-  /**
-   * Unregister a listener to receive daemon notifications.
-   * 
-   * @param {MoneroDaemonListener} listener - listener to unregister
-   */
-  async removeListener(listener) {
-    throw new MoneroError("Subclass must implement");
-  }
-  
-  /**
-   * Get the listeners registered with the daemon.
-   * 
-   * @return {MoneroDaemonListener[]} the registered listeners
-   */
-  getListeners() {
-    throw new MoneroError("Subclass must implement");
-  }
-  
-  /**
-   * Indicates if the client is connected to the daemon via RPC.
-   * 
-   * @return {boolean} true if the client is connected to the daemon, false otherwise
-   */
-  async isConnected() {
-    throw new MoneroError("Subclass must implement");
-  }
-  
-  /**
-   * Gets the version of the daemon.
-   * 
-   * @return {MoneroVersion} the version of the daemon
-   */
-  async getVersion() {
-    throw new MoneroError("Subclass must implement");
-  }
-  
-  /**
-   * Indicates if the daemon is trusted xor untrusted.
-   * 
-   * @return {boolean} true if the daemon is trusted, false otherwise
-   */
-  async isTrusted() {
-    throw new MoneroError("Subclass must implement");
-  }
-  
-  /**
-   * Get the number of blocks in the longest chain known to the node.
-   * 
-   * @return {int} the number of blocks
-   */
-  async getHeight() {
-    throw new MoneroError("Subclass must implement");
-  }
-  
-  /**
-   * Get a block's hash by its height.
-   * 
-   * @param {int} height - height of the block hash to get
-   * @return {string} the block's hash at the given height
-   */
-  async getBlockHash(height) {
-    throw new MoneroError("Subclass must implement");
-  }
-  
-  /**
-   * Get a block template for mining a new block.
-   * 
-   * @param {string} walletAddress - address of the wallet to receive miner transactions if block is successfully mined
-   * @param {int} reserveSize - reserve size (optional)
-   * @return {MoneroBlockTemplate} is a block template for mining a new block
-   */
-  async getBlockTemplate(walletAddress, reserveSize) {
-    throw new MoneroError("Subclass must implement");
-  }
-  
-  /**
-   * Get the last block's header.
-   * 
-   * @return {MoneroBlockHeader} last block's header
-   */
-  async getLastBlockHeader() {
-    throw new MoneroError("Subclass must implement");
-  }
-  
-  /**
-   * Get a block header by its hash.
-   * 
-   * @param {string} blockHash - hash of the block to get the header of
-   * @return {MoneroBlockHeader} block's header
-   */
-  async getBlockHeaderByHash(blockHash) {
-    throw new MoneroError("Subclass must implement");
-  }
-  
-  /**
-   * Get a block header by its height.
-   * 
-   * @param {int} height - height of the block to get the header of
-   * @return {MoneroBlockHeader} block's header
-   */
-  async getBlockHeaderByHeight(height) {
-    throw new MoneroError("Subclass must implement");
-  }
-  
-  /**
-   * Get block headers for the given range.
-   * 
-   * @param {int} startHeight - start height lower bound inclusive (optional)
-   * @param {int} endHeight - end height upper bound inclusive (optional)
-   * @return {MoneroBlockHeader[]} for the given range
-   */
-  async getBlockHeadersByRange(startHeight, endHeight) {
-    throw new MoneroError("Subclass must implement");
-  }
-  
-  /**
-   * Get a block by hash.
-   * 
-   * @param {string} blockHash - hash of the block to get
-   * @return {MoneroBlock} with the given hash
-   */
-  async getBlockByHash(blockHash) {
-    throw new MoneroError("Subclass must implement");
-  }
-  
-  /**
-   * Get blocks by hash.
-   * 
-   * @param {string[]} blockHashes - array of hashes; first 10 blocks hashes goes sequential,
-   *        next goes in pow(2,n) offset, like 2, 4, 8, 16, 32, 64 and so on,
-   *        and the last one is always genesis block
-   * @param {int} startHeight - start height to get blocks by hash
-   * @param {boolean} prune - specifies if returned blocks should be pruned (defaults to false)  // TODO: test default
-   * @return {MoneroBlock[]} retrieved blocks
-   */
-  async getBlocksByHash(blockHashes, startHeight, prune) {
-    throw new MoneroError("Subclass must implement");
-  }
-  
-  /**
-   * Get a block by height.
-   * 
-   * @param {int} height - height of the block to get
-   * @return {MoneroBlock} with the given height
-   */
-  async getBlockByHeight(height) {
-    throw new MoneroError("Subclass must implement");
-  }
-  
-  /**
-   * Get blocks at the given heights.
-   * 
-   * @param {int[]} heights - heights of the blocks to get
-   * @return {MoneroBlock[]} are blocks at the given heights
-   */
-  async getBlocksByHeight(heights) {
-    throw new MoneroError("Subclass must implement");
-  }
-  
-  /**
-   * Get blocks in the given height range.
-   * 
-   * @param {int} startHeight - start height lower bound inclusive (optional)
-   * @param {int} endHeight - end height upper bound inclusive (optional)
-   * @return {MoneroBlock[]} are blocks in the given height range
-   */
-  async getBlocksByRange(startHeight, endHeight) {
-    throw new MoneroError("Subclass must implement");
-  }
-  
-  /**
-   * Get blocks in the given height range as chunked requests so that each request is
-   * not too big.
-   * 
-   * @param {int} startHeight - start height lower bound inclusive (optional)
-   * @param {int} endHeight - end height upper bound inclusive (optional)
-   * @param {int} maxChunkSize - maximum chunk size in any one request (default 3,000,000 bytes)
-   * @return {MoneroBlock[]} blocks in the given height range
-   */
-  async getBlocksByRangeChunked(startHeight, endHeight, maxChunkSize) {
-    throw new MoneroError("Subclass must implement");
-  }
-  
-  /**
-   * Get block hashes as a binary request to the daemon.
-   * 
-   * @param {string[]} blockHashes - specify block hashes to fetch; first 10 blocks hash goes
-   *        sequential, next goes in pow(2,n) offset, like 2, 4, 8, 16, 32, 64
-   *        and so on, and the last one is always genesis block
-   * @param {int} startHeight - starting height of block hashes to return
-   * @return {string[]} requested block hashes     
-   */
-  async getBlockHashes(blockHashes, startHeight) {
-    throw new MoneroError("Subclass must implement");
-  }
-  
-  /**
-   * Get a transaction by hash.
-   * 
-   * @param {string} txHash - hash of the transaction to get
-   * @param {boolean} prune - specifies if the returned tx should be pruned (defaults to false)
-   * @return {MoneroTx} transaction with the given hash or undefined if not found
-   */
-  async getTx(txHash, prune = false) {
-    return (await this.getTxs([txHash], prune))[0];
-  }
-  
-  /**
-   * Get transactions by hashes.
-   * 
-   * @param {string[]} txHashes - hashes of transactions to get
-   * @param {boolean} prune - specifies if the returned txs should be pruned (defaults to false)
-   * @return {MoneroTx[]} found transactions with the given hashes
-   */
-  async getTxs(txHashes, prune = false) {
-    throw new MoneroError("Subclass must implement");
-  }
-  
-  /**
-   * Get a transaction hex by hash.
-   * 
-   * @param {string} txHash - hash of the transaction to get hex from
-   * @param {boolean} prune - specifies if the returned tx hex should be pruned (defaults to false)
-   * @return {string} tx hex with the given hash
-   */
-  async getTxHex(txHash, prune = false) {
-    return (await this.getTxHexes([txHash], prune))[0];
-  }
-  
-  /**
-   * Get transaction hexes by hashes.
-   * 
-   * @param {string[]} txHashes - hashes of transactions to get hexes from
-   * @param {boolean} prune - specifies if the returned tx hexes should be pruned (defaults to false)
-   * @return {string[]} tx hexes
-   */
-  async getTxHexes(txHashes, prune = false) {
-    throw new MoneroError("Subclass must implement");
-  }
-  
-  /**
-   * Gets the total emissions and fees from the genesis block to the current height.
-   * 
-   * @param {int} height - height to start computing the miner sum
-   * @param {int} numBlocks - number of blocks to include in the sum
-   * @return {MoneroMinerTxSum} encapsulates the total emissions and fees since the genesis block
-   */
-  async getMinerTxSum(height, numBlocks) {
-    throw new MoneroError("Subclass must implement");
-  }
-  
-  /**
-   * Get mining fee estimates per kB.
-   * 
-   * @param {number} graceBlocks TODO
-   * @return {MoneroFeeEstimate} mining fee estimates per kB
-   */
-  async getFeeEstimate(graceBlocks) {
-    throw new MoneroError("Subclass must implement");
-  }
-  
-  /**
-   * Submits a transaction to the daemon's pool.
-   * 
-   * @param {string} txHex - raw transaction hex to submit
-   * @param {boolean} doNotRelay specifies if the tx should be relayed (optional)
-   * @return {MoneroSubmitTxResult} contains submission results
-   */
-  async submitTxHex(txHex, doNotRelay) {
-    throw new MoneroError("Subclass must implement");
-  }
-  
-  /**
-   * Relays a transaction by hash.
-   * 
-   * @param {string} txHash - hash of the transaction to relay
-   */
-  async relayTxByHash(txHash) {
-    const assert = require("assert");
-    assert.equal(typeof txHash, "string", "Must provide a transaction hash");
-    await this.relayTxsByHash([txHash]);
-  }
-  
-  /**
-   * Relays transactions by hash.
-   * 
-   * @param {string[]} txHashes - hashes of the transactinos to relay
-   */
-  async relayTxsByHash(txHashes) {
-    throw new MoneroError("Subclass must implement");
-  }
-  
-  /**
-   * Get valid transactions seen by the node but not yet mined into a block, as well
-   * as spent key image information for the tx pool.
-   * 
-   * @return {MoneroTx[]} are transactions in the transaction pool
-   */
-  async getTxPool() {
-    throw new MoneroError("Subclass must implement");
-  }
-  
-  /**
-   * Get hashes of transactions in the transaction pool.
-   * 
-   * @return {string[]} are hashes of transactions in the transaction pool
-   */
-  async getTxPoolHashes() {
-    throw new MoneroError("Subclass must implement");
-  }
-  
-  /**
-   * Get all transaction pool backlog.
-   * 
-   * @return {MoneroTxBacklogEntry[]} backlog entries 
-   */
-  async getTxPoolBacklog() {
-    throw new MoneroError("Subclass must implement");
-  }
-  
-  /**
-   * Get transaction pool statistics.
-   * 
-   * @return {MoneroTxPoolStats} contains statistics about the transaction pool
-   */
-  async getTxPoolStats() {
-    throw new MoneroError("Subclass must implement");
-  }
-  
-  /**
-   * Flush transactions from the tx pool.
-   * 
-   * @param {(string|string[])} hashes - specific transactions to flush (defaults to all)
-   */
-  async flushTxPool(hashes) {
-    throw new MoneroError("Subclass must implement");
-  }
-  
-  /**
-   * Get the spent status of the given key image.
-   * 
-   * @param {string} keyImage - key image hex to get the status of
-   * @return {MoneroKeyImageSpentStatus} status of the key image
-   */
-  async getKeyImageSpentStatus(keyImage) {
-    return (await this.getKeyImageSpentStatuses([keyImage]))[0];
-  }
-  
-  /**
-   * Get the spent status of each given key image.
-   * 
-   * @param {string[]} keyImages are hex key images to get the statuses of
-   * @return {MoneroKeyImageSpentStatus[]} status for each key image
-   */
-  async getKeyImageSpentStatuses(keyImages) {
-    throw new MoneroError("Subclass must implement");
-  }
-  
-  /**
-   * Get outputs identified by a list of output amounts and indices as a binary
-   * request.
-   * 
-   * @param {MoneroOutput[]} outputs - identify each output by amount and index
-   * @return {MoneroOutput[]} identified outputs
-   */
-  async getOutputs(outputs) {
-    throw new MoneroError("Subclass must implement");
-  }
-  
-  /**
-   * Get a histogram of output amounts. For all amounts (possibly filtered by
-   * parameters), gives the number of outputs on the chain for that amount.
-   * RingCT outputs counts as 0 amount.
-   * 
-   * @param {BigInteger[]} amounts - amounts of outputs to make the histogram with
-   * @param {int} minCount - TODO
-   * @param {int} maxCount - TODO
-   * @param {boolean} isUnlocked - makes a histogram with outputs with the specified lock state
-   * @param {int} recentCutoff - TODO
-   * @return {MoneroOutputHistogramEntry[]} are entries meeting the parameters
-   */
-  async getOutputHistogram(amounts, minCount, maxCount, isUnlocked, recentCutoff) {
-    throw new MoneroError("Subclass must implement");
-  }
-  
-  /**
-   * Creates an output distribution.
-   * 
-   * @param {BigInteger[]} amounts - amounts of outputs to make the distribution with
-   * @param {boolean} cumulative - specifies if the results should be cumulative (defaults to TODO)
-   * @param {int} startHeight - start height lower bound inclusive (optional)
-   * @param {int} endHeight - end height upper bound inclusive (optional)
-   * @return {MoneroOutputDistributionEntry[]} are entries meeting the parameters
-   */
-  async getOutputDistribution(amounts, cumulative, startHeight, endHeight) {
-    throw new MoneroError("Subclass must implement");
-  }
-  
-  /**
-   * Get general information about the state of the node and the network.
-   * 
-   * @return {MoneroDaemonInfo} is general information about the node and network
-   */
-  async getInfo() {
-    throw new MoneroError("Subclass must implement");
-  }
-  
-  /**
-   * Get synchronization information.
-   * 
-   * @return {MoneroDaemonSyncInfo} contains sync information
-   */
-  async getSyncInfo() {
-    throw new MoneroError("Subclass must implement");
-  }
-  
-  /**
-   * Look up information regarding hard fork voting and readiness.
-   * 
-   * @return {MoneroHardForkInfo} contains hard fork information
-   */
-  async getHardForkInfo() {
-    throw new MoneroError("Subclass must implement");
-  }
-  
-  /**
-   * Get alternative chains seen by the node.
-   * 
-   * @return {MoneroAltChain[]} alternative chains
-   */
-  async getAltChains() {
-    throw new MoneroError("Subclass must implement");
-  }
-  
-  /**
-   * Get known block hashes which are not on the main chain.
-   * 
-   * @return {string[]} known block hashes which are not on the main chain
-   */
-  async getAltBlockHashes() {
-    throw new MoneroError("Subclass must implement");
-  }
-  
-  /**
-   * Get the download bandwidth limit.
-   * 
-   * @return {int} download bandwidth limit
-   */
-  async getDownloadLimit() {
-    throw new MoneroError("Subclass must implement");
-  }
-  
-  /**
-   * Set the download bandwidth limit.
-   * 
-   * @param {int} limit - download limit to set (-1 to reset to default)
-   * @return {int} new download limit after setting
-   */
-  async setDownloadLimit(limit) {
-    throw new MoneroError("Subclass must implement");
-  }
-  
-  /**
-   * Reset the download bandwidth limit.
-   * 
-   * @return {int} download bandwidth limit after resetting
-   */
-  async resetDownloadLimit() {
-    throw new MoneroError("Subclass must implement");
-  }
-  
-  /**
-   * Get the upload bandwidth limit.
-   * 
-   * @return {int} upload bandwidth limit
-   */
-  async getUploadLimit() {
-    throw new MoneroError("Subclass must implement");
-  }
-  
-  /**
-   * Set the upload bandwidth limit.
-   * 
-   * @param limit - upload limit to set (-1 to reset to default)
-   * @return {int} new upload limit after setting
-   */
-  async setUploadLimit(limit) {
-    throw new MoneroError("Subclass must implement");
-  }
-  
-  /**
-   * Reset the upload bandwidth limit.
-   * 
-   * @return {int} upload bandwidth limit after resetting
-   */
-  async resetUploadLimit() {
-    throw new MoneroError("Subclass must implement");
-  }
-  
-  /**
-   * Get peers with active incoming or outgoing connections to the node.
-   * 
-   * @return {MoneroPeer[]} the daemon's peers
-   */
-  async getPeers() {
-    throw new MoneroError("Subclass must implement");
-  }
-  
-  /**
-   * Get known peers including their last known online status.
-   * 
-   * @return {MoneroPeer[]} the daemon's known peers
-   */
-  async getKnownPeers() {
-    throw new MoneroError("Subclass must implement");
-  }
-  
-  /**
-   * Limit number of outgoing peers.
-   * 
-   * @param {int} limit - maximum number of outgoing peers
-   */
-  async setOutgoingPeerLimit(limit) {
-    throw new MoneroError("Subclass must implement");
-  }
-  
-  /**
-   * Limit number of incoming peers.
-   * 
-   * @param {int} limit - maximum number of incoming peers
-   */
-  async setIncomingPeerLimit(limit) {
-    throw new MoneroError("Subclass must implement");
-  }
-  
-  /**
-   * Get peer bans.
-   * 
-   * @return {MoneroBan[]} entries about banned peers
-   */
-  async getPeerBans() {
-    throw new MoneroError("Subclass must implement");
-  }
-
-  /**
-   * Ban a peer node.
-   * 
-   * @param {MoneroBan} ban - contains information about a node to ban
-   */
-  async setPeerBan(ban) {
-    return await this.setPeerBans([ban]);
-  }
-  
-  /**
-   * Ban peers nodes.
-   * 
-   * @param {MoneroBan[]} bans - specify which peers to ban
-   */
-  async setPeerBans(bans) {
-    throw new MoneroError("Subclass must implement");
-  }
-  
-  /**
-   * Start mining.
-   * 
-   * @param {string} address - address given miner rewards if the daemon mines a block
-   * @param {integer} numThreads - number of mining threads to run
-   * @param {boolean} isBackground - specifies if the miner should run in the background or not
-   * @param {boolean} ignoreBattery - specifies if the battery state (e.g. on laptop) should be ignored or not
-   */
-  async startMining(address, numThreads, isBackground, ignoreBattery) {
-    throw new MoneroError("Subclass must implement");
-  }
-  
-  /**
-   * Stop mining.
-   */
-  async stopMining() {
-    throw new MoneroError("Subclass must implement");
-  }
-  
-  /**
-   * Get the daemon's mining status.
-   * 
-   * @return {MoneroMiningStatus} daemon's mining status
-   */
-  async getMiningStatus() {
-    throw new MoneroError("Subclass must implement");
-  }
-  
-  /**
-   * Submit a mined block to the network.
-   * 
-   * @param {string} blockBlob - mined block to submit
-   */
-  async submitBlock(blockBlob) {
-    await this.submitBlocks([blockBlob]);
-  }
-
-  /**
-   * Prune the blockchain.
-   * 
-   * @param {boolean} check specifies to check the pruning (default false)
-   * @return {MoneroPruneResult} the prune result
-   */
-  async pruneBlockchain(check) {
-    throw new MoneroError("Subclass must implement");
-  }
-  
-  /**
-   * Submit mined blocks to the network.
-   * 
-   * @param {string[]} blockBlobs - mined blocks to submit
-   */
-  async submitBlocks(blockBlobs) {
-    throw new MoneroError("Subclass must implement");
-  }
-  
-  /**
-   * Check for update.
-   * 
-   * @return {MoneroDaemonUpdateCheckResult} the result
-   */
-  async checkForUpdate() {
-    throw new MoneroError("Subclass must implement");
-  }
-  
-  /**
-   * Download an update.
-   * 
-   * @param {string} path - path to download the update (optional)
-   * @return {MoneroDaemonUpdateDownloadResult} the result
-   */
-  async downloadUpdate(path) {
-    throw new MoneroError("Subclass must implement");
-  }
-  
-  /**
-   * Safely disconnect and shut down the daemon.
-   */
-  async stop() {
-    throw new MoneroError("Subclass must implement");
-  }
-  
-  /**
-   * Get the header of the next block added to the chain.
-   * 
-   * @return {MoneroBlockHeader} header of the next block added to the chain
-   */
-  async waitForNextBlockHeader() {
-    throw new MoneroError("Subclass must implement");
-  }
-  
-  // ----------------------------- STATIC UTILITIES ---------------------------
-  
-  /**
-   * Parses a network string to an enumerated type.
-   * 
-   * @param {string} network - network string to parse
-   * @return {MoneroNetworkType} enumerated network type
-   */
-  static parseNetworkType(network) {
-    const MoneroNetworkType = require("./model/MoneroNetworkType");
-    if (network === "mainnet") return MoneroNetworkType.MAINNET;
-    if (network === "testnet") return MoneroNetworkType.TESTNET;
-    if (network === "stagenet") return MoneroNetworkType.STAGENET;
-    throw new MoneroError("Invalid network type to parse: " + network);
-  }
-}
-
-module.exports = MoneroDaemon;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_daemon_MoneroDaemonRpc.js.html b/docs/src_main_js_daemon_MoneroDaemonRpc.js.html deleted file mode 100644 index 51c53620c..000000000 --- a/docs/src_main_js_daemon_MoneroDaemonRpc.js.html +++ /dev/null @@ -1,1955 +0,0 @@ - - - - - JSDoc: Source: src/main/js/daemon/MoneroDaemonRpc.js - - - - - - - - - - -
- -

Source: src/main/js/daemon/MoneroDaemonRpc.js

- - - - - - -
-
-
const assert = require("assert");
-const BigInteger = require("../common/biginteger").BigInteger;
-const GenUtils = require("../common/GenUtils");
-const LibraryUtils = require("../common/LibraryUtils");
-const TaskLooper = require("../common/TaskLooper");
-const MoneroAltChain = require("./model/MoneroAltChain");
-const MoneroBan = require("./model/MoneroBan");
-const MoneroBlock = require("./model/MoneroBlock");
-const MoneroBlockHeader = require("./model/MoneroBlockHeader");
-const MoneroBlockTemplate = require("./model/MoneroBlockTemplate");
-const MoneroDaemon = require("./MoneroDaemon");
-const MoneroDaemonInfo = require("./model/MoneroDaemonInfo");
-const MoneroDaemonListener = require("./model/MoneroDaemonListener");
-const MoneroDaemonSyncInfo = require("./model/MoneroDaemonSyncInfo");
-const MoneroError = require("../common/MoneroError");
-const MoneroFeeEstimate = require("./model/MoneroFeeEstimate");
-const MoneroHardForkInfo = require("./model/MoneroHardForkInfo");
-const MoneroKeyImage = require("./model/MoneroKeyImage");
-const MoneroMinerTxSum = require("./model/MoneroMinerTxSum");
-const MoneroMiningStatus = require("./model/MoneroMiningStatus");
-const MoneroNetworkType = require("./model/MoneroNetworkType");
-const MoneroOutput = require("./model/MoneroOutput");
-const MoneroOutputHistogramEntry = require("./model/MoneroOutputHistogramEntry");
-const MoneroPeer = require("./model/MoneroPeer");
-const MoneroPruneResult = require("./model/MoneroPruneResult");
-const MoneroRpcConnection = require("../common/MoneroRpcConnection");
-const MoneroSubmitTxResult = require("./model/MoneroSubmitTxResult");
-const MoneroTx = require("./model/MoneroTx");
-const MoneroTxPoolStats = require("./model/MoneroTxPoolStats");
-const MoneroUtils = require("../common/MoneroUtils");
-const MoneroVersion = require("./model/MoneroVersion");
-
-/**
- * Copyright (c) woodser
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-/**
- * Implements a MoneroDaemon as a client of monerod.
- * 
- * @implements {MoneroDaemon}
- * @hideconstructor
- */
-class MoneroDaemonRpc extends MoneroDaemon {
-  
-  /**
-   * <p>Construct a daemon RPC client (for internal use).<p>
-   * 
-   * @param {string|object|MoneroRpcConnection} uriOrConfig - uri of monerod or JS config object or MoneroRpcConnection
-   * @param {string} uriOrConfig.uri - uri of monerod
-   * @param {string} uriOrConfig.username - username to authenticate with monerod (optional)
-   * @param {string} uriOrConfig.password - password to authenticate with monerod (optional)
-   * @param {boolean} uriOrConfig.rejectUnauthorized - rejects self-signed certificates if true (default true)
-   * @param {number} uriOrConfig.pollInterval - poll interval to query for updates in ms (default 5000)
-   * @param {string} username - username to authenticate with monerod (optional)
-   * @param {string} password - password to authenticate with monerod (optional)
-   * @param {boolean} rejectUnauthorized - rejects self-signed certificates if true (default true)
-   * @param {number} pollInterval - poll interval to query for updates in ms (default 5000)
-   * @param {boolean} proxyToWorker - runs the daemon client in a worker if true (default true)
-   */
-  constructor(uriOrConfig, username, password, rejectUnauthorized, pollInterval, proxyToWorker) {
-    super();
-    if (GenUtils.isArray(uriOrConfig)) throw new Error("Use monerojs.connectToDaemonRpc(...) to use terminal parameters");
-    this.config = MoneroDaemonRpc._normalizeConfig(uriOrConfig, username, password, rejectUnauthorized, pollInterval, proxyToWorker);
-    if (this.config.proxyToWorker) throw new Error("Use monerojs.connectToDaemonRpc(...) to proxy to worker");
-    let rpcConfig = Object.assign({}, this.config);
-    delete rpcConfig.proxyToWorker;
-    delete rpcConfig.pollInterval;
-    this.rpc = new MoneroRpcConnection(rpcConfig);
-    this.listeners = [];      // block listeners
-    this.cachedHeaders = {};  // cached headers for fetching blocks in bound chunks
-  }
-  
-  /**
-   * <p>Create a client connected to monerod (for internal use).</p>
-   * 
-   * @param {string|string[]|object|MoneroRpcConnection} uriOrConfig - uri of monerod or terminal parameters or JS config object or MoneroRpcConnection
-   * @param {string} uriOrConfig.uri - uri of monerod
-   * @param {string} uriOrConfig.username - username to authenticate with monerod (optional)
-   * @param {string} uriOrConfig.password - password to authenticate with monerod (optional)
-   * @param {boolean} uriOrConfig.rejectUnauthorized - rejects self-signed certificates if true (default true)
-   * @param {number} uriOrConfig.pollInterval - poll interval to query for updates in ms (default 5000)
-   * @param {boolean} uriOrConfig.proxyToWorker - run the daemon client in a worker if true (default true)
-   * @param {string} username - username to authenticate with monerod (optional)
-   * @param {string} password - password to authenticate with monerod (optional)
-   * @param {boolean} rejectUnauthorized - rejects self-signed certificates if true (default true)
-   * @param {number} pollInterval - poll interval to query for updates in ms (default 5000)
-   * @param {boolean} proxyToWorker - runs the daemon client in a worker if true (default true)
-   * @return {MoneroDaemonRpc} the daemon RPC client
-   */
-  static async _connectToDaemonRpc(uriOrConfig, username, password, rejectUnauthorized, pollInterval, proxyToWorker) {
-    if (GenUtils.isArray(uriOrConfig)) return MoneroDaemonRpc._startMonerodProcess(uriOrConfig, rejectUnauthorized, pollInterval, proxyToWorker); // handle array as terminal command
-    let config = MoneroDaemonRpc._normalizeConfig(uriOrConfig, username, password, rejectUnauthorized, pollInterval, proxyToWorker);
-    if (config.proxyToWorker) return MoneroDaemonRpcProxy.connect(config);
-    else return new MoneroDaemonRpc(config);
-  }
-  
-  static async _startMonerodProcess(cmd, rejectUnauthorized, pollInterval, proxyToWorker) {
-    assert(GenUtils.isArray(cmd), "Must provide string array with command line parameters");
-    
-    // start process
-    this.process = require('child_process').spawn(cmd[0], cmd.slice(1), {});
-    this.process.stdout.setEncoding('utf8');
-    this.process.stderr.setEncoding('utf8');
-    
-    // return promise which resolves after starting monerod
-    let uri;
-    let that = this;
-    let output = "";
-    return new Promise(function(resolve, reject) {
-      
-      // handle stdout
-      that.process.stdout.on('data', async function(data) {
-        let line = data.toString();
-        LibraryUtils.log(2, line);
-        output += line + '\n'; // capture output in case of error
-        
-        // extract uri from e.g. "I Binding on 127.0.0.1 (IPv4):38085"
-        let uriLineContains = "Binding on ";
-        let uriLineContainsIdx = line.indexOf(uriLineContains);
-        if (uriLineContainsIdx >= 0) {
-          let host = line.substring(uriLineContainsIdx + uriLineContains.length, line.lastIndexOf(' '));
-          let unformattedLine = line.replace(/\u001b\[.*?m/g, '').trim(); // remove color formatting
-          let port = unformattedLine.substring(unformattedLine.lastIndexOf(':') + 1);
-          let sslIdx = cmd.indexOf("--rpc-ssl");
-          let sslEnabled = sslIdx >= 0 ? "enabled" == cmd[sslIdx + 1].toLowerCase() : false;
-          uri = (sslEnabled ? "https" : "http") + "://" + host + ":" + port;
-        }
-        
-        // read success message
-        if (line.indexOf("core RPC server started ok") >= 0) {
-          
-          // get username and password from params
-          let userPassIdx = cmd.indexOf("--rpc-login");
-          let userPass = userPassIdx >= 0 ? cmd[userPassIdx + 1] : undefined;
-          let username = userPass === undefined ? undefined : userPass.substring(0, userPass.indexOf(':'));
-          let password = userPass === undefined ? undefined : userPass.substring(userPass.indexOf(':') + 1);
-          
-          // create client connected to internal process
-          let daemon = await that._connectToDaemonRpc(uri, username, password, rejectUnauthorized, pollInterval, proxyToWorker);
-          daemon.process = that.process;
-          
-          // resolve promise with client connected to internal process 
-          this.isResolved = true;
-          resolve(daemon);
-        }
-      });
-      
-      // handle stderr
-      that.process.stderr.on('data', function(data) {
-        if (LibraryUtils.getLogLevel() >= 2) console.error(data);
-      });
-      
-      // handle exit
-      that.process.on("exit", function(code) {
-        if (!this.isResolved) reject(new Error("monerod process terminated with exit code " + code + (output ? ":\n\n" + output : "")));
-      });
-      
-      // handle error
-      that.process.on("error", function(err) {
-        if (err.message.indexOf("ENOENT") >= 0) reject(new Error("monerod does not exist at path '" + cmd[0] + "'"));
-        if (!this.isResolved) reject(err);
-      });
-      
-      // handle uncaught exception
-      that.process.on("uncaughtException", function(err, origin) {
-        console.error("Uncaught exception in monerod process: " + err.message);
-        console.error(origin);
-        reject(err);
-      });
-    });
-  }
-  
-  /**
-   * Get the internal process running monerod.
-   * 
-   * @return the process running monerod, undefined if not created from new process
-   */
-  getProcess() {
-    return this.process;
-  }
-  
-  /**
-   * Stop the internal process running monerod, if applicable.
-   * 
-   * @param {boolean} force specifies if the process should be destroyed forcibly
-   * @return {Promise<number|undefined>} the exit code from stopping the process
-   */
-  async stopProcess(force) {
-    if (this.process === undefined) throw new MoneroError("MoneroDaemonRpc instance not created from new process");
-    let listenersCopy = GenUtils.copyArray(this.getListeners());
-    for (let listener of listenersCopy) await this.removeListener(listener);
-    return GenUtils.killProcess(this.process, force ? "sigkill" : undefined);
-  }
-  
-  async addListener(listener) {
-    assert(listener instanceof MoneroDaemonListener, "Listener must be instance of MoneroDaemonListener");
-    this.listeners.push(listener);
-    this._refreshListening();
-  }
-  
-  async removeListener(listener) {
-    assert(listener instanceof MoneroDaemonListener, "Listener must be instance of MoneroDaemonListener");
-    let idx = this.listeners.indexOf(listener);
-    if (idx > -1) this.listeners.splice(idx, 1);
-    else throw new MoneroError("Listener is not registered with daemon");
-    this._refreshListening();
-  }
-  
-  getListeners() {
-    return this.listeners;
-  }
-  
-  /**
-   * Get the daemon's RPC connection.
-   * 
-   * @return {MoneroRpcConnection} the daemon's rpc connection
-   */
-  async getRpcConnection() {
-    return this.rpc;
-  }
-  
-  async isConnected() {
-    try {
-      await this.getVersion();
-      return true;
-    } catch (e) {
-      return false;
-    }
-  }
-  
-  async getVersion() {
-    let resp = await this.rpc.sendJsonRequest("get_version");
-    MoneroDaemonRpc._checkResponseStatus(resp.result);
-    return new MoneroVersion(resp.result.version, resp.result.release);
-  }
-  
-  async isTrusted() {
-    let resp = await this.rpc.sendPathRequest("get_height");
-    MoneroDaemonRpc._checkResponseStatus(resp);
-    return !resp.untrusted;
-  }
-  
-  async getHeight() {
-    let resp = await this.rpc.sendJsonRequest("get_block_count");
-    MoneroDaemonRpc._checkResponseStatus(resp.result);
-    return resp.result.count;
-  }
-  
-  async getBlockHash(height) {
-    return (await this.rpc.sendJsonRequest("on_get_block_hash", [height])).result;  // TODO monero-wallet-rpc: no status returned
-  }
-  
-  async getBlockTemplate(walletAddress, reserveSize) {
-    assert(walletAddress && typeof walletAddress === "string", "Must specify wallet address to be mined to");
-    let resp = await this.rpc.sendJsonRequest("get_block_template", {wallet_address: walletAddress, reserve_size: reserveSize});
-    MoneroDaemonRpc._checkResponseStatus(resp.result);
-    return MoneroDaemonRpc._convertRpcBlockTemplate(resp.result);
-  }
-  
-  async getLastBlockHeader() {
-    let resp = await this.rpc.sendJsonRequest("get_last_block_header");
-    MoneroDaemonRpc._checkResponseStatus(resp.result);
-    return MoneroDaemonRpc._convertRpcBlockHeader(resp.result.block_header);
-  }
-  
-  async getBlockHeaderByHash(blockHash) {
-    let resp = await this.rpc.sendJsonRequest("get_block_header_by_hash", {hash: blockHash});
-    MoneroDaemonRpc._checkResponseStatus(resp.result);
-    return MoneroDaemonRpc._convertRpcBlockHeader(resp.result.block_header);
-  }
-  
-  async getBlockHeaderByHeight(height) {
-    let resp = await this.rpc.sendJsonRequest("get_block_header_by_height", {height: height});
-    MoneroDaemonRpc._checkResponseStatus(resp.result);
-    return MoneroDaemonRpc._convertRpcBlockHeader(resp.result.block_header);
-  }
-  
-  async getBlockHeadersByRange(startHeight, endHeight) {
-    
-    // fetch block headers
-    let resp = await this.rpc.sendJsonRequest("get_block_headers_range", {
-      start_height: startHeight,
-      end_height: endHeight
-    });
-    MoneroDaemonRpc._checkResponseStatus(resp.result);
-    
-    // build headers
-    let headers = [];
-    for (let rpcHeader of resp.result.headers) {
-      headers.push(MoneroDaemonRpc._convertRpcBlockHeader(rpcHeader));
-    }
-    return headers;
-  }
-  
-  async getBlockByHash(blockHash) {
-    let resp = await this.rpc.sendJsonRequest("get_block", {hash: blockHash});
-    MoneroDaemonRpc._checkResponseStatus(resp.result);
-    return MoneroDaemonRpc._convertRpcBlock(resp.result);
-  }
-  
-  async getBlockByHeight(height) {
-    let resp = await this.rpc.sendJsonRequest("get_block", {height: height});
-    MoneroDaemonRpc._checkResponseStatus(resp.result);
-    return MoneroDaemonRpc._convertRpcBlock(resp.result);
-  }
-  
-  async getBlocksByHeight(heights) {
-    
-    // fetch blocks in binary
-    let respBin = await this.rpc.sendBinaryRequest("get_blocks_by_height.bin", {heights: heights});
-    
-    // convert binary blocks to json
-    let rpcBlocks = await MoneroUtils.binaryBlocksToJson(respBin);
-    MoneroDaemonRpc._checkResponseStatus(rpcBlocks);
-    
-    // build blocks with transactions
-    assert.equal(rpcBlocks.txs.length, rpcBlocks.blocks.length);    
-    let blocks = [];
-    for (let blockIdx = 0; blockIdx < rpcBlocks.blocks.length; blockIdx++) {
-      
-      // build block
-      let block = MoneroDaemonRpc._convertRpcBlock(rpcBlocks.blocks[blockIdx]);
-      block.setHeight(heights[blockIdx]);
-      blocks.push(block);
-      
-      // build transactions
-      let txs = [];
-      for (let txIdx = 0; txIdx < rpcBlocks.txs[blockIdx].length; txIdx++) {
-        let tx = new MoneroTx();
-        txs.push(tx);
-        tx.setHash(rpcBlocks.blocks[blockIdx].tx_hashes[txIdx]);
-        tx.setIsConfirmed(true);
-        tx.setInTxPool(false);
-        tx.setIsMinerTx(false);
-        tx.setRelay(true);
-        tx.setIsRelayed(true);
-        tx.setIsFailed(false);
-        tx.setIsDoubleSpend(false);
-        MoneroDaemonRpc._convertRpcTx(rpcBlocks.txs[blockIdx][txIdx], tx);
-      }
-      
-      // merge into one block
-      block.setTxs([]);
-      for (let tx of txs) {
-        if (tx.getBlock()) block.merge(tx.getBlock());
-        else block.getTxs().push(tx.setBlock(block));
-      }
-    }
-    
-    return blocks;
-  }
-  
-  async getBlocksByRange(startHeight, endHeight) {
-    if (startHeight === undefined) startHeight = 0;
-    if (endHeight === undefined) endHeight = await this.getHeight() - 1;
-    let heights = [];
-    for (let height = startHeight; height <= endHeight; height++) heights.push(height);
-    return await this.getBlocksByHeight(heights);
-  }
-  
-  async getBlocksByRangeChunked(startHeight, endHeight, maxChunkSize) {
-    if (startHeight === undefined) startHeight = 0;
-    if (endHeight === undefined) endHeight = await this.getHeight() - 1;
-    let lastHeight = startHeight - 1;
-    let blocks = [];
-    while (lastHeight < endHeight) {
-      for (let block of await this._getMaxBlocks(lastHeight + 1, endHeight, maxChunkSize)) {
-        blocks.push(block);
-      }
-      lastHeight = blocks[blocks.length - 1].getHeight();
-    }
-    return blocks;
-  }
-  
-  async getTxs(txHashes, prune) {
-        
-    // validate input
-    assert(Array.isArray(txHashes) && txHashes.length > 0, "Must provide an array of transaction hashes");
-    assert(prune === undefined || typeof prune === "boolean", "Prune must be a boolean or undefined");
-        
-    // fetch transactions
-    let resp = await this.rpc.sendPathRequest("get_transactions", {
-      txs_hashes: txHashes,
-      decode_as_json: true,
-      prune: prune
-    });
-    try {
-      MoneroDaemonRpc._checkResponseStatus(resp);
-    } catch (e) {
-      if (e.message.indexOf("Failed to parse hex representation of transaction hash") >= 0) throw new MoneroError("Invalid transaction hash");
-      throw e;
-    }
-        
-    // build transaction models
-    let txs = [];
-    if (resp.txs) {
-      for (let txIdx = 0; txIdx < resp.txs.length; txIdx++) {
-        let tx = new MoneroTx();
-        tx.setIsMinerTx(false);
-        txs.push(MoneroDaemonRpc._convertRpcTx(resp.txs[txIdx], tx));
-      }
-    }
-    
-    return txs;
-  }
-  
-  async getTxHexes(txHashes, prune) {
-    let hexes = [];
-    for (let tx of await this.getTxs(txHashes, prune)) hexes.push(prune ? tx.getPrunedHex() : tx.getFullHex());
-    return hexes;
-  }
-  
-  async getMinerTxSum(height, numBlocks) {
-    if (height === undefined) height = 0;
-    else assert(height >= 0, "Height must be an integer >= 0");
-    if (numBlocks === undefined) numBlocks = await this.getHeight();
-    else assert(numBlocks >= 0, "Count must be an integer >= 0");
-    let resp = await this.rpc.sendJsonRequest("get_coinbase_tx_sum", {height: height, count: numBlocks});
-    MoneroDaemonRpc._checkResponseStatus(resp.result);
-    let txSum = new MoneroMinerTxSum();
-    txSum.setEmissionSum(new BigInteger(resp.result.emission_amount));
-    txSum.setFeeSum(new BigInteger(resp.result.fee_amount));
-    return txSum;
-  }
-  
-  async getFeeEstimate(graceBlocks) {
-    let resp = await this.rpc.sendJsonRequest("get_fee_estimate", {grace_blocks: graceBlocks});
-    MoneroDaemonRpc._checkResponseStatus(resp.result);
-    let feeEstimate = new MoneroFeeEstimate();
-    feeEstimate.setFee(new BigInteger(resp.result.fee));
-    let fees = [];
-    for (let i = 0; i < resp.result.fees.length; i++) fees.push(new BigInteger(resp.result.fees[i]));
-    feeEstimate.setFees(fees);
-    feeEstimate.setQuantizationMask(new BigInteger(resp.result.quantization_mask));
-    return feeEstimate;
-  }
-  
-  async submitTxHex(txHex, doNotRelay) {
-    let resp = await this.rpc.sendPathRequest("send_raw_transaction", {tx_as_hex: txHex, do_not_relay: doNotRelay});
-    let result = MoneroDaemonRpc._convertRpcSubmitTxResult(resp);
-    
-    // set isGood based on status
-    try {
-      MoneroDaemonRpc._checkResponseStatus(resp); 
-      result.setIsGood(true);
-    } catch(e) {
-      result.setIsGood(false);
-    }
-    return result;
-  }
-  
-  async relayTxsByHash(txHashes) {
-    let resp = await this.rpc.sendJsonRequest("relay_tx", {txids: txHashes});
-    MoneroDaemonRpc._checkResponseStatus(resp.result);
-  }
-  
-  async getTxPool() {
-    
-    // send rpc request
-    let resp = await this.rpc.sendPathRequest("get_transaction_pool");
-    MoneroDaemonRpc._checkResponseStatus(resp);
-    
-    // build txs
-    let txs = [];
-    if (resp.transactions) {
-      for (let rpcTx of resp.transactions) {
-        let tx = new MoneroTx();
-        txs.push(tx);
-        tx.setIsConfirmed(false);
-        tx.setIsMinerTx(false);
-        tx.setInTxPool(true);
-        tx.setNumConfirmations(0);
-        MoneroDaemonRpc._convertRpcTx(rpcTx, tx);
-      }
-    }
-    
-    return txs;
-  }
-  
-  async getTxPoolHashes() {
-    throw new MoneroError("Not implemented");
-  }
-  
-  async getTxPoolBacklog() {
-    throw new MoneroError("Not implemented");
-  }
-
-  async getTxPoolStats() {
-    let resp = await this.rpc.sendPathRequest("get_transaction_pool_stats");
-    MoneroDaemonRpc._checkResponseStatus(resp);
-    return MoneroDaemonRpc._convertRpcTxPoolStats(resp.pool_stats);
-  }
-  
-  async flushTxPool(hashes) {
-    if (hashes) hashes = GenUtils.listify(hashes);
-    let resp = await this.rpc.sendJsonRequest("flush_txpool", {txids: hashes});
-    MoneroDaemonRpc._checkResponseStatus(resp.result);
-  }
-  
-  async getKeyImageSpentStatuses(keyImages) {
-    if (keyImages === undefined || keyImages.length === 0) throw new MoneroError("Must provide key images to check the status of");
-    let resp = await this.rpc.sendPathRequest("is_key_image_spent", {key_images: keyImages});
-    MoneroDaemonRpc._checkResponseStatus(resp);
-    return resp.spent_status;
-  }
-  
-  async getOutputHistogram(amounts, minCount, maxCount, isUnlocked, recentCutoff) {
-    
-    // send rpc request
-    let resp = await this.rpc.sendJsonRequest("get_output_histogram", {
-      amounts: amounts,
-      min_count: minCount,
-      max_count: maxCount,
-      unlocked: isUnlocked,
-      recent_cutoff: recentCutoff
-    });
-    MoneroDaemonRpc._checkResponseStatus(resp.result);
-    
-    // build histogram entries from response
-    let entries = [];
-    if (!resp.result.histogram) return entries;
-    for (let rpcEntry of resp.result.histogram) {
-      entries.push(MoneroDaemonRpc._convertRpcOutputHistogramEntry(rpcEntry));
-    }
-    return entries;
-  }
-  
-  async getOutputDistribution(amounts, cumulative, startHeight, endHeight) {
-    throw new MoneroError("Not implemented (response 'distribution' field is binary)");
-    
-//    let amountStrs = [];
-//    for (let amount of amounts) amountStrs.push(amount.toJSValue());
-//    console.log(amountStrs);
-//    console.log(cumulative);
-//    console.log(startHeight);
-//    console.log(endHeight);
-//    
-//    // send rpc request
-//    console.log("*********** SENDING REQUEST *************");
-//    if (startHeight === undefined) startHeight = 0;
-//    let resp = await this.rpc.sendJsonRequest("get_output_distribution", {
-//      amounts: amountStrs,
-//      cumulative: cumulative,
-//      from_height: startHeight,
-//      to_height: endHeight
-//    });
-//    
-//    console.log("RESPONSE");
-//    console.log(resp);
-//    
-//    // build distribution entries from response
-//    let entries = [];
-//    if (!resp.result.distributions) return entries; 
-//    for (let rpcEntry of resp.result.distributions) {
-//      let entry = MoneroDaemonRpc._convertRpcOutputDistributionEntry(rpcEntry);
-//      entries.push(entry);
-//    }
-//    return entries;
-  }
-  
-  async getInfo() {
-    let resp = await this.rpc.sendJsonRequest("get_info");
-    MoneroDaemonRpc._checkResponseStatus(resp.result);
-    return MoneroDaemonRpc._convertRpcInfo(resp.result);
-  }
-  
-  async getSyncInfo() {
-    let resp = await this.rpc.sendJsonRequest("sync_info");
-    MoneroDaemonRpc._checkResponseStatus(resp.result);
-    return MoneroDaemonRpc._convertRpcSyncInfo(resp.result);
-  }
-  
-  async getHardForkInfo() {
-    let resp = await this.rpc.sendJsonRequest("hard_fork_info");
-    MoneroDaemonRpc._checkResponseStatus(resp.result);
-    return MoneroDaemonRpc._convertRpcHardForkInfo(resp.result);
-  }
-  
-  async getAltChains() {
-    
-//    // mocked response for test
-//    let resp = {
-//        status: "OK",
-//        chains: [
-//          {
-//            block_hash: "697cf03c89a9b118f7bdf11b1b3a6a028d7b3617d2d0ed91322c5709acf75625",
-//            difficulty: 14114729638300280,
-//            height: 1562062,
-//            length: 2
-//          }
-//        ]
-//    }
-    
-    let resp = await this.rpc.sendJsonRequest("get_alternate_chains");
-    MoneroDaemonRpc._checkResponseStatus(resp.result);
-    let chains = [];
-    if (!resp.result.chains) return chains;
-    for (let rpcChain of resp.result.chains) chains.push(MoneroDaemonRpc._convertRpcAltChain(rpcChain));
-    return chains;
-  }
-  
-  async getAltBlockHashes() {
-    
-//    // mocked response for test
-//    let resp = {
-//        status: "OK",
-//        untrusted: false,
-//        blks_hashes: ["9c2277c5470234be8b32382cdf8094a103aba4fcd5e875a6fc159dc2ec00e011","637c0e0f0558e284493f38a5fcca3615db59458d90d3a5eff0a18ff59b83f46f","6f3adc174a2e8082819ebb965c96a095e3e8b63929ad9be2d705ad9c086a6b1c","697cf03c89a9b118f7bdf11b1b3a6a028d7b3617d2d0ed91322c5709acf75625"]
-//    }
-    
-    let resp = await this.rpc.sendPathRequest("get_alt_blocks_hashes");
-    MoneroDaemonRpc._checkResponseStatus(resp);
-    if (!resp.blks_hashes) return [];
-    return resp.blks_hashes;
-  }
-  
-  async getDownloadLimit() {
-    return (await this._getBandwidthLimits())[0];
-  }
-  
-  async setDownloadLimit(limit) {
-    if (limit == -1) return await this.resetDownloadLimit();
-    if (!(GenUtils.isInt(limit) && limit > 0)) throw new MoneroError("Download limit must be an integer greater than 0");
-    return (await this._setBandwidthLimits(limit, 0))[0];
-  }
-  
-  async resetDownloadLimit() {
-    return (await this._setBandwidthLimits(-1, 0))[0];
-  }
-
-  async getUploadLimit() {
-    return (await this._getBandwidthLimits())[1];
-  }
-  
-  async setUploadLimit(limit) {
-    if (limit == -1) return await this.resetUploadLimit();
-    if (!(GenUtils.isInt(limit) && limit > 0)) throw new MoneroError("Upload limit must be an integer greater than 0");
-    return (await this._setBandwidthLimits(0, limit))[1];
-  }
-  
-  async resetUploadLimit() {
-    return (await this._setBandwidthLimits(0, -1))[1];
-  }
-  
-  async getPeers() {
-    let resp = await this.rpc.sendJsonRequest("get_connections");
-    MoneroDaemonRpc._checkResponseStatus(resp.result);
-    let peers = [];
-    if (!resp.result.connections) return peers;
-    for (let rpcConnection of resp.result.connections) {
-      peers.push(MoneroDaemonRpc._convertRpcConnection(rpcConnection));
-    }
-    return peers;
-  }
-  
-  async getKnownPeers() {
-    
-    // tx config
-    let resp = await this.rpc.sendPathRequest("get_peer_list");
-    MoneroDaemonRpc._checkResponseStatus(resp);
-    
-    // build peers
-    let peers = [];
-    if (resp.gray_list) {
-      for (let rpcPeer of resp.gray_list) {
-        let peer = MoneroDaemonRpc._convertRpcPeer(rpcPeer);
-        peer.setIsOnline(false); // gray list means offline last checked
-        peers.push(peer);
-      }
-    }
-    if (resp.white_list) {
-      for (let rpcPeer of resp.white_list) {
-        let peer = MoneroDaemonRpc._convertRpcPeer(rpcPeer);
-        peer.setIsOnline(true); // white list means online last checked
-        peers.push(peer);
-      }
-    }
-    return peers;
-  }
-  
-  async setOutgoingPeerLimit(limit) {
-    if (!(GenUtils.isInt(limit) && limit >= 0)) throw new MoneroError("Outgoing peer limit must be >= 0");
-    let resp = await this.rpc.sendPathRequest("out_peers", {out_peers: limit});
-    MoneroDaemonRpc._checkResponseStatus(resp);
-  }
-  
-  async setIncomingPeerLimit(limit) {
-    if (!(GenUtils.isInt(limit) && limit >= 0)) throw new MoneroError("Incoming peer limit must be >= 0");
-    let resp = await this.rpc.sendPathRequest("in_peers", {in_peers: limit});
-    MoneroDaemonRpc._checkResponseStatus(resp);
-  }
-  
-  async getPeerBans() {
-    let resp = await this.rpc.sendJsonRequest("get_bans");
-    MoneroDaemonRpc._checkResponseStatus(resp.result);
-    let bans = [];
-    for (let rpcBan of resp.result.bans) {
-      let ban = new MoneroBan();
-      ban.setHost(rpcBan.host);
-      ban.setIp(rpcBan.ip);
-      ban.setSeconds(rpcBan.seconds);
-      bans.push(ban);
-    }
-    return bans;
-  }
-  
-  async setPeerBans(bans) {
-    let rpcBans = [];
-    for (let ban of bans) rpcBans.push(MoneroDaemonRpc._convertToRpcBan(ban));
-    let resp = await this.rpc.sendJsonRequest("set_bans", {bans: rpcBans});
-    MoneroDaemonRpc._checkResponseStatus(resp.result);
-  }
-  
-  async startMining(address, numThreads, isBackground, ignoreBattery) {
-    assert(address, "Must provide address to mine to");
-    assert(GenUtils.isInt(numThreads) && numThreads > 0, "Number of threads must be an integer greater than 0");
-    assert(isBackground === undefined || typeof isBackground === "boolean");
-    assert(ignoreBattery === undefined || typeof ignoreBattery === "boolean");
-    let resp = await this.rpc.sendPathRequest("start_mining", {
-      miner_address: address,
-      threads_count: numThreads,
-      do_background_mining: isBackground,
-      ignore_battery: ignoreBattery,
-    });
-    MoneroDaemonRpc._checkResponseStatus(resp);
-  }
-  
-  async stopMining() {
-    let resp = await this.rpc.sendPathRequest("stop_mining");
-    MoneroDaemonRpc._checkResponseStatus(resp);
-  }
-  
-  async getMiningStatus() {
-    let resp = await this.rpc.sendPathRequest("mining_status");
-    MoneroDaemonRpc._checkResponseStatus(resp);
-    return MoneroDaemonRpc._convertRpcMiningStatus(resp);
-  }
-  
-  async submitBlocks(blockBlobs) {
-    assert(Array.isArray(blockBlobs) && blockBlobs.length > 0, "Must provide an array of mined block blobs to submit");
-    let resp = await this.rpc.sendJsonRequest("submit_block", blockBlobs);
-    MoneroDaemonRpc._checkResponseStatus(resp.result);
-  }
-
-  async pruneBlockchain(check) {
-    let resp = await this.rpc.sendJsonRequest("prune_blockchain", {check: check}, 0);
-    MoneroDaemonRpc._checkResponseStatus(resp.result);
-    let result = new MoneroPruneResult();
-    result.setIsPruned(resp.result.pruned);
-    result.setPruningSeed(resp.result.pruning_seed);
-    return result;
-  }
-  
-  async checkForUpdate() {
-    let resp = await this.rpc.sendPathRequest("update", {command: "check"});
-    MoneroDaemonRpc._checkResponseStatus(resp);
-    return MoneroDaemonRpc._convertRpcUpdateCheckResult(resp);
-  }
-  
-  async downloadUpdate(path) {
-    let resp = await this.rpc.sendPathRequest("update", {command: "download", path: path});
-    MoneroDaemonRpc._checkResponseStatus(resp);
-    return MoneroDaemonRpc._convertRpcUpdateDownloadResult(resp);
-  }
-  
-  async stop() {
-    let resp = await this.rpc.sendPathRequest("stop_daemon");
-    MoneroDaemonRpc._checkResponseStatus(resp);
-  }
-  
-  async waitForNextBlockHeader() {
-    let that = this;
-    return new Promise(async function(resolve) {
-      await that.addListener(new class extends MoneroDaemonListener {
-        async onBlockHeader(header) {
-          await that.removeListener(this);
-          resolve(header);
-        }
-      }); 
-    });
-  }
-  
-  // ----------- ADD JSDOC FOR SUPPORTED DEFAULT IMPLEMENTATIONS --------------
-  
-  async getTx() { return super.getTx(...arguments); }
-  async getTxHex() { return super.getTxHex(...arguments); }
-  async getKeyImageSpentStatus() { return super.getKeyImageSpentStatus(...arguments); }
-  async setPeerBan() { return super.setPeerBan(...arguments); }
-  async submitBlock() { return super.submitBlock(...arguments); }
-  
-  // ------------------------------- PRIVATE ----------------------------------
-  
-  _refreshListening() {
-    if (this.pollListener == undefined && this.listeners.length) this.pollListener = new DaemonPoller(this);
-    if (this.pollListener !== undefined) this.pollListener.setIsPolling(this.listeners.length > 0);
-  }
-  
-  async _getBandwidthLimits() {
-    let resp = await this.rpc.sendPathRequest("get_limit");
-    MoneroDaemonRpc._checkResponseStatus(resp);
-    return [resp.limit_down, resp.limit_up];
-  }
-  
-  async _setBandwidthLimits(downLimit, upLimit) {
-    if (downLimit === undefined) downLimit = 0;
-    if (upLimit === undefined) upLimit = 0;
-    let resp = await this.rpc.sendPathRequest("set_limit", {limit_down: downLimit, limit_up: upLimit});
-    MoneroDaemonRpc._checkResponseStatus(resp);
-    return [resp.limit_down, resp.limit_up];
-  }
-  
-  /**
-   * Get a contiguous chunk of blocks starting from a given height up to a maximum
-   * height or amount of block data fetched from the blockchain, whichever comes first.
-   * 
-   * @param {number} startHeight - start height to retrieve blocks (default 0)
-   * @param {number} maxHeight - maximum end height to retrieve blocks (default blockchain height)
-   * @param {number} maxReqSize - maximum amount of block data to fetch from the blockchain in bytes (default 3,000,000 bytes)
-   * @return {MoneroBlock[]} are the resulting chunk of blocks
-   */
-  async _getMaxBlocks(startHeight, maxHeight, maxReqSize) {
-    if (startHeight === undefined) startHeight = 0;
-    if (maxHeight === undefined) maxHeight = await this.getHeight() - 1;
-    if (maxReqSize === undefined) maxReqSize = MoneroDaemonRpc.MAX_REQ_SIZE;
-    
-    // determine end height to fetch
-    let reqSize = 0;
-    let endHeight = startHeight - 1;
-    while (reqSize < maxReqSize && endHeight < maxHeight) {
-      
-      // get header of next block
-      let header = await this._getBlockHeaderByHeightCached(endHeight + 1, maxHeight);
-      
-      // block cannot be bigger than max request size
-      assert(header.getSize() <= maxReqSize, "Block exceeds maximum request size: " + header.getSize());
-      
-      // done iterating if fetching block would exceed max request size
-      if (reqSize + header.getSize() > maxReqSize) break;
-      
-      // otherwise block is included
-      reqSize += header.getSize();
-      endHeight++;
-    }
-    return endHeight >= startHeight ? await this.getBlocksByRange(startHeight, endHeight) : [];
-  }
-  
-  /**
-   * Retrieves a header by height from the cache or fetches and caches a header
-   * range if not already in the cache.
-   * 
-   * @param {number} height - height of the header to retrieve from the cache
-   * @param {number} maxHeight - maximum height of headers to cache
-   */
-  async _getBlockHeaderByHeightCached(height, maxHeight) {
-    
-    // get header from cache
-    let cachedHeader = this.cachedHeaders[height];
-    if (cachedHeader) return cachedHeader;
-    
-    // fetch and cache headers if not in cache
-    let endHeight = Math.min(maxHeight, height + MoneroDaemonRpc.NUM_HEADERS_PER_REQ - 1);  // TODO: could specify end height to cache to optimize small requests (would like to have time profiling in place though)
-    let headers = await this.getBlockHeadersByRange(height, endHeight);
-    for (let header of headers) {
-      this.cachedHeaders[header.getHeight()] = header;
-    }
-    
-    // return the cached header
-    return this.cachedHeaders[height];
-  }
-  
-  // --------------------------------- STATIC ---------------------------------
-  
-  static _normalizeConfig(uriOrConfigOrConnection, username, password, rejectUnauthorized, pollInterval, proxyToWorker) {
-    let config;
-    if (typeof uriOrConfigOrConnection === "string") config = {uri: uriOrConfigOrConnection, username: username, password: password, proxyToWorker: proxyToWorker, rejectUnauthorized: rejectUnauthorized, pollInterval: pollInterval};
-    else {
-      if (typeof uriOrConfigOrConnection !== "object") throw new MoneroError("Invalid configuration to create rpc client; must be string, object, or MoneroRpcConnection");
-      if (username || password || rejectUnauthorized || pollInterval || proxyToWorker) throw new MoneroError("Can provide config object or params or new MoneroDaemonRpc(...) but not both");
-      if (uriOrConfigOrConnection instanceof MoneroRpcConnection) config = Object.assign({}, uriOrConfigOrConnection.getConfig());
-      else config = Object.assign({}, uriOrConfigOrConnection);
-    }
-    if (config.server) {
-      config = Object.assign(config, new MoneroRpcConnection(config.server).getConfig());
-      delete config.server;
-    }
-    if (config.pollInterval === undefined) config.pollInterval = 5000; // TODO: move to config
-    if (config.proxyToWorker === undefined) config.proxyToWorker = true;
-    return config;
-  }
-  
-  static _checkResponseStatus(resp) {
-    if (resp.status !== "OK") throw new MoneroError(resp.status);
-  }
-  
-  static _convertRpcBlockHeader(rpcHeader) {
-    if (!rpcHeader) return undefined;
-    let header = new MoneroBlockHeader();
-    for (let key of Object.keys(rpcHeader)) {
-      let val = rpcHeader[key];
-      if (key === "block_size") GenUtils.safeSet(header, header.getSize, header.setSize, val);
-      else if (key === "depth") GenUtils.safeSet(header, header.getDepth, header.setDepth, val);
-      else if (key === "difficulty") { }  // handled by wide_difficulty
-      else if (key === "cumulative_difficulty") { } // handled by wide_cumulative_difficulty
-      else if (key === "difficulty_top64") { }  // handled by wide_difficulty
-      else if (key === "cumulative_difficulty_top64") { } // handled by wide_cumulative_difficulty
-      else if (key === "wide_difficulty") header.setDifficulty(GenUtils.reconcile(header.getDifficulty(), MoneroDaemonRpc._prefixedHexToBI(val)));
-      else if (key === "wide_cumulative_difficulty") header.setCumulativeDifficulty(GenUtils.reconcile(header.getCumulativeDifficulty(), MoneroDaemonRpc._prefixedHexToBI(val)));
-      else if (key === "hash") GenUtils.safeSet(header, header.getHash, header.setHash, val);
-      else if (key === "height") GenUtils.safeSet(header, header.getHeight, header.setHeight, val);
-      else if (key === "major_version") GenUtils.safeSet(header, header.getMajorVersion, header.setMajorVersion, val);
-      else if (key === "minor_version") GenUtils.safeSet(header, header.getMinorVersion, header.setMinorVersion, val);
-      else if (key === "nonce") GenUtils.safeSet(header, header.getNonce, header.setNonce, val);
-      else if (key === "num_txes") GenUtils.safeSet(header, header.getNumTxs, header.setNumTxs, val);
-      else if (key === "orphan_status") GenUtils.safeSet(header, header.getOrphanStatus, header.setOrphanStatus, val);
-      else if (key === "prev_hash" || key === "prev_id") GenUtils.safeSet(header, header.getPrevHash, header.setPrevHash, val);
-      else if (key === "reward") GenUtils.safeSet(header, header.getReward, header.setReward, BigInteger.parse(val));
-      else if (key === "timestamp") GenUtils.safeSet(header, header.getTimestamp, header.setTimestamp, val);
-      else if (key === "block_weight") GenUtils.safeSet(header, header.getWeight, header.setWeight, val);
-      else if (key === "long_term_weight") GenUtils.safeSet(header, header.getLongTermWeight, header.setLongTermWeight, val);
-      else if (key === "pow_hash") GenUtils.safeSet(header, header.getPowHash, header.setPowHash, val === "" ? undefined : val);
-      else if (key === "tx_hashes") {}  // used in block model, not header model
-      else if (key === "miner_tx") {}   // used in block model, not header model
-      else if (key === "miner_tx_hash") header.setMinerTxHash(val);
-      else console.log("WARNING: ignoring unexpected block header field: '" + key + "': " + val);
-    }
-    return header;
-  }
-  
-  static _convertRpcBlock(rpcBlock) {
-    
-    // build block
-    let block = new MoneroBlock(MoneroDaemonRpc._convertRpcBlockHeader(rpcBlock.block_header ? rpcBlock.block_header : rpcBlock));
-    block.setHex(rpcBlock.blob);
-    block.setTxHashes(rpcBlock.tx_hashes === undefined ? [] : rpcBlock.tx_hashes);
-    
-    // build miner tx
-    let rpcMinerTx = rpcBlock.json ? JSON.parse(rpcBlock.json).miner_tx : rpcBlock.miner_tx;  // may need to be parsed from json
-    let minerTx = new MoneroTx();
-    block.setMinerTx(minerTx);
-    minerTx.setIsConfirmed(true);
-    minerTx.setIsMinerTx(true);
-    MoneroDaemonRpc._convertRpcTx(rpcMinerTx, minerTx);
-    
-    return block;
-  }
-  
-  /**
-   * Transfers RPC tx fields to a given MoneroTx without overwriting previous values.
-   * 
-   * TODO: switch from safe set
-   * 
-   * @param rpcTx - RPC map containing transaction fields
-   * @param tx  - MoneroTx to populate with values (optional)
-   * @returns tx - same tx that was passed in or a new one if none given
-   */
-  static _convertRpcTx(rpcTx, tx) {
-    if (rpcTx === undefined) return undefined;
-    if (tx === undefined) tx = new MoneroTx();
-    
-//    console.log("******** BUILDING TX ***********");
-//    console.log(rpcTx);
-//    console.log(tx.toString());
-    
-    // initialize from rpc map
-    let header;
-    for (let key of Object.keys(rpcTx)) {
-      let val = rpcTx[key];
-      if (key === "tx_hash" || key === "id_hash") GenUtils.safeSet(tx, tx.getHash, tx.setHash, val);
-      else if (key === "block_timestamp") {
-        if (!header) header = new MoneroBlockHeader();
-        GenUtils.safeSet(header, header.getTimestamp, header.setTimestamp, val);
-      }
-      else if (key === "block_height") {
-        if (!header) header = new MoneroBlockHeader();
-        GenUtils.safeSet(header, header.getHeight, header.setHeight, val);
-      }
-      else if (key === "last_relayed_time") GenUtils.safeSet(tx, tx.getLastRelayedTimestamp, tx.setLastRelayedTimestamp, val);
-      else if (key === "receive_time" || key === "received_timestamp") GenUtils.safeSet(tx, tx.getReceivedTimestamp, tx.setReceivedTimestamp, val);
-      else if (key === "confirmations") GenUtils.safeSet(tx, tx.getNumConfirmations, tx.setNumConfirmations, val); 
-      else if (key === "in_pool") {
-        GenUtils.safeSet(tx, tx.isConfirmed, tx.setIsConfirmed, !val);
-        GenUtils.safeSet(tx, tx.inTxPool, tx.setInTxPool, val);
-      }
-      else if (key === "double_spend_seen") GenUtils.safeSet(tx, tx.isDoubleSpendSeen, tx.setIsDoubleSpend, val);
-      else if (key === "version") GenUtils.safeSet(tx, tx.getVersion, tx.setVersion, val);
-      else if (key === "extra") {
-        if (typeof val === "string") console.log("WARNING: extra field as string not being asigned to int[]: " + key + ": " + val); // TODO: how to set string to int[]? - or, extra is string which can encode int[]
-        else GenUtils.safeSet(tx, tx.getExtra, tx.setExtra, val);
-      }
-      else if (key === "vin") {
-        if (val.length !== 1 || !val[0].gen) {  // ignore miner input TODO: why?
-          tx.setInputs(val.map(rpcVin => MoneroDaemonRpc._convertRpcOutput(rpcVin, tx)));
-        }
-      }
-      else if (key === "vout") tx.setOutputs(val.map(rpcOutput => MoneroDaemonRpc._convertRpcOutput(rpcOutput, tx)));
-      else if (key === "rct_signatures") {
-        GenUtils.safeSet(tx, tx.getRctSignatures, tx.setRctSignatures, val);
-        if (val.txnFee) GenUtils.safeSet(tx, tx.getFee, tx.setFee, BigInteger.parse(val.txnFee));
-      } 
-      else if (key === "rctsig_prunable") GenUtils.safeSet(tx, tx.getRctSigPrunable, tx.setRctSigPrunable, val);
-      else if (key === "unlock_time") GenUtils.safeSet(tx, tx.getUnlockTime, tx.setUnlockTime, val);
-      else if (key === "as_json" || key === "tx_json") { }  // handled last so tx is as initialized as possible
-      else if (key === "as_hex" || key === "tx_blob") GenUtils.safeSet(tx, tx.getFullHex, tx.setFullHex, val ? val : undefined);
-      else if (key === "blob_size") GenUtils.safeSet(tx, tx.getSize, tx.setSize, val);
-      else if (key === "weight") GenUtils.safeSet(tx, tx.getWeight, tx.setWeight, val);
-      else if (key === "fee") GenUtils.safeSet(tx, tx.getFee, tx.setFee, BigInteger.parse(val));
-      else if (key === "relayed") GenUtils.safeSet(tx, tx.isRelayed, tx.setIsRelayed, val);
-      else if (key === "output_indices") GenUtils.safeSet(tx, tx.getOutputIndices, tx.setOutputIndices, val);
-      else if (key === "do_not_relay") GenUtils.safeSet(tx, tx.getRelay, tx.setRelay, !val);
-      else if (key === "kept_by_block") GenUtils.safeSet(tx, tx.isKeptByBlock, tx.setIsKeptByBlock, val);
-      else if (key === "signatures") GenUtils.safeSet(tx, tx.getSignatures, tx.setSignatures, val);
-      else if (key === "last_failed_height") {
-        if (val === 0) GenUtils.safeSet(tx, tx.isFailed, tx.setIsFailed, false);
-        else {
-          GenUtils.safeSet(tx, tx.isFailed, tx.setIsFailed, true);
-          GenUtils.safeSet(tx, tx.getLastFailedHeight, tx.setLastFailedHeight, val);
-        }
-      }
-      else if (key === "last_failed_id_hash") {
-        if (val === MoneroDaemonRpc.DEFAULT_ID) GenUtils.safeSet(tx, tx.isFailed, tx.setIsFailed, false);
-        else {
-          GenUtils.safeSet(tx, tx.isFailed, tx.setIsFailed, true);
-          GenUtils.safeSet(tx, tx.getLastFailedHash, tx.setLastFailedHash, val);
-        }
-      }
-      else if (key === "max_used_block_height") GenUtils.safeSet(tx, tx.getMaxUsedBlockHeight, tx.setMaxUsedBlockHeight, val);
-      else if (key === "max_used_block_id_hash") GenUtils.safeSet(tx, tx.getMaxUsedBlockHash, tx.setMaxUsedBlockHash, val);
-      else if (key === "prunable_hash") GenUtils.safeSet(tx, tx.getPrunableHash, tx.setPrunableHash, val ? val : undefined);
-      else if (key === "prunable_as_hex") GenUtils.safeSet(tx, tx.getPrunableHex, tx.setPrunableHex, val ? val : undefined);
-      else if (key === "pruned_as_hex") GenUtils.safeSet(tx, tx.getPrunedHex, tx.setPrunedHex, val ? val : undefined);
-      else console.log("WARNING: ignoring unexpected field in rpc tx: " + key + ": " + val);
-    }
-    
-    // link block and tx
-    if (header) tx.setBlock(new MoneroBlock(header).setTxs([tx]));
-    
-    // TODO monerod: unconfirmed txs misreport block height and timestamp
-    if (tx.getBlock() && tx.getBlock().getHeight() !== undefined && tx.getBlock().getHeight() === tx.getBlock().getTimestamp()) {
-      tx.setBlock(undefined);
-      tx.setIsConfirmed(false);
-    }
-    
-    // initialize remaining known fields
-    if (tx.isConfirmed()) {
-      GenUtils.safeSet(tx, tx.isRelayed, tx.setIsRelayed, true);
-      GenUtils.safeSet(tx, tx.getRelay, tx.setRelay, true);
-      GenUtils.safeSet(tx, tx.isFailed, tx.setIsFailed, false);
-    } else {
-      tx.setNumConfirmations(0);
-    }
-    if (tx.isFailed() === undefined) tx.setIsFailed(false);
-    if (tx.getOutputIndices() && tx.getOutputs())  {
-      assert.equal(tx.getOutputs().length, tx.getOutputIndices().length);
-      for (let i = 0; i < tx.getOutputs().length; i++) {
-        tx.getOutputs()[i].setIndex(tx.getOutputIndices()[i]);  // transfer output indices to outputs
-      }
-    }
-    if (rpcTx.as_json) MoneroDaemonRpc._convertRpcTx(JSON.parse(rpcTx.as_json), tx);
-    if (rpcTx.tx_json) MoneroDaemonRpc._convertRpcTx(JSON.parse(rpcTx.tx_json), tx);
-    if (!tx.isRelayed()) tx.setLastRelayedTimestamp(undefined);  // TODO monerod: returns last_relayed_timestamp despite relayed: false, self inconsistent
-    
-    // return built transaction
-    return tx;
-  }
-  
-  static _convertRpcOutput(rpcOutput, tx) {
-    let output = new MoneroOutput();
-    output.setTx(tx);
-    for (let key of Object.keys(rpcOutput)) {
-      let val = rpcOutput[key];
-      if (key === "gen") throw new MoneroError("Output with 'gen' from daemon rpc is miner tx which we ignore (i.e. each miner input is undefined)");
-      else if (key === "key") {
-        GenUtils.safeSet(output, output.getAmount, output.setAmount, new BigInteger(val.amount));
-        GenUtils.safeSet(output, output.getKeyImage, output.setKeyImage, new MoneroKeyImage(val.k_image));
-        GenUtils.safeSet(output, output.getRingOutputIndices, output.setRingOutputIndices, val.key_offsets);
-      }
-      else if (key === "amount") GenUtils.safeSet(output, output.getAmount, output.setAmount, BigInteger.parse(val));
-      else if (key === "target") {
-        let pubKey = val.key === undefined ? val.tagged_key.key : val.key; // TODO (monerod): rpc json uses {tagged_key={key=...}}, binary blocks use {key=...}
-        GenUtils.safeSet(output, output.getStealthPublicKey, output.setStealthPublicKey, pubKey);
-      }
-      else console.log("WARNING: ignoring unexpected field output: " + key + ": " + val);
-    }
-    return output;
-  }
-  
-  static _convertRpcBlockTemplate(rpcTemplate) {
-    let template = new MoneroBlockTemplate();
-    for (let key of Object.keys(rpcTemplate)) {
-      let val = rpcTemplate[key];
-      if (key === "blockhashing_blob") template.setBlockTemplateBlob(val);
-      else if (key === "blocktemplate_blob") template.setBlockHashingBlob(val);
-      else if (key === "difficulty") template.setDifficulty(BigInteger.parse(val));
-      else if (key === "expected_reward") template.setExpectedReward(val);
-      else if (key === "difficulty") { }  // handled by wide_difficulty
-      else if (key === "difficulty_top64") { }  // handled by wide_difficulty
-      else if (key === "wide_difficulty") template.setDifficulty(GenUtils.reconcile(template.getDifficulty(), MoneroDaemonRpc._prefixedHexToBI(val)));
-      else if (key === "height") template.setHeight(val);
-      else if (key === "prev_hash") template.setPrevHash(val);
-      else if (key === "reserved_offset") template.setReservedOffset(val);
-      else if (key === "status") {}  // handled elsewhere
-      else if (key === "untrusted") {}  // handled elsewhere
-      else if (key === "seed_height") template.setSeedHeight(val);
-      else if (key === "seed_hash") template.setSeedHash(val);
-      else if (key === "next_seed_hash") template.setNextSeedHash(val);
-      else console.log("WARNING: ignoring unexpected field in block template: " + key + ": " + val);
-    }
-    if ("" === template.getNextSeedHash()) template.setNextSeedHash(undefined);
-    return template;
-  }
-  
-  static _convertRpcInfo(rpcInfo) {
-    if (!rpcInfo) return undefined;
-    let info = new MoneroDaemonInfo();
-    for (let key of Object.keys(rpcInfo)) {
-      let val = rpcInfo[key];
-      if (key === "version") info.setVersion(val);
-      else if (key === "alt_blocks_count") info.setNumAltBlocks(val);
-      else if (key === "block_size_limit") info.setBlockSizeLimit(val);
-      else if (key === "block_size_median") info.setBlockSizeMedian(val);
-      else if (key === "block_weight_limit") info.setBlockWeightLimit(val);
-      else if (key === "block_weight_median") info.setBlockWeightMedian(val);
-      else if (key === "bootstrap_daemon_address") { if (val) info.setBootstrapDaemonAddress(val); }
-      else if (key === "difficulty") { }  // handled by wide_difficulty
-      else if (key === "cumulative_difficulty") { } // handled by wide_cumulative_difficulty
-      else if (key === "difficulty_top64") { }  // handled by wide_difficulty
-      else if (key === "cumulative_difficulty_top64") { } // handled by wide_cumulative_difficulty
-      else if (key === "wide_difficulty") info.setDifficulty(GenUtils.reconcile(info.getDifficulty(), MoneroDaemonRpc._prefixedHexToBI(val)));
-      else if (key === "wide_cumulative_difficulty") info.setCumulativeDifficulty(GenUtils.reconcile(info.getCumulativeDifficulty(), MoneroDaemonRpc._prefixedHexToBI(val)));
-      else if (key === "free_space") info.setFreeSpace(BigInteger.parse(val));
-      else if (key === "database_size") info.setDatabaseSize(val);
-      else if (key === "grey_peerlist_size") info.setNumOfflinePeers(val);
-      else if (key === "height") info.setHeight(val);
-      else if (key === "height_without_bootstrap") info.setHeightWithoutBootstrap(val);
-      else if (key === "incoming_connections_count") info.setNumIncomingConnections(val);
-      else if (key === "offline") info.setIsOffline(val);
-      else if (key === "outgoing_connections_count") info.setNumOutgoingConnections(val);
-      else if (key === "rpc_connections_count") info.setNumRpcConnections(val);
-      else if (key === "start_time") info.setStartTimestamp(val);
-      else if (key === "adjusted_time") info.setAdjustedTimestamp(val);
-      else if (key === "status") {}  // handled elsewhere
-      else if (key === "target") info.setTarget(val);
-      else if (key === "target_height") info.setTargetHeight(val);
-      else if (key === "top_block_hash") info.setTopBlockHash(val);
-      else if (key === "tx_count") info.setNumTxs(val);
-      else if (key === "tx_pool_size") info.setNumTxsPool(val);
-      else if (key === "untrusted") {} // handled elsewhere
-      else if (key === "was_bootstrap_ever_used") info.setWasBootstrapEverUsed(val);
-      else if (key === "white_peerlist_size") info.setNumOnlinePeers(val);
-      else if (key === "update_available") info.setUpdateAvailable(val);
-      else if (key === "nettype") GenUtils.safeSet(info, info.getNetworkType, info.setNetworkType, MoneroDaemon.parseNetworkType(val));
-      else if (key === "mainnet") { if (val) GenUtils.safeSet(info, info.getNetworkType, info.setNetworkType, MoneroNetworkType.MAINNET); }
-      else if (key === "testnet") { if (val) GenUtils.safeSet(info, info.getNetworkType, info.setNetworkType, MoneroNetworkType.TESTNET); }
-      else if (key === "stagenet") { if (val) GenUtils.safeSet(info, info.getNetworkType, info.setNetworkType, MoneroNetworkType.STAGENET); }
-      else if (key === "credits") info.setCredits(BigInteger.parse(val));
-      else if (key === "top_block_hash" || key === "top_hash") info.setTopBlockHash(GenUtils.reconcile(info.getTopBlockHash(), "" === val ? undefined : val))
-      else if (key === "busy_syncing") info.setIsBusySyncing(val);
-      else if (key === "synchronized") info.setIsSynchronized(val);
-      else if (key === "restricted") info.setIsRestricted(val);
-      else console.log("WARNING: Ignoring unexpected info field: " + key + ": " + val);
-    }
-    return info;
-  }
-  
-  /**
-   * Initializes sync info from RPC sync info.
-   * 
-   * @param rpcSyncInfo - rpc map to initialize the sync info from
-   * @return {MoneroDaemonSyncInfo} is sync info initialized from the map
-   */
-  static _convertRpcSyncInfo(rpcSyncInfo) {
-    let syncInfo = new MoneroDaemonSyncInfo();
-    for (let key of Object.keys(rpcSyncInfo)) {
-      let val = rpcSyncInfo[key];
-      if (key === "height") syncInfo.setHeight(val);
-      else if (key === "peers") {
-        syncInfo.setPeers([]);
-        let rpcConnections = val;
-        for (let rpcConnection of rpcConnections) {
-          syncInfo.getPeers().push(MoneroDaemonRpc._convertRpcConnection(rpcConnection.info));
-        }
-      }
-      else if (key === "spans") {
-        syncInfo.setSpans([]);
-        let rpcSpans = val;
-        for (let rpcSpan of rpcSpans) {
-          syncInfo.getSpans().push(MoneroDaemonRpc._convertRpcConnectionSpan(rpcSpan));
-        }
-      } else if (key === "status") {}   // handled elsewhere
-      else if (key === "target_height") syncInfo.setTargetHeight(BigInteger.parse(val));
-      else if (key === "next_needed_pruning_seed") syncInfo.setNextNeededPruningSeed(val);
-      else if (key === "overview") {  // this returns [] without pruning
-        let overview;
-        try {
-          overview = JSON.parse(val);
-          if (overview !== undefined && overview.length > 0) console.error("Ignoring non-empty 'overview' field (not implemented): " + overview); // TODO
-        } catch (e) {
-          console.error("Failed to parse 'overview' field: " + overview + ": " + e.message);
-        }
-      }
-      else if (key === "credits") syncInfo.setCredits(BigInteger.parse(val));
-      else if (key === "top_hash") syncInfo.setTopBlockHash("" === val ? undefined : val);
-      else if (key === "untrusted") {}  // handled elsewhere
-      else console.log("WARNING: ignoring unexpected field in sync info: " + key + ": " + val);
-    }
-    return syncInfo;
-  }
-  
-  static _convertRpcHardForkInfo(rpcHardForkInfo) {
-    let info = new MoneroHardForkInfo();
-    for (let key of Object.keys(rpcHardForkInfo)) {
-      let val = rpcHardForkInfo[key];
-      if (key === "earliest_height") info.setEarliestHeight(val);
-      else if (key === "enabled") info.setIsEnabled(val);
-      else if (key === "state") info.setState(val);
-      else if (key === "status") {}     // handled elsewhere
-      else if (key === "untrusted") {}  // handled elsewhere
-      else if (key === "threshold") info.setThreshold(val);
-      else if (key === "version") info.setVersion(val);
-      else if (key === "votes") info.setNumVotes(val);
-      else if (key === "voting") info.setVoting(val);
-      else if (key === "window") info.setWindow(val);
-      else if (key === "credits") info.setCredits(BigInteger.parse(val));
-      else if (key === "top_hash") info.setTopBlockHash("" === val ? undefined : val);
-      else console.log("WARNING: ignoring unexpected field in hard fork info: " + key + ": " + val);
-    }
-    return info;
-  }
-  
-  static _convertRpcConnectionSpan(rpcConnectionSpan) {
-    let span = new MoneroConnectionSpan();
-    for (let key of Object.keys(rpcConnectionSpan)) {
-      let val = rpcConnectionSpan[key];
-      if (key === "connection_id") span.setConnectionId(val);
-      else if (key === "nblocks") span.setNumBlocks(val);
-      else if (key === "rate") span.setRate(val);
-      else if (key === "remote_address") { if (val !== "") span.setRemoteAddress(val); }
-      else if (key === "size") span.setSize(val);
-      else if (key === "speed") span.setSpeed(val);
-      else if (key === "start_block_height") span.setStartHeight(val);
-      else console.log("WARNING: ignoring unexpected field in daemon connection span: " + key + ": " + val);
-    }
-    return span;
-  }
-  
-  static _convertRpcOutputHistogramEntry(rpcEntry) {
-    let entry = new MoneroOutputHistogramEntry();
-    for (let key of Object.keys(rpcEntry)) {
-      let val = rpcEntry[key];
-      if (key === "amount") entry.setAmount(BigInteger.parse(val));
-      else if (key === "total_instances") entry.setNumInstances(val);
-      else if (key === "unlocked_instances") entry.setNumUnlockedInstances(val);
-      else if (key === "recent_instances") entry.setNumRecentInstances(val);
-      else console.log("WARNING: ignoring unexpected field in output histogram: " + key + ": " + val);
-    }
-    return entry;
-  }
-  
-  static _convertRpcSubmitTxResult(rpcResult) {
-    assert(rpcResult);
-    let result = new MoneroSubmitTxResult();
-    for (let key of Object.keys(rpcResult)) {
-      let val = rpcResult[key];
-      if (key === "double_spend") result.setIsDoubleSpend(val);
-      else if (key === "fee_too_low") result.setIsFeeTooLow(val);
-      else if (key === "invalid_input") result.setHasInvalidInput(val);
-      else if (key === "invalid_output") result.setHasInvalidOutput(val);
-      else if (key === "too_few_outputs") result.setHasTooFewOutputs(val);
-      else if (key === "low_mixin") result.setIsMixinTooLow(val);
-      else if (key === "not_relayed") result.setIsRelayed(!val);
-      else if (key === "overspend") result.setIsOverspend(val);
-      else if (key === "reason") result.setReason(val === "" ? undefined : val);
-      else if (key === "too_big") result.setIsTooBig(val);
-      else if (key === "sanity_check_failed") result.setSanityCheckFailed(val);
-      else if (key === "credits") result.setCredits(BigInteger.parse(val))
-      else if (key === "status" || key === "untrusted") {}  // handled elsewhere
-      else if (key === "top_hash") result.setTopBlockHash("" === val ? undefined : val);
-      else if (key === "tx_extra_too_big") result.setIsTxExtraTooBig(val);
-      else console.log("WARNING: ignoring unexpected field in submit tx hex result: " + key + ": " + val);
-    }
-    return result;
-  }
-  
-  static _convertRpcTxPoolStats(rpcStats) {
-    assert(rpcStats);
-    let stats = new MoneroTxPoolStats();
-    for (let key of Object.keys(rpcStats)) {
-      let val = rpcStats[key];
-      if (key === "bytes_max") stats.setBytesMax(val);
-      else if (key === "bytes_med") stats.setBytesMed(val);
-      else if (key === "bytes_min") stats.setBytesMin(val);
-      else if (key === "bytes_total") stats.setBytesTotal(val);
-      else if (key === "histo_98pc") stats.setHisto98pc(val);
-      else if (key === "num_10m") stats.setNum10m(val);
-      else if (key === "num_double_spends") stats.setNumDoubleSpends(val);
-      else if (key === "num_failing") stats.setNumFailing(val);
-      else if (key === "num_not_relayed") stats.setNumNotRelayed(val);
-      else if (key === "oldest") stats.setOldestTimestamp(val);
-      else if (key === "txs_total") stats.setNumTxs(val);
-      else if (key === "fee_total") stats.setFeeTotal(BigInteger.parse(val));
-      else if (key === "histo") {
-        stats.setHisto(new Map());
-        for (let elem of val) stats.getHisto().set(elem.bytes, elem.txs);
-      }
-      else console.log("WARNING: ignoring unexpected field in tx pool stats: " + key + ": " + val);
-    }
-
-    // uninitialize some stats if not applicable
-    if (stats.getHisto98pc() === 0) stats.setHisto98pc(undefined);
-    if (stats.getNumTxs() === 0) {
-      stats.setBytesMin(undefined);
-      stats.setBytesMed(undefined);
-      stats.setBytesMax(undefined);
-      stats.setHisto98pc(undefined);
-      stats.setOldestTimestamp(undefined);
-    }
-
-    return stats;
-  }
-  
-  static _convertRpcAltChain(rpcChain) {
-    assert(rpcChain);
-    let chain = new MoneroAltChain();
-    for (let key of Object.keys(rpcChain)) {
-      let val = rpcChain[key];
-      if (key === "block_hash") {}  // using block_hashes instead
-      else if (key === "difficulty") { } // handled by wide_difficulty
-      else if (key === "difficulty_top64") { }  // handled by wide_difficulty
-      else if (key === "wide_difficulty") chain.setDifficulty(GenUtils.reconcile(chain.getDifficulty(), MoneroDaemonRpc._prefixedHexToBI(val)));
-      else if (key === "height") chain.setHeight(val);
-      else if (key === "length") chain.setLength(val);
-      else if (key === "block_hashes") chain.setBlockHashes(val);
-      else if (key === "main_chain_parent_block") chain.setMainChainParentBlockHash(val);
-      else console.log("WARNING: ignoring unexpected field in alternative chain: " + key + ": " + val);
-    }
-    return chain;
-  }
-  
-  static _convertRpcPeer(rpcPeer) {
-    assert(rpcPeer);
-    let peer = new MoneroPeer();
-    for (let key of Object.keys(rpcPeer)) {
-      let val = rpcPeer[key];
-      if (key === "host") peer.setHost(val);
-      else if (key === "id") peer.setId("" + val);  // TODO monero-wallet-rpc: peer id is BigInteger but string in `get_connections`
-      else if (key === "ip") {} // host used instead which is consistently a string
-      else if (key === "last_seen") peer.setLastSeenTimestamp(val);
-      else if (key === "port") peer.setPort(val);
-      else if (key === "rpc_port") peer.setRpcPort(val);
-      else if (key === "pruning_seed") peer.setPruningSeed(val);
-      else if (key === "rpc_credits_per_hash") peer.setRpcCreditsPerHash(BigInteger.parse(val));
-      else console.log("WARNING: ignoring unexpected field in rpc peer: " + key + ": " + val);
-    }
-    return peer;
-  }
-  
-  static _convertRpcConnection(rpcConnection) {
-    let peer = new MoneroPeer();
-    peer.setIsOnline(true);
-    for (let key of Object.keys(rpcConnection)) {
-      let val = rpcConnection[key];
-      if (key === "address") peer.setAddress(val);
-      else if (key === "avg_download") peer.setAvgDownload(val);
-      else if (key === "avg_upload") peer.setAvgUpload(val);
-      else if (key === "connection_id") peer.setId(val);
-      else if (key === "current_download") peer.setCurrentDownload(val);
-      else if (key === "current_upload") peer.setCurrentUpload(val);
-      else if (key === "height") peer.setHeight(val);
-      else if (key === "host") peer.setHost(val);
-      else if (key === "ip") {} // host used instead which is consistently a string
-      else if (key === "incoming") peer.setIsIncoming(val);
-      else if (key === "live_time") peer.setLiveTime(val);
-      else if (key === "local_ip") peer.setIsLocalIp(val);
-      else if (key === "localhost") peer.setIsLocalHost(val);
-      else if (key === "peer_id") peer.setId(val);
-      else if (key === "port") peer.setPort(parseInt(val));
-      else if (key === "rpc_port") peer.setRpcPort(val);
-      else if (key === "recv_count") peer.setNumReceives(val);
-      else if (key === "recv_idle_time") peer.setReceiveIdleTime(val);
-      else if (key === "send_count") peer.setNumSends(val);
-      else if (key === "send_idle_time") peer.setSendIdleTime(val);
-      else if (key === "state") peer.setState(val);
-      else if (key === "support_flags") peer.setNumSupportFlags(val);
-      else if (key === "pruning_seed") peer.setPruningSeed(val);
-      else if (key === "rpc_credits_per_hash") peer.setRpcCreditsPerHash(BigInteger.parse(val));
-      else if (key === "address_type") peer.setType(val);
-      else console.log("WARNING: ignoring unexpected field in peer: " + key + ": " + val);
-    }
-    return peer;
-  }
-  
-  static _convertToRpcBan(ban) {
-    let rpcBan = {};
-    rpcBan.host = ban.getHost();
-    rpcBan.ip = ban.getIp();
-    rpcBan.ban = ban.isBanned();
-    rpcBan.seconds = ban.getSeconds();
-    return rpcBan;
-  }
-  
-  static _convertRpcMiningStatus(rpcStatus) {
-    let status = new MoneroMiningStatus();
-    status.setIsActive(rpcStatus.active);
-    status.setSpeed(rpcStatus.speed);
-    status.setNumThreads(rpcStatus.threads_count);
-    if (rpcStatus.active) {
-      status.setAddress(rpcStatus.address);
-      status.setIsBackground(rpcStatus.is_background_mining_enabled);
-    }
-    return status;
-  }
-  
-  static _convertRpcUpdateCheckResult(rpcResult) {
-    assert(rpcResult);
-    let result = new MoneroDaemonUpdateCheckResult();
-    for (let key of Object.keys(rpcResult)) {
-      let val = rpcResult[key];
-      if (key === "auto_uri") result.setAutoUri(val);
-      else if (key === "hash") result.setHash(val);
-      else if (key === "path") {} // handled elsewhere
-      else if (key === "status") {} // handled elsewhere
-      else if (key === "update") result.setIsUpdateAvailable(val);
-      else if (key === "user_uri") result.setUserUri(val);
-      else if (key === "version") result.setVersion(val);
-      else if (key === "untrusted") {} // handled elsewhere
-      else console.log("WARNING: ignoring unexpected field in rpc check update result: " + key + ": " + val);
-    }
-    if (result.getAutoUri() === "") result.setAutoUri(undefined);
-    if (result.getUserUri() === "") result.setUserUri(undefined);
-    if (result.getVersion() === "") result.setVersion(undefined);
-    if (result.getHash() === "") result.setHash(undefined);
-    return result;
-  }
-  
-  static _convertRpcUpdateDownloadResult(rpcResult) {
-    let result = new MoneroDaemonUpdateDownloadResult(MoneroDaemonRpc._convertRpcUpdateCheckResult(rpcResult));
-    result.setDownloadPath(rpcResult["path"]);
-    if (result.getDownloadPath() === "") result.setDownloadPath(undefined);
-    return result;
-  }
-
-  /**
-   * Converts a '0x' prefixed hexidecimal string to a BigInteger.
-   * 
-   * @param hex is the '0x' prefixed hexidecimal string to convert
-   * @return BigInteger is the hexicedimal converted to decimal
-   */
-  static _prefixedHexToBI(hex) {
-    assert(hex.substring(0, 2) === "0x");
-    return BigInteger.parse(hex, 16);
-  }
-}
-
-// static variables
-MoneroDaemonRpc.DEFAULT_ID = "0000000000000000000000000000000000000000000000000000000000000000";  // uninitialized tx or block hash from daemon rpc
-MoneroDaemonRpc.MAX_REQ_SIZE = "3000000";  // max request size when fetching blocks from daemon
-MoneroDaemonRpc.NUM_HEADERS_PER_REQ = "750";  // number of headers to fetch and cache per request
-
-/**
- * Implements a MoneroDaemon by proxying requests to a worker.
- * 
- * @private
- */
-class MoneroDaemonRpcProxy extends MoneroDaemon {
-  
-  // --------------------------- STATIC UTILITIES -----------------------------
-  
-  static async connect(config) {
-    let daemonId = GenUtils.getUUID();
-    config = Object.assign({}, config, {proxyToWorker: false});
-    await LibraryUtils.invokeWorker(daemonId, "connectDaemonRpc", [config]);
-    return new MoneroDaemonRpcProxy(daemonId, await LibraryUtils.getWorker());
-  }
-  
-  // ---------------------------- INSTANCE METHODS ----------------------------
-  
-  constructor(daemonId, worker) {
-    super();
-    this.daemonId = daemonId;
-    this.worker = worker;
-    this.wrappedListeners = [];
-  }
-  
-  async getProcess() {
-    return undefined; // proxy does not have access to process
-  }
-  
-  async stopProcess(force) {
-    if (this.process === undefined) throw new MoneroError("MoneroDaemonRpcProxy instance not created from new process");
-    let listenersCopy = GenUtils.copyArray(this.getListeners());
-    for (let listener of listenersCopy) await this.removeListener(listener);
-    return GenUtils.killProcess(this.process, force ? "sigkill" : undefined);
-  }
-  
-  async addListener(listener) {
-    let wrappedListener = new DaemonWorkerListener(listener);
-    let listenerId = wrappedListener.getId();
-    LibraryUtils.WORKER_OBJECTS[this.daemonId].callbacks["onBlockHeader_" + listenerId] = [wrappedListener.onBlockHeader, wrappedListener];
-    this.wrappedListeners.push(wrappedListener);
-    return this._invokeWorker("daemonAddListener", [listenerId]);
-  }
-  
-  async removeListener(listener) {
-    for (let i = 0; i < this.wrappedListeners.length; i++) {
-      if (this.wrappedListeners[i].getListener() === listener) {
-        let listenerId = this.wrappedListeners[i].getId();
-        await this._invokeWorker("daemonRemoveListener", [listenerId]);
-        delete LibraryUtils.WORKER_OBJECTS[this.daemonId].callbacks["onBlockHeader_" + listenerId];
-        this.wrappedListeners.splice(i, 1);
-        return;
-      }
-    }
-    throw new MoneroError("Listener is not registered with daemon");
-  }
-  
-  getListeners() {
-    let listeners = [];
-    for (let wrappedListener of this.wrappedListeners) listeners.push(wrappedListener.getListener());
-    return listeners;
-  }
-  
-  async getRpcConnection() {
-    let config = await this._invokeWorker("daemonGetRpcConnection");
-    return new MoneroRpcConnection(config);
-  }
-  
-  async isConnected() {
-    return this._invokeWorker("daemonIsConnected");
-  }
-  
-  async getVersion() {
-    let versionJson = await this._invokeWorker("daemonGetVersion");
-    return new MoneroVersion(versionJson.number, versionJson.isRelease);
-  }
-  
-  async isTrusted() {
-    return this._invokeWorker("daemonIsTrusted");
-  }
-  
-  async getHeight() {
-    return this._invokeWorker("daemonGetHeight");
-  }
-  
-  async getBlockHash(height) {
-    return this._invokeWorker("daemonGetBlockHash", Array.from(arguments));
-  }
-  
-  async getBlockTemplate(walletAddress, reserveSize) {
-    return new MoneroBlockTemplate(await this._invokeWorker("daemonGetBlockTemplate", Array.from(arguments)));
-  }
-  
-  async getLastBlockHeader() {
-    return new MoneroBlockHeader(await this._invokeWorker("daemonGetLastBlockHeader"));
-  }
-  
-  async getBlockHeaderByHash(blockHash) {
-    return new MoneroBlockHeader(await this._invokeWorker("daemonGetBlockHeaderByHash", Array.from(arguments)));
-  }
-  
-  async getBlockHeaderByHeight(height) {
-    return new MoneroBlockHeader(await this._invokeWorker("daemonGetBlockHeaderByHeight", Array.from(arguments)));
-  }
-  
-  async getBlockHeadersByRange(startHeight, endHeight) {
-    let blockHeadersJson = await this._invokeWorker("daemonGetBlockHeadersByRange", Array.from(arguments));
-    let headers = [];
-    for (let blockHeaderJson of blockHeadersJson) headers.push(new MoneroBlockHeader(blockHeaderJson));
-    return headers;
-  }
-  
-  async getBlockByHash(blockHash) {
-    return new MoneroBlock(await this._invokeWorker("daemonGetBlockByHash", Array.from(arguments)));
-  }
-  
-  async getBlocksByHash(blockHashes, startHeight, prune) {
-    let blocksJson = await this._invokeWorker("daemonGetBlocksByHash", Array.from(arguments));
-    let blocks = [];
-    for (let blockJson of blocksJson) blocks.push(new MoneroBlock(blockJson));
-    return blocks;
-  }
-  
-  async getBlockByHeight(height) {
-    return new MoneroBlock(await this._invokeWorker("daemonGetBlockByHeight", Array.from(arguments)));
-  }
-  
-  async getBlocksByHeight(heights) {
-    let blocksJson = await this._invokeWorker("daemonGetBlocksByHeight", Array.from(arguments));
-    let blocks = [];
-    for (let blockJson of blocksJson) blocks.push(new MoneroBlock(blockJson));
-    return blocks;
-  }
-  
-  async getBlocksByRange(startHeight, endHeight) {
-    let blocksJson = await this._invokeWorker("daemonGetBlocksByRange", Array.from(arguments));
-    let blocks = [];
-    for (let blockJson of blocksJson) blocks.push(new MoneroBlock(blockJson));
-    return blocks;
-  }
-  
-  async getBlocksByRangeChunked(startHeight, endHeight, maxChunkSize) {
-    let blocksJson = await this._invokeWorker("daemonGetBlocksByRangeChunked", Array.from(arguments));
-    let blocks = [];
-    for (let blockJson of blocksJson) blocks.push(new MoneroBlock(blockJson));
-    return blocks;
-  }
-  
-  async getBlockHashes(blockHashes, startHeight) {
-    return this._invokeWorker("daemonGetBlockHashes", Array.from(arguments));
-  }
-  
-  async getTxs(txHashes, prune = false) {
-    
-    // deserialize txs from blocks
-    let blocks = [];
-    for (let blockJson of await this._invokeWorker("daemonGetTxs", Array.from(arguments))) {
-      blocks.push(new MoneroBlock(blockJson));
-    }
-    
-    // collect txs
-    let txs = [];
-    for (let block of blocks) {
-      for (let tx of block.getTxs()) {
-        if (!tx.isConfirmed()) tx.setBlock(undefined);
-        txs.push(tx);
-      }
-    }
-    return txs;
-  }
-  
-  async getTxHexes(txHashes, prune = false) {
-    return this._invokeWorker("daemonGetTxHexes", Array.from(arguments));
-  }
-  
-  async getMinerTxSum(height, numBlocks) {
-    return new MoneroMinerTxSum(await this._invokeWorker("daemonGetMinerTxSum", Array.from(arguments)));
-  }
-  
-  async getFeeEstimate(graceBlocks) {
-    return new MoneroFeeEstimate(await this._invokeWorker("daemonGetFeeEstimate", Array.from(arguments)));
-  }
-  
-  async submitTxHex(txHex, doNotRelay) {
-    return new MoneroSubmitTxResult(await this._invokeWorker("daemonSubmitTxHex", Array.from(arguments)));
-  }
-  
-  async relayTxsByHash(txHashes) {
-    return this._invokeWorker("daemonRelayTxsByHash", Array.from(arguments));
-  }
-  
-  async getTxPool() {
-    let blockJson = await this._invokeWorker("daemonGetTxPool");
-    let txs = new MoneroBlock(blockJson).getTxs();
-    for (let tx of txs) tx.setBlock(undefined);
-    return txs ? txs : [];
-  }
-  
-  async getTxPoolHashes() {
-    return this._invokeWorker("daemonGetTxPoolHashes", Array.from(arguments));
-  }
-  
-  async getTxPoolBacklog() {
-    throw new MoneroError("Not implemented");
-  }
-  
-  async getTxPoolStats() {
-    return new MoneroTxPoolStats(await this._invokeWorker("daemonGetTxPoolStats"));
-  }
-  
-  async flushTxPool(hashes) {
-    return this._invokeWorker("daemonFlushTxPool", Array.from(arguments));
-  }
-  
-  async getKeyImageSpentStatuses(keyImages) {
-    return this._invokeWorker("daemonGetKeyImageSpentStatuses", Array.from(arguments));
-  }
-  
-  async getOutputs(outputs) {
-    throw new MoneroError("Not implemented");
-  }
-  
-  async getOutputHistogram(amounts, minCount, maxCount, isUnlocked, recentCutoff) {
-    let entries = [];
-    for (let entryJson of await this._invokeWorker("daemonGetOutputHistogram", [amounts, minCount, maxCount, isUnlocked, recentCutoff])) {
-      entries.push(new MoneroOutputHistogramEntry(entryJson));
-    }
-    return entries;
-  }
-  
-  async getOutputDistribution(amounts, cumulative, startHeight, endHeight) {
-    throw new MoneroError("Not implemented");
-  }
-  
-  async getInfo() {
-    return new MoneroDaemonInfo(await this._invokeWorker("daemonGetInfo"));
-  }
-  
-  async getSyncInfo() {
-    return new MoneroDaemonSyncInfo(await this._invokeWorker("daemonGetSyncInfo"));
-  }
-  
-  async getHardForkInfo() {
-    return new MoneroHardForkInfo(await this._invokeWorker("daemonGetHardForkInfo"));
-  }
-  
-  async getAltChains() {
-    let altChains = [];
-    for (let altChainJson of await this._invokeWorker("daemonGetAltChains")) altChains.push(new MoneroAltChain(altChainJson));
-    return altChains;
-  }
-  
-  async getAltBlockHashes() {
-    return this._invokeWorker("daemonGetAltBlockHashes");
-  }
-  
-  async getDownloadLimit() {
-    return this._invokeWorker("daemonGetDownloadLimit");
-  }
-  
-  async setDownloadLimit(limit) {
-    return this._invokeWorker("daemonSetDownloadLimit", Array.from(arguments));
-  }
-  
-  async resetDownloadLimit() {
-    return this._invokeWorker("daemonResetDownloadLimit");
-  }
-  
-  async getUploadLimit() {
-    return this._invokeWorker("daemonGetUploadLimit");
-  }
-  
-  async setUploadLimit(limit) {
-    return this._invokeWorker("daemonSetUploadLimit", Array.from(arguments));
-  }
-  
-  async resetUploadLimit() {
-    return this._invokeWorker("daemonResetUploadLimit");
-  }
-  
-  async getPeers() {
-    let peers = [];
-    for (let peerJson of await this._invokeWorker("daemonGetPeers")) peers.push(new MoneroPeer(peerJson));
-    return peers;
-  }
-  
-  async getKnownPeers() {
-    let peers = [];
-    for (let peerJson of await this._invokeWorker("daemonGetKnownPeers")) peers.push(new MoneroPeer(peerJson));
-    return peers;
-  }
-  
-  async setOutgoingPeerLimit(limit) {
-    return this._invokeWorker("daemonSetIncomingPeerLimit", Array.from(arguments));
-  }
-  
-  async setIncomingPeerLimit(limit) {
-    return this._invokeWorker("daemonSetIncomingPeerLimit", Array.from(arguments));
-  }
-  
-  async getPeerBans() {
-    let bans = [];
-    for (let banJson of await this._invokeWorker("daemonGetPeerBans")) bans.push(new MoneroBan(banJson));
-    return bans;
-  }
-
-  async setPeerBans(bans) {
-    let bansJson = [];
-    for (let ban of bans) bansJson.push(ban.toJson());
-    return this._invokeWorker("daemonSetPeerBans", [bansJson]);
-  }
-  
-  async startMining(address, numThreads, isBackground, ignoreBattery) {
-    return this._invokeWorker("daemonStartMining", Array.from(arguments));
-  }
-  
-  async stopMining() {
-    await this._invokeWorker("daemonStopMining")
-  }
-  
-  async getMiningStatus() {
-    return new MoneroMiningStatus(await this._invokeWorker("daemonGetMiningStatus"));
-  }
-  
-  async submitBlocks(blockBlobs) {
-    throw new MoneroError("Not implemented");
-  }
-
-  async pruneBlockchain(check) {
-    return new MoneroPruneResult(await this._invokeWorker("daemonPruneBlockchain"));
-  }
-  
-  async checkForUpdate() {
-    throw new MoneroError("Not implemented");
-  }
-  
-  async downloadUpdate(path) {
-    throw new MoneroError("Not implemented");
-  }
-  
-  async stop() {
-    while (this.wrappedListeners.length) await this.removeBlockListener(this.wrappedListeners[0].getListener());
-    return this._invokeWorker("daemonStop");
-  }
-  
-  async waitForNextBlockHeader() {
-    return new MoneroBlockHeader(await this._invokeWorker("daemonWaitForNextBlockHeader"));
-  }
-  
-  // --------------------------- PRIVATE HELPERS ------------------------------
-  
-  // TODO: duplicated with MoneroWalletFullProxy
-  async _invokeWorker(fnName, args) {
-    return LibraryUtils.invokeWorker(this.daemonId, fnName, args);
-  }
-}
-
-/**
- * Polls a Monero daemon for updates and notifies listeners as they occur.
- * 
- * @class
- * @ignore
- */
-class DaemonPoller {
-  
-  constructor(daemon) {
-    let that = this;
-    this._daemon = daemon;
-    this._looper = new TaskLooper(async function() { await that.poll(); });
-  }
-  
-  setIsPolling(isPolling) {
-    this._isPolling = isPolling;
-    if (isPolling) this._looper.start(this._daemon.config.pollInterval);
-    else this._looper.stop();
-  }
-  
-  async poll() {
-    try {
-      
-      // get latest block header
-      let header = await this._daemon.getLastBlockHeader();
-      
-      // save first header for comparison
-      if (!this._lastHeader) {
-        this._lastHeader = await this._daemon.getLastBlockHeader();
-        return;
-      }
-      
-      // compare header to last
-      if (header.getHash() !== this._lastHeader.getHash()) {
-        this._lastHeader = header;
-        for (let listener of this._daemon.getListeners()) {
-          await listener.onBlockHeader(header); // notify listener
-        }
-      }
-    } catch (err) {
-      console.error("Failed to background poll daemon header");
-      console.error(err);
-    }
-  }
-}
-
-/**
- * Internal listener to bridge notifications to external listeners.
- * 
- * @private
- */
-class DaemonWorkerListener {
-  
-  constructor(listener) {
-    this._id = GenUtils.getUUID();
-    this._listener = listener;
-  }
-  
-  getId() {
-    return this._id;
-  }
-  
-  getListener() {
-    return this._listener;
-  }
-  
-  async onBlockHeader(headerJson) {
-    return this._listener.onBlockHeader(new MoneroBlockHeader(headerJson));
-  }
-}
-
-module.exports = MoneroDaemonRpc;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_daemon_model_ConnectionType.js.html b/docs/src_main_js_daemon_model_ConnectionType.js.html deleted file mode 100644 index 458a81257..000000000 --- a/docs/src_main_js_daemon_model_ConnectionType.js.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - JSDoc: Source: src/main/js/daemon/model/ConnectionType.js - - - - - - - - - - -
- -

Source: src/main/js/daemon/model/ConnectionType.js

- - - - - - -
-
-
const assert = require("assert");
-
-/**
- * Enumerates connection types.
- * 
- * Based on enums.h in monero-project.
- * 
- * @hideconstructor
- */
-class ConnectionType {
-    
-  /**
-   * Asserts that the given connection type is valid.
-   */
-  static validate(type) {
-    assert(type === 0 || type === 1 || type === 2 || type === 3, "Connection type is invalid: " + type);
-  }
-  
-  /**
-   * Indicates if the given connection type is valid or not.
-   */
-  static isValid(type) {
-    return type === 0 || type === 1 || type === 2 || 3;
-  }
-}
-
-/**
- * Invalid connection type (value=0).
- */
-ConnectionType.INVALID = 0;
-
-/**
- * IPV4 connection type (value=1).
- */
-ConnectionType.IPV4 = 1;
-
-/**
- * IPV6 connection type (value=2).
- */
-ConnectionType.IPV6 = 2;
-
-/**
- * TOR connection type (value=3).
- */
-ConnectionType.TOR = 3;
-
-/**
- * I2P connection type (value=4).
- */
-ConnectionType.I2P = 4;
-
-module.exports = ConnectionType;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_daemon_model_MoneroAltChain.js.html b/docs/src_main_js_daemon_model_MoneroAltChain.js.html deleted file mode 100644 index eb722d6e2..000000000 --- a/docs/src_main_js_daemon_model_MoneroAltChain.js.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - - JSDoc: Source: src/main/js/daemon/model/MoneroAltChain.js - - - - - - - - - - -
- -

Source: src/main/js/daemon/model/MoneroAltChain.js

- - - - - - -
-
-
const BigInteger = require("../../common/biginteger").BigInteger;
-
-/**
- * Models an alternative chain seen by the node.
- */
-class MoneroAltChain {
-  
-  constructor(state) {
-    state = Object.assign({}, state);
-    if (state.difficulty !== undefined && !(state.difficulty instanceof BigInteger)) state.difficulty = BigInteger.parse(state.difficulty);
-    this.state = state;
-  }
-  
-  toJson() {
-    let json = Object.assign({}, this.state);
-    if (this.getDifficulty()) json.difficulty = this.getDifficulty().toString();
-    return json;
-  }
-  
-  getBlockHashes(blockHashes) {
-    return this.state.blockHashes;
-  }
-  
-  setBlockHashes(blockHashes) {
-    this.state.blockHashes = blockHashes;
-    return this;
-  }
-  
-  getDifficulty() {
-    return this.state.difficulty;
-  }
-  
-  setDifficulty(difficulty) {
-    this.state.difficulty = difficulty;
-    return this;
-  }
-  
-  getHeight() {
-    return this.state.height;
-  }
-  
-  setHeight(height) {
-    this.state.height = height;
-    return this;
-  }
-  
-  getLength() {
-    return this.state.length;
-  }
-  
-  setLength(length) {
-    this.state.length = length;
-    return this;
-  }
-  
-  getMainChainParentBlockHash() {
-    return this.state.mainChainParentBlockHash;
-  }
-  
-  setMainChainParentBlockHash(mainChainParentBlockHash) {
-    this.state.mainChainParentBlockHash = mainChainParentBlockHash;
-    return this;
-  }
-}
-
-module.exports = MoneroAltChain;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_daemon_model_MoneroBan.js.html b/docs/src_main_js_daemon_model_MoneroBan.js.html deleted file mode 100644 index fe35ee830..000000000 --- a/docs/src_main_js_daemon_model_MoneroBan.js.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - JSDoc: Source: src/main/js/daemon/model/MoneroBan.js - - - - - - - - - - -
- -

Source: src/main/js/daemon/model/MoneroBan.js

- - - - - - -
-
-
/**
- * Monero banhammer.
- */
-class MoneroBan {
-  
-  constructor(state) {
-    this.state = Object.assign({}, state);
-  }
-  
-  toJson() {
-    return Object.assign({}, this.state);
-  }
-  
-  getHost() {
-    return this.state.host;
-  }
-  
-  setHost(host) {
-    this.state.host = host;
-    return this;
-  }
-  
-  getIp() {
-    return this.state.ip;
-  }
-  
-  setIp(ip) {
-    this.state.ip = ip;
-    return this;
-  }
-  
-  isBanned() {
-    return this.state.isBanned;
-  }
-  
-  setIsBanned(isBanned) {
-    this.state.isBanned = isBanned;
-    return this;
-  }
-  
-  getSeconds() {
-    return this.state.seconds;
-  }
-  
-  setSeconds(seconds) {
-    this.state.seconds = seconds;
-    return this;
-  }
-}
-
-module.exports = MoneroBan;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_daemon_model_MoneroBlock.js.html b/docs/src_main_js_daemon_model_MoneroBlock.js.html deleted file mode 100644 index 5ee6806d2..000000000 --- a/docs/src_main_js_daemon_model_MoneroBlock.js.html +++ /dev/null @@ -1,208 +0,0 @@ - - - - - JSDoc: Source: src/main/js/daemon/model/MoneroBlock.js - - - - - - - - - - -
- -

Source: src/main/js/daemon/model/MoneroBlock.js

- - - - - - -
-
-
const assert = require("assert");
-const GenUtils = require("../../common/GenUtils");
-const MoneroBlockHeader = require("./MoneroBlockHeader");
-const MoneroTx = require("./MoneroTx");
-const MoneroTxQuery = require("../../wallet/model/MoneroTxQuery");
-const MoneroTxWallet = require("../../wallet/model/MoneroTxWallet");
-
-/**
- * Models a Monero block in the blockchain.
- * 
- * @extends {MoneroBlockHeader}
- */
-class MoneroBlock extends MoneroBlockHeader {
-  
-  /**
-   * Construct the model.
-   * 
-   * @param {MoneroBlock|MoneroBlockHeader|object} state is existing state to initialize from (optional)
-   * @param {MoneroBlock.DeserializationType} txType informs the tx deserialization type (MoneroTx, MoneroTxWallet, MoneroTxQuery)
-   */
-  constructor(state, txType) {
-    super(state);
-    state = this.state;
-    
-    // deserialize miner tx
-    if (state.minerTx && !(state.minerTx instanceof MoneroTx)) state.minerTx = new MoneroTx(state.minerTx).setBlock(this);
-    
-    // deserialize non-miner txs
-    if (state.txs) {
-      for (let i = 0; i < state.txs.length; i++) {
-        if (txType === MoneroBlock.DeserializationType.TX || txType === undefined) {
-          if (!(state.txs[i] instanceof MoneroTx)) state.txs[i] = new MoneroTx(state.txs[i]).setBlock(this);
-        } else if (txType === MoneroBlock.DeserializationType.TX_WALLET) {
-          if (!(state.txs[i] instanceof MoneroTxWallet)) state.txs[i] = new MoneroTxWallet(state.txs[i]).setBlock(this);
-        } else if (txType === MoneroBlock.DeserializationType.TX_QUERY) {
-          if (!(state.txs[i] instanceof MoneroTxQuery)) state.txs[i] = new MoneroTxQuery(state.txs[i]).setBlock(this);
-        } else {
-          throw new Error("Unrecognized tx deserialization type: " + txType);
-        }
-      }
-    }
-  }
-  
-  getHex() {
-    return this.state.hex;
-  }
-  
-  setHex(hex) {
-    this.state.hex = hex;
-    return this;
-  }
-  
-  getMinerTx() {
-    return this.state.minerTx;
-  }
-  
-  setMinerTx(minerTx) {
-    this.state.minerTx = minerTx;
-    return this;
-  }
-  
-  getTxs() {
-    return this.state.txs;
-  }
-  
-  setTxs(txs) {
-    this.state.txs = txs;
-    return this;
-  }
-  
-  getTxHashes() {
-    return this.state.txHashes;
-  }
-  
-  setTxHashes(txHashes) {
-    this.state.txHashes = txHashes;
-    return this;
-  }
-  
-  copy() {
-    return new MoneroBlock(this);
-  }
-  
-  toJson() {
-    let json = super.toJson();
-    if (this.getMinerTx()) json.minerTx = this.getMinerTx().toJson();
-    if (this.getTxs()) {
-      json.txs = [];
-      for (let tx of this.getTxs()) json.txs.push(tx.toJson());
-    }
-    return json;
-  }
-  
-  merge(block) {
-    assert(block instanceof MoneroBlock);
-    if (this === block) return this;
-    
-    // merge header fields
-    super.merge(block);
-    
-    // merge reconcilable block extensions
-    this.setHex(GenUtils.reconcile(this.getHex(), block.getHex()));
-    this.setTxHashes(GenUtils.reconcile(this.getTxHashes(), block.getTxHashes()));
-    
-    // merge miner tx
-    if (this.getMinerTx() === undefined) this.setMinerTx(block.getMinerTx());
-    if (block.getMinerTx() !== undefined) {
-      block.getMinerTx().setBlock(this);
-      this.getMinerTx().merge(block.getMinerTx());
-    }
-    
-    // merge non-miner txs
-    if (block.getTxs() !== undefined) {
-      for (let tx of block.getTxs()) {
-        tx.setBlock(this);
-        MoneroBlock._mergeTx(this.getTxs(), tx);
-      }
-    }
-
-    return this;
-  }
-  
-  toString(indent = 0) {
-    let str = super.toString(indent) + "\n";
-    str += GenUtils.kvLine("Hex", this.getHex(), indent);
-    if (this.getTxs()) {
-      str += GenUtils.kvLine("Txs", "", indent);
-      for (let tx of this.getTxs()) {
-        str += tx.toString(indent + 1) + "\n";
-      }
-    }
-    if (this.getMinerTx()) {
-      str += GenUtils.kvLine("Miner tx", "", indent);
-      str += this.getMinerTx().toString(indent + 1) + "\n";
-    }
-    str += GenUtils.kvLine("Txs hashes", this.getTxHashes(), indent);
-    return str[str.length - 1] === "\n" ? str.slice(0, str.length - 1) : str  // strip last newline
-  }
-  
-  // private helper to merge txs
-  static _mergeTx(txs, tx) {
-    for (let aTx of txs) {
-      if (aTx.getHash() === tx.getHash()) {
-        aTx.merge(tx);
-        return;
-      }
-    }
-    txs.push(tx);
-  }
-}
-
-MoneroBlock.DeserializationType = {
-    TX: 0,
-    TX_WALLET: 1,
-    TX_QUERY: 2
-}
-
-module.exports = MoneroBlock;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_daemon_model_MoneroBlockHeader.js.html b/docs/src_main_js_daemon_model_MoneroBlockHeader.js.html deleted file mode 100644 index 260129270..000000000 --- a/docs/src_main_js_daemon_model_MoneroBlockHeader.js.html +++ /dev/null @@ -1,313 +0,0 @@ - - - - - JSDoc: Source: src/main/js/daemon/model/MoneroBlockHeader.js - - - - - - - - - - -
- -

Source: src/main/js/daemon/model/MoneroBlockHeader.js

- - - - - - -
-
-
const assert = require("assert");
-const BigInteger = require("../../common/biginteger").BigInteger;
-const GenUtils = require("../../common/GenUtils");
-
-/**
- * Models a Monero block header which contains information about the block.
- * 
- * @class
- */
-class MoneroBlockHeader {
-  
-  /**
-   * Construct the model.
-   * 
-   * @param {MoneroBlockHeader|object} state is existing state to initialize from (optional)
-   */
-  constructor(state) {
-    
-    // initialize internal state
-    if (!state) state = {};
-    else if (state instanceof MoneroBlockHeader) state = state.toJson();
-    else if (typeof state === "object") state = Object.assign({}, state);
-    else throw new MoneroError("state must be a MoneroBlockHeader or JavaScript object");
-    this.state = state;
-    
-    // deserialize BigIntegers
-    if (state.difficulty !== undefined && !(state.difficulty instanceof BigInteger)) state.difficulty = BigInteger.parse(state.difficulty);
-    if (state.cumulativeDifficulty !== undefined && !(state.cumulativeDifficulty instanceof BigInteger)) state.cumulativeDifficulty = BigInteger.parse(state.cumulativeDifficulty);
-    if (state.reward !== undefined && !(state.reward instanceof BigInteger)) state.reward = BigInteger.parse(state.reward);
-  }
-  
-  copy() {
-    return new MoneroBlockHeader(this);
-  }
-  
-  toJson() {
-    let json = Object.assign({}, this.state);
-    if (this.getDifficulty()) json.difficulty = this.getDifficulty().toString();
-    if (this.getCumulativeDifficulty()) json.cumulativeDifficulty = this.getCumulativeDifficulty().toString();
-    if (this.getReward()) json.reward = this.getReward().toString();
-    return json;
-  }
-  
-  getHash() {
-    return this.state.hash;
-  }
-  
-  setHash(hash) {
-    this.state.hash = hash;
-    return this;
-  }
-  
-  /**
-   * Return the block's height which is the total number of blocks that have occurred before.
-   * 
-   * @return {number} the block's height
-   */
-  getHeight() {
-    return this.state.height;
-  }
-  
-  /**
-   * Set the block's height which is the total number of blocks that have occurred before.
-   * 
-   * @param {number} height is the block's height to set
-   * @return {MoneroBlockHeader} a reference to this header for chaining
-   */
-  setHeight(height) {
-    this.state.height = height;
-    return this;
-  }
-  
-  getTimestamp() {
-    return this.state.timestamp;
-  }
-  
-  setTimestamp(timestamp) {
-    this.state.timestamp = timestamp;
-    return this;
-  }
-  
-  getSize() {
-    return this.state.size;
-  }
-  
-  setSize(size) {
-    this.state.size = size;
-    return this;
-  }
-  
-  getWeight() {
-    return this.state.weight;
-  }
-  
-  setWeight(weight) {
-    this.state.weight = weight;
-    return this;
-  }
-  
-  getLongTermWeight() {
-    return this.state.longTermWeight;
-  }
-  
-  setLongTermWeight(longTermWeight) {
-    this.state.longTermWeight = longTermWeight;
-    return this;
-  }
-  
-  getDepth() {
-    return this.state.depth;
-  }
-  
-  setDepth(depth) {
-    this.state.depth = depth;
-    return this;
-  }
-  
-  getDifficulty() {
-    return this.state.difficulty;
-  }
-  
-  setDifficulty(difficulty) {
-    this.state.difficulty = difficulty;
-    return this;
-  }
-  
-  getCumulativeDifficulty() {
-    return this.state.cumulativeDifficulty;
-  }
-  
-  setCumulativeDifficulty(cumulativeDifficulty) {
-    this.state.cumulativeDifficulty = cumulativeDifficulty;
-    return this;
-  }
-  
-  getMajorVersion() {
-    return this.state.majorVersion;
-  }
-  
-  setMajorVersion(majorVersion) {
-    this.state.majorVersion = majorVersion;
-    return this;
-  }
-  
-  getMinorVersion() {
-    return this.state.minorVersion;
-  }
-  
-  setMinorVersion(minorVersion) {
-    this.state.minorVersion = minorVersion;
-    return this;
-  }
-  
-  getNonce() {
-    return this.state.nonce;
-  }
-  
-  setNonce(nonce) {
-    this.state.nonce = nonce;
-    return this;
-  }
-  
-  getMinerTxHash() {
-    return this.state.minerTxHash;
-  }
-  
-  setMinerTxHash(minerTxHash) {
-    this.state.minerTxHash = minerTxHash;
-    return this;
-  }
-  
-  getNumTxs() {
-    return this.state.numTxs;
-  }
-  
-  setNumTxs(numTxs) {
-    this.state.numTxs = numTxs;
-    return this;
-  }
-  
-  getOrphanStatus() {
-    return this.state.orphanStatus;
-  }
-  
-  setOrphanStatus(orphanStatus) {
-    this.state.orphanStatus = orphanStatus;
-    return this;
-  }
-  
-  getPrevHash() {
-    return this.state.prevHash;
-  }
-  
-  setPrevHash(prevHash) {
-    this.state.prevHash = prevHash;
-    return this;
-  }
-  
-  getReward() {
-    return this.state.reward;
-  }
-  
-  setReward(reward) {
-    this.state.reward = reward;
-    return this;
-  }
-  
-  getPowHash() {
-    return this.state.powHash;
-  }
-  
-  setPowHash(powHash) {
-    this.state.powHash = powHash;
-    return this;
-  }
-  
-  merge(header) {
-    assert(header instanceof MoneroBlockHeader);
-    if (this === header) return this;
-    this.setHash(GenUtils.reconcile(this.getHash(), header.getHash()));
-    this.setHeight(GenUtils.reconcile(this.getHeight(), header.getHeight(), {resolveMax: true}));  // height can increase
-    this.setTimestamp(GenUtils.reconcile(this.getTimestamp(), header.getTimestamp(), {resolveMax: true}));  // block timestamp can increase
-    this.setSize(GenUtils.reconcile(this.getSize(), header.getSize()));
-    this.setWeight(GenUtils.reconcile(this.getWeight(), header.getWeight()));
-    this.setDepth(GenUtils.reconcile(this.getDepth(), header.getDepth()));
-    this.setDifficulty(GenUtils.reconcile(this.getDifficulty(), header.getDifficulty()));
-    this.setCumulativeDifficulty(GenUtils.reconcile(this.getCumulativeDifficulty(), header.getCumulativeDifficulty()));
-    this.setMajorVersion(GenUtils.reconcile(this.getMajorVersion(), header.getMajorVersion()));
-    this.setMinorVersion(GenUtils.reconcile(this.getMinorVersion(), header.getMinorVersion()));
-    this.setNonce(GenUtils.reconcile(this.getNonce(), header.getNonce()));
-    this.setMinerTxHash(GenUtils.reconcile(this.getMinerTxHash(), header.getMinerTxHash()));
-    this.setNumTxs(GenUtils.reconcile(this.getNumTxs(), header.getNumTxs()));
-    this.setOrphanStatus(GenUtils.reconcile(this.getOrphanStatus(), header.getOrphanStatus()));
-    this.setPrevHash(GenUtils.reconcile(this.getPrevHash(), header.getPrevHash()));
-    this.setReward(GenUtils.reconcile(this.getReward(), header.getReward()));
-    this.setPowHash(GenUtils.reconcile(this.getPowHash(), header.getPowHash()));
-    return this;
-  }
-  
-  toString(indent = 0) {
-    let str = "";
-    str += GenUtils.kvLine("Hash", this.getHash(), indent);
-    str += GenUtils.kvLine("Height", this.getHeight(), indent);
-    str += GenUtils.kvLine("Timestamp", this.getTimestamp(), indent);
-    str += GenUtils.kvLine("Size", this.getSize(), indent);
-    str += GenUtils.kvLine("Weight", this.getWeight(), indent);
-    str += GenUtils.kvLine("Depth", this.getDepth(), indent);
-    str += GenUtils.kvLine("Difficulty", this.getDifficulty(), indent);
-    str += GenUtils.kvLine("Cumulative difficulty", this.getCumulativeDifficulty(), indent);
-    str += GenUtils.kvLine("Major version", this.getMajorVersion(), indent);
-    str += GenUtils.kvLine("Minor version", this.getMinorVersion(), indent);
-    str += GenUtils.kvLine("Nonce", this.getNonce(), indent);
-    str += GenUtils.kvLine("Miner tx hash", this.getMinerTxHash(), indent);
-    str += GenUtils.kvLine("Num txs", this.getNumTxs(), indent);
-    str += GenUtils.kvLine("Orphan status", this.getOrphanStatus(), indent);
-    str += GenUtils.kvLine("Prev hash", this.getPrevHash(), indent);
-    str += GenUtils.kvLine("Reward", this.getReward(), indent);
-    str += GenUtils.kvLine("Pow hash", this.getPowHash(), indent);
-    return str[str.length - 1] === "\n" ? str.slice(0, str.length - 1) : str  // strip last newline
-  }
-}
-
-module.exports = MoneroBlockHeader;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_daemon_model_MoneroBlockTemplate.js.html b/docs/src_main_js_daemon_model_MoneroBlockTemplate.js.html deleted file mode 100644 index e403c7c9d..000000000 --- a/docs/src_main_js_daemon_model_MoneroBlockTemplate.js.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - JSDoc: Source: src/main/js/daemon/model/MoneroBlockTemplate.js - - - - - - - - - - -
- -

Source: src/main/js/daemon/model/MoneroBlockTemplate.js

- - - - - - -
-
-
const BigInteger = require("../../common/biginteger").BigInteger;
-
-/**
- * Monero block template to mine.
- */
-class MoneroBlockTemplate {
-  
-  constructor(state) {
-    state = Object.assign({}, state);
-    this.state = state;
-    
-    // deserialize BigIntegers
-    if (state.expectedReward !== undefined && !(state.expectedReward instanceof BigInteger)) state.expectedReward = BigInteger.parse(state.expectedReward);
-    if (state.difficulty !== undefined && !(state.difficulty instanceof BigInteger)) state.difficulty = BigInteger.parse(state.difficulty);
-  }
-  
-  toJson() {
-    let json = Object.assign({}, this.state);
-    if (this.getExpectedReward()) json.expectedReward = this.getExpectedReward().toString();
-    if (this.getDifficulty()) json.difficulty = this.getDifficulty().toString();
-    return json;
-  }
-  
-  toJson() {
-    let json = Object.assign({}, this.state);
-    if (json.expectedReward) json.expectedReward = json.expectedReward.toString();
-    if (json.difficulty) json.difficulty = json.difficulty.toString();
-    return json;
-  }
-  
-  getBlockTemplateBlob() {
-    return this.state.blockTemplateBlob;
-  }
-  
-  setBlockTemplateBlob(blockTemplateBlob) {
-    this.state.blockTemplateBlob = blockTemplateBlob;
-    return this;
-  }
-  
-  getBlockHashingBlob() {
-    return this.state.blockHashingBlob;
-  }
-  
-  setBlockHashingBlob(blockHashingBlob) {
-    this.state.blockHashingBlob = blockHashingBlob;
-    return this;
-  }
-  
-  getDifficulty() {
-    return this.state.difficulty;
-  }
-  
-  setDifficulty(difficulty) {
-    this.state.difficulty = difficulty;
-    return this;
-  }
-  
-  getExpectedReward() {
-    return this.state.expectedReward;
-  }
-  
-  setExpectedReward(expectedReward) {
-    this.state.expectedReward = expectedReward;
-    return this;
-  }
-  
-  getHeight() {
-    return this.state.height;
-  }
-  
-  setHeight(height) {
-    this.state.height = height;
-    return this;
-  }
-  
-  getPrevHash() {
-    return this.state.prevId;
-  }
-  
-  setPrevHash(prevId) {
-    this.state.prevId = prevId;
-    return this;
-  }
-  
-  getReservedOffset() {
-    return this.state.reservedOffset;
-  }
-  
-  setReservedOffset(reservedOffset) {
-    this.state.reservedOffset = reservedOffset;
-    return this;
-  }
-  
-  getSeedHeight() {
-    return this.state.height;
-  }
-  
-  setSeedHeight(seedHeight) {
-    this.state.seedHeight = seedHeight;
-    return this;
-  }
-  
-  getSeedHash() {
-    return this.state.seedHash;
-  }
-  
-  setSeedHash(seedHash) {
-    this.state.seedHash = seedHash;
-    return this;
-  }
-  
-  getNextSeedHash() {
-    return this.state.nextSeedHash
-  }
-  
-  setNextSeedHash(nextSeedHash) {
-    this.state.nextSeedHash = nextSeedHash;
-    return this;
-  }
-}
-
-module.exports = MoneroBlockTemplate;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_daemon_model_MoneroConnectionSpan.js.html b/docs/src_main_js_daemon_model_MoneroConnectionSpan.js.html deleted file mode 100644 index f1ca769f0..000000000 --- a/docs/src_main_js_daemon_model_MoneroConnectionSpan.js.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - JSDoc: Source: src/main/js/daemon/model/MoneroConnectionSpan.js - - - - - - - - - - -
- -

Source: src/main/js/daemon/model/MoneroConnectionSpan.js

- - - - - - -
-
-
/**
- * Monero daemon connection span.
- */
-class MoneroConnectionSpan {
-  
-  constructor(state) {
-    this.state = Object.assign({}, state);
-  }
-  
-  toJson() {
-    return Object.assign({}, this.state);
-  }
-  
-  getConnectionId() {
-    return this.state.connectionId;
-  }
-
-  setConnectionId(connectionId) {
-    this.state.connectionId = connectionId;
-    return this;
-  }
-  
-  getNumBlocks() {
-    return this.state.numBlocks;
-  }
-
-  setNumBlocks(numBlocks) {
-    this.state.numBlocks = numBlocks;
-    return this;
-  }
-  
-  getRemoteAddress() {
-    return this.state.remoteAddress;
-  }
-
-  setRemoteAddress(remoteAddress) {
-    this.state.remoteAddress = remoteAddress;
-    return this;
-  }
-  
-  getRate() {
-    return this.state.rate;
-  }
-
-  setRate(rate) {
-    this.state.rate = rate;
-    return this;
-  }
-  
-  getSpeed() {
-    return this.state.speed;
-  }
-
-  setSpeed(speed) {
-    this.state.speed = speed;
-    return this;
-  }
-  
-  getSize() {
-    return this.state.size;
-  }
-  
-  setSize(size) {
-    this.state.size = size;
-    return this;
-  }
-  
-  getStartHeight() {
-    return this.state.startHeight;
-  }
-  
-  setStartHeight(startHeight) {
-    this.state.startHeight = startHeight;
-    return this;
-  }
-}
-
-module.exports = MoneroConnectionSpan;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_daemon_model_MoneroDaemonConnection.js.html b/docs/src_main_js_daemon_model_MoneroDaemonConnection.js.html deleted file mode 100644 index 2a6b028d2..000000000 --- a/docs/src_main_js_daemon_model_MoneroDaemonConnection.js.html +++ /dev/null @@ -1,232 +0,0 @@ - - - - - JSDoc: Source: src/main/js/daemon/model/MoneroDaemonConnection.js - - - - - - - - - - -
- -

Source: src/main/js/daemon/model/MoneroDaemonConnection.js

- - - - - - -
-
-
const MoneroDaemonPeer = require("./MoneroDaemonPeer");
-
-/**
- * Monero daemon connection.
- */
-class MoneroDaemonConnection {
-  
-  constructor(state) {
-    this.state = Object.assign({}, state);
-    if (this.state.peer !== undefined && !(this.state.peer instanceof MoneroDaemonPeer)) this.state.peer = new MoneroDaemonPeer(this.state.peer);
-  }
-  
-  toJson() {
-    let json = Object.assign({}, this.state);
-    if (json.peer) json.peer = json.peer.toJson();
-    return json;
-  }
-  
-  getPeer() {
-    return this.state.peer;
-  }
-
-  setPeer(peer) {
-    this.state.peer = peer;
-    return this;
-  }
-  
-  getId() {
-    return this.state.id;
-  }
-
-  setId(id) {
-    this.state.id = id;
-    return this;
-  }
-
-  getAvgDownload() {
-    return this.state.avgDownload;
-  }
-
-  setAvgDownload(avgDownload) {
-    this.state.avgDownload = avgDownload;
-    return this;
-  }
-
-  getAvgUpload() {
-    return this.state.avgUpload;
-  }
-
-  setAvgUpload(avgUpload) {
-    this.state.avgUpload = avgUpload;
-    return this;
-  }
-
-  getCurrentDownload() {
-    return this.state.currentDownload;
-  }
-
-  setCurrentDownload(currentDownload) {
-    this.state.currentDownload = currentDownload;
-    return this;
-  }
-
-  getCurrentUpload() {
-    return this.state.currentUpload;
-  }
-
-  setCurrentUpload(currentUpload) {
-    this.state.currentUpload = currentUpload;
-    return this;
-  }
-
-  getHeight() {
-    return this.state.height;
-  }
-
-  setHeight(height) {
-    this.state.height = height;
-    return this;
-  }
-
-  isIncoming() {
-    return this.state.isIncoming;
-  }
-
-  setIsIncoming(isIncoming) {
-    this.state.isIncoming = isIncoming;
-    return this;
-  }
-
-  getLiveTime() {
-    return this.state.liveTime;
-  }
-
-  setLiveTime(liveTime) {
-    this.state.liveTime = liveTime;
-    return this;
-  }
-
-  isLocalIp() {
-    return this.state.isLocalIp;
-  }
-
-  setIsLocalIp(isLocalIp) {
-    this.state.isLocalIp = isLocalIp;
-    return this;
-  }
-
-  isLocalHost() {
-    return this.state.isLocalHost;
-  }
-
-  setIsLocalHost(isLocalHost) {
-    this.state.isLocalHost = isLocalHost;
-    return this;
-  }
-
-  getNumReceives() {
-    return this.state.numReceives;
-  }
-
-  setNumReceives(numReceives) {
-    this.state.numReceives = numReceives;
-    return this;
-  }
-
-  getNumSends() {
-    return this.state.numSends;
-  }
-
-  setNumSends(numSends) {
-    this.state.numSends = numSends;
-    return this;
-  }
-
-  getReceiveIdleTime() {
-    return this.state.receiveIdleTime;
-  }
-
-  setReceiveIdleTime(receiveIdleTime) {
-    this.state.receiveIdleTime = receiveIdleTime;
-    return this;
-  }
-
-  getSendIdleTime() {
-    return this.state.sendIdleTime;
-  }
-
-  setSendIdleTime(sendIdleTime) {
-    this.state.sendIdleTime = sendIdleTime;
-    return this;
-  }
-
-  getState() {
-    return this.state.state;
-  }
-
-  setState(state) {
-    this.state.state = state;
-    return this;
-  }
-
-  getNumSupportFlags() {
-    return this.state.numSupportFlags;
-  }
-
-  setNumSupportFlags(numSupportFlags) {
-    this.state.numSupportFlags = numSupportFlags;
-    return this;
-  }
-  
-  getType() {
-    return this.state.type;
-  }
-  
-  setType(type) {
-    this.state.type = type;
-    return this;
-  }
-}
-
-module.exports = MoneroDaemonConnection;
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.6.7 on Thu Dec 30 2021 13:46:54 GMT-0500 (Eastern Standard Time) -
- - - - - diff --git a/docs/src_main_js_daemon_model_MoneroDaemonConnectionSpan.js.html b/docs/src_main_js_daemon_model_MoneroDaemonConnectionSpan.js.html deleted file mode 100644 index 188da7f47..000000000 --- a/docs/src_main_js_daemon_model_MoneroDaemonConnectionSpan.js.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - JSDoc: Source: src/main/js/daemon/model/MoneroDaemonConnectionSpan.js - - - - - - - - - - -
- -

Source: src/main/js/daemon/model/MoneroDaemonConnectionSpan.js

- - - - - - -
-
-
/**
- * Monero daemon connection span.
- */
-class MoneroDaemonConnectionSpan {
-  
-  constructor(state) {
-    this.state = Object.assign({}, state);
-  }
-  
-  toJson() {
-    return Object.assign({}, this.state);
-  }
-  
-  getConnectionId() {
-    return this.state.connectionId;
-  }
-
-  setConnectionId(connectionId) {
-    this.state.connectionId = connectionId;
-    return this;
-  }
-  
-  getNumBlocks() {
-    return this.state.numBlocks;
-  }
-
-  setNumBlocks(numBlocks) {
-    this.state.numBlocks = numBlocks;
-    return this;
-  }
-  
-  getRemoteAddress() {
-    return this.state.remoteAddress;
-  }
-
-  setRemoteAddress(remoteAddress) {
-    this.state.remoteAddress = remoteAddress;
-    return this;
-  }
-  
-  getRate() {
-    return this.state.rate;
-  }
-
-  setRate(rate) {
-    this.state.rate = rate;
-    return this;
-  }
-  
-  getSpeed() {
-    return this.state.speed;
-  }
-
-  setSpeed(speed) {
-    this.state.speed = speed;
-    return this;
-  }
-  
-  getSize() {
-    return this.state.size;
-  }
-  
-  setSize(size) {
-    this.state.size = size;
-    return this;
-  }
-  
-  getStartHeight() {
-    return this.state.startHeight;
-  }
-  
-  setStartHeight(startHeight) {
-    this.state.startHeight = startHeight;
-    return this;
-  }
-}
-
-module.exports = MoneroDaemonConnectionSpan;
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.6.7 on Thu Dec 30 2021 13:46:54 GMT-0500 (Eastern Standard Time) -
- - - - - diff --git a/docs/src_main_js_daemon_model_MoneroDaemonInfo.js.html b/docs/src_main_js_daemon_model_MoneroDaemonInfo.js.html deleted file mode 100644 index 661401fe6..000000000 --- a/docs/src_main_js_daemon_model_MoneroDaemonInfo.js.html +++ /dev/null @@ -1,374 +0,0 @@ - - - - - JSDoc: Source: src/main/js/daemon/model/MoneroDaemonInfo.js - - - - - - - - - - -
- -

Source: src/main/js/daemon/model/MoneroDaemonInfo.js

- - - - - - -
-
-
const BigInteger = require("../../common/biginteger").BigInteger;
-
-/**
- * Monero daemon info.
- */
-class MoneroDaemonInfo {
-  
-  constructor(state) {
-    state = Object.assign({}, state);
-    this.state = state;
-    
-    // deserialize BigIntegers
-    if (state.difficulty !== undefined && !(state.difficulty instanceof BigInteger)) state.difficulty = BigInteger.parse(state.difficulty);
-    if (state.cumulativeDifficulty !== undefined && !(state.cumulativeDifficulty instanceof BigInteger)) state.cumulativeDifficulty = BigInteger.parse(state.cumulativeDifficulty);
-    if (state.credits !== undefined && !(state.credits instanceof BigInteger)) state.credits = BigInteger.parse(state.credits);
-  }
-  
-  toJson() {
-    let json = Object.assign([], this.state);
-    if (json.difficulty) json.difficulty = json.difficulty.toString();
-    if (json.cumulativeDifficulty) json.cumulativeDifficulty = json.cumulativeDifficulty.toString();
-    if (json.credits) json.credits = json.credits.toString();
-    return json;
-  }
-  
-  getVersion() {
-    return this.state.version;
-  }
-  
-  setVersion(version) {
-    this.state.version = version;
-    return this;
-  }
-  
-  getNumAltBlocks() {
-    return this.state.numAltBlocks;
-  }
-  
-  setNumAltBlocks(numAltBlocks) {
-    this.state.numAltBlocks = numAltBlocks;
-    return this;
-  }
-  
-  getBlockSizeLimit() {
-    return this.state.blockSizeLimit;
-  }
-  
-  setBlockSizeLimit(blockSizeLimit) {
-    this.state.blockSizeLimit = blockSizeLimit;
-    return this;
-  }
-  
-  getBlockSizeMedian() {
-    return this.state.blockSizeMedian;
-  }
-  
-  setBlockSizeMedian(blockSizeMedian) {
-    this.state.blockSizeMedian = blockSizeMedian;
-    return this;
-  }
-  
-  getBlockWeightLimit() {
-    return this.state.blockWeightLimit;
-  }
-  
-  setBlockWeightLimit(blockWeightLimit) {
-    this.state.blockWeightLimit = blockWeightLimit;
-    return this;
-  }
-  
-  getBlockWeightMedian() {
-    return this.state.blockWeightMedian;
-  }
-  
-  setBlockWeightMedian(blockWeightMedian) {
-    this.state.blockWeightMedian = blockWeightMedian;
-    return this;
-  }
-  
-  getBootstrapDaemonAddress() {
-    return this.state.bootstrapDaemonAddress;
-  }
-  
-  setBootstrapDaemonAddress(bootstrapDaemonAddress) {
-    this.state.bootstrapDaemonAddress = bootstrapDaemonAddress;
-    return this;
-  }
-  
-  getDifficulty() {
-    return this.state.difficulty;
-  }
-  
-  setDifficulty(difficulty) {
-    this.state.difficulty = difficulty;
-    return this;
-  }
-  
-  getCumulativeDifficulty() {
-    return this.state.cumulativeDifficulty;
-  }
-  
-  setCumulativeDifficulty(cumulativeDifficulty) {
-    this.state.cumulativeDifficulty = cumulativeDifficulty;
-    return this;
-  }
-  
-  getFreeSpace() {
-    return this.state.freeSpace;
-  }
-  
-  setFreeSpace(freeSpace) {
-    this.state.freeSpace = freeSpace;
-    return this;
-  }
-  
-  getNumOfflinePeers() {
-    return this.state.numOfflinePeers;
-  }
-  
-  setNumOfflinePeers(numOfflinePeers) {
-    this.state.numOfflinePeers = numOfflinePeers;
-    return this;
-  }
-  
-  getNumOnlinePeers() {
-    return this.state.numOnlinePeers;
-  }
-  
-  setNumOnlinePeers(numOnlinePeers) {
-    this.state.numOnlinePeers = numOnlinePeers;
-    return this;
-  }
-  
-  getHeight() {
-    return this.state.height;
-  }
-  
-  setHeight(height) {
-    this.state.height = height;
-    return this;
-  }
-  
-  getHeightWithoutBootstrap() {
-    return this.state.heightWithoutBootstrap;
-  }
-  
-  setHeightWithoutBootstrap(heightWithoutBootstrap) {
-    this.state.heightWithoutBootstrap = heightWithoutBootstrap;
-    return this;
-  }
-  
-  getNetworkType() {
-    return this.state.networkType;
-  }
-
-  setNetworkType(networkType) {
-    this.state.networkType = networkType;
-    return this;
-  }
-
-  isOffline() {
-    return this.state.isOffline;
-  }
-  
-  setIsOffline(isOffline) {
-    this.state.isOffline = isOffline;
-    return this;
-  }
-  
-  getNumIncomingConnections() {
-    return this.state.numIncomingConnections;
-  }
-  
-  setNumIncomingConnections(numIncomingConnections) {
-    this.state.numIncomingConnections = numIncomingConnections;
-    return this;
-  }
-  
-  getNumOutgoingConnections() {
-    return this.state.numOutgoingConnections;
-  }
-  
-  setNumOutgoingConnections(numOutgoingConnections) {
-    this.state.numOutgoingConnections = numOutgoingConnections;
-    return this;
-  }
-  
-  getNumRpcConnections() {
-    return this.state.numRpcConnections;
-  }
-  
-  setNumRpcConnections(numRpcConnections) {
-    this.state.numRpcConnections = numRpcConnections;
-    return this;
-  }
-  
-  getStartTimestamp() {
-    return this.state.startTimestamp;
-  }
-  
-  setStartTimestamp(startTimestamp) {
-    this.state.startTimestamp = startTimestamp;
-    return this;
-  }
-  
-  getAdjustedTimestamp() {
-    return this.state.adjustedTimestamp;
-  }
-  
-  setAdjustedTimestamp(adjustedTimestamp) {
-    this.state.adjustedTimestamp = adjustedTimestamp;
-    return this;
-  }
-  
-  getTarget() {
-    return this.state.target;
-  }
-  
-  setTarget(target) {
-    this.state.target = target;
-    return this;
-  }
-  
-  getTargetHeight() {
-    return this.state.targetHeight;
-  }
-  
-  setTargetHeight(targetHeight) {
-    this.state.targetHeight = targetHeight;
-    return this;
-  }
-  
-  getTopBlockHash() {
-    return this.state.topBlockHash;
-  }
-  
-  setTopBlockHash(topBlockHash) {
-    this.state.topBlockHash = topBlockHash;
-    return this;
-  }
-  
-  getNumTxs() {
-    return this.state.numTxs;
-  }
-  
-  setNumTxs(numTxs) {
-    this.state.numTxs = numTxs;
-    return this;
-  }
-  
-  getNumTxsPool() {
-    return this.state.numTxsPool;
-  }
-  
-  setNumTxsPool(numTxsPool) {
-    this.state.numTxsPool = numTxsPool;
-    return this;
-  }
-  
-  getWasBootstrapEverUsed() {
-    return this.state.wasBootstrapEverUsed;
-  }
-  
-  setWasBootstrapEverUsed(wasBootstrapEverUsed) {
-    this.state.wasBootstrapEverUsed = wasBootstrapEverUsed;
-    return this;
-  }
-  
-  getDatabaseSize() {
-    return this.state.databaseSize;
-  }
-  
-  setDatabaseSize(databaseSize) {
-    this.state.databaseSize = databaseSize;
-    return this;
-  }
-  
-  getUpdateAvailable() {
-    return this.state.updateAvailable;
-  }
-  
-  setUpdateAvailable(updateAvailable) {
-    this.state.updateAvailable = updateAvailable;
-    return this;
-  }
-  
-  getCredits() {
-    return this.state.credits;
-  }
-  
-  setCredits(credits) {
-    this.state.credits = credits;
-    return this;
-  }
-  
-  isBusySyncing() {
-    return this.state.isBusySyncing;
-  }
-  
-  setIsBusySyncing(isBusySyncing) {
-    this.state.isBusySyncing = isBusySyncing;
-    return this;
-  }
-  
-  isSynchronized() {
-    return this.state.isSynchronized;
-  }
-  
-  setIsSynchronized(isSynchronized) {
-    this.state.isSynchronized = isSynchronized;
-    return this;
-  }
-  
-  isRestricted() {
-    return this.state.isRestricted;
-  }
-  
-  setIsRestricted(isRestricted) {
-    this.state.isRestricted = isRestricted;
-    return this;
-  }
-}
-
-module.exports = MoneroDaemonInfo;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_daemon_model_MoneroDaemonListener.js.html b/docs/src_main_js_daemon_model_MoneroDaemonListener.js.html deleted file mode 100644 index e8f5f6510..000000000 --- a/docs/src_main_js_daemon_model_MoneroDaemonListener.js.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - JSDoc: Source: src/main/js/daemon/model/MoneroDaemonListener.js - - - - - - - - - - -
- -

Source: src/main/js/daemon/model/MoneroDaemonListener.js

- - - - - - -
-
-
/**
- * Receives notifications as a daemon is updated.
- */
-class MoneroDaemonListener {
-  
-  /**
-   * Called when a new block is added to the chain.
-   * 
-   * @param {MoneroBlockHeader} header - the header of the block added to the chain
-   */
-  async onBlockHeader(header) {
-    this.lastHeader = header;
-  }
-  
-  /**
-   * Get the last notified block header.
-   * 
-   * @return {MoneroBlockHeader} the last notified block header
-   */
-  getLastBlockHeader() {
-    return this.lastHeader;
-  }
-}
-
-module.exports = MoneroDaemonListener;
-
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_daemon_model_MoneroDaemonPeer.js.html b/docs/src_main_js_daemon_model_MoneroDaemonPeer.js.html deleted file mode 100644 index fd57e0ed7..000000000 --- a/docs/src_main_js_daemon_model_MoneroDaemonPeer.js.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - JSDoc: Source: src/main/js/daemon/model/MoneroDaemonPeer.js - - - - - - - - - - -
- -

Source: src/main/js/daemon/model/MoneroDaemonPeer.js

- - - - - - -
-
-
const BigInteger = require("../../common/biginteger").BigInteger;
-
-/**
- * Models a peer to the daemon.
- */
-class MoneroDaemonPeer {
-  
-  constructor(state) {
-    this.state = Object.assign({}, state);
-    if (this.state.rpcCreditsPerHash !== undefined && !(this.state.rpcCreditsPerHash instanceof BigInteger)) this.state.rpcCreditsPerHash = BigInteger.parse(this.state.rpcCreditsPerHash);
-  }
-  
-  toJson() {
-    let json = Object.assign({}, this.state);
-    if (json.rpcCreditsPerHash) json.rpcCreditsPerHash = json.rpcCreditsPerHash.toString();
-    return json;
-  }
-  
-  getId() {
-    return this.state.id;
-  }
-
-  setId(id) {
-    this.state.id = id;
-    return this;
-  }
-
-  getAddress() {
-    return this.state.address;
-  }
-
-  setAddress(address) {
-    this.state.address = address;
-    return this;
-  }
-
-  getHost() {
-    return this.state.host;
-  }
-
-  setHost(host) {
-    this.state.host = host;
-    return this;
-  }
-
-  getPort() {
-    return this.state.port;
-  }
-
-  setPort(port) {
-    this.state.port = port;
-    return this;
-  }
-  
-  /**
-   * Indicates if the peer was online when last checked (aka "white listed" as
-   * opposed to "gray listed").
-   * 
-   * @return {boolean} true if peer was online when last checked, false otherwise
-   */
-  isOnline() {
-    return this.state.isOnline;
-  }
-  
-  setIsOnline(isOnline) {
-    this.state.isOnline = isOnline;
-    return this;
-  }
-  
-  getLastSeenTimestamp() {
-    return this.state.lastSeenTimestamp;
-  }
-  
-  setLastSeenTimestamp(lastSeenTimestamp) {
-    this.state.lastSeenTimestamp = lastSeenTimestamp;
-    return this;
-  }
-  
-  getPruningSeed() {
-    return this.state.pruningSeed;
-  }
-  
-  setPruningSeed(pruningSeed) {
-    this.state.pruningSeed = pruningSeed;
-    return this;
-  }
-  
-  getRpcPort() {
-    return this.state.rpcPort;
-  }
-
-  setRpcPort(rpcPort) {
-    this.state.rpcPort = rpcPort;
-    return this;
-  }
-  
-  getRpcCreditsPerHash() {
-    return this.state.rpcCreditsPerHash;
-  }
-  
-  setRpcCreditsPerHash(rpcCreditsPerHash) {
-    this.state.rpcCreditsPerHash = rpcCreditsPerHash;
-    return this;
-  }
-}
-
-module.exports = MoneroDaemonPeer;
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.6.7 on Thu Dec 30 2021 13:46:54 GMT-0500 (Eastern Standard Time) -
- - - - - diff --git a/docs/src_main_js_daemon_model_MoneroDaemonSyncInfo.js.html b/docs/src_main_js_daemon_model_MoneroDaemonSyncInfo.js.html deleted file mode 100644 index f09781dee..000000000 --- a/docs/src_main_js_daemon_model_MoneroDaemonSyncInfo.js.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - JSDoc: Source: src/main/js/daemon/model/MoneroDaemonSyncInfo.js - - - - - - - - - - -
- -

Source: src/main/js/daemon/model/MoneroDaemonSyncInfo.js

- - - - - - -
-
-
const BigInteger = require("../../common/biginteger").BigInteger;
-const MoneroConnectionSpan = require("./MoneroConnectionSpan");
-const MoneroPeer = require("./MoneroPeer");
-
-/**
- * Models daemon synchronization information.
- */
-class MoneroDaemonSyncInfo {
-  
-  constructor(state) {
-    
-    // copy state
-    state = Object.assign({}, state);
-    
-    // deserialize if necessary
-    if (state.peers) {
-      for (let i = 0; i < state.peers.length; i++) {
-        if (!(state.peers[i] instanceof MoneroPeer)) {
-          state.peers[i] = new MoneroPeer(state.peers[i]);
-        }
-      }
-    }
-    if (state.spans) {
-      for (let i = 0; i < state.spans.length; i++) {
-        if (!(state.spans[i] instanceof MoneroConnectionSpan)) {
-          state.spans[i] = new MoneroConnectionSpan(state.spans[i]);
-        }
-      }
-    }
-    if (state.credits !== undefined && !(state.credits instanceof BigInteger)) state.credits = BigInteger.parse(state.credits);
-    
-    // assign internal state
-    this.state = state;
-  }
-  
-  toJson() {
-    let json = Object.assign({}, this.state);
-    if (json.peers) {
-      for (let i = 0; i < json.peers.length; i++) {
-        json.peers[i] = json.peers[i].toJson();
-      }
-    }
-    if (json.spans) {
-      for (let i = 0; i < json.spans.length; i++) {
-        json.spans[i] = json.spans[i].toJson();
-      }
-    }
-    if (json.credits) json.credits = json.credits.toString();
-    return json;
-  }
-  
-  getHeight() {
-    return this.state.height;
-  }
-  
-  setHeight(height) {
-    this.state.height = height;
-    return this;
-  }
-  
-  getPeers() {
-    return this.state.peers;
-  }
-  
-  setPeers(peers) {
-    this.state.peers = peers;
-    return this;
-  }
-  
-  getSpans() {
-    return this.state.spans;
-  }
-  
-  setSpans(spans) {
-    this.state.spans = spans;
-    return this;
-  }
-  
-  getTargetHeight() {
-    return this.state.targetHeight;
-  }
-  
-  setTargetHeight(targetHeight) {
-    this.state.targetHeight = targetHeight;
-    return this;
-  }
-  
-  getNextNeededPruningSeed() {
-    return this.state.nextNeededPruningSeed;
-  }
-  
-  setNextNeededPruningSeed(nextNeededPruningSeed) {
-    this.state.nextNeededPruningSeed = nextNeededPruningSeed;
-    return this;
-  }
-  
-  getOverview() {
-    return this.state.overview;
-  }
-  
-  setOverview(overview) {
-    this.state.overview = overview;
-    return this;
-  }
-  
-  getCredits() {
-    return this.state.credits;
-  }
-  
-  setCredits(credits) {
-    this.state.credits = credits;
-    return this;
-  }
-  
-  getTopBlockHash() {
-    return this.state.topBlockHash;
-  }
-  
-  setTopBlockHash(topBlockHash) {
-    this.state.topBlockHash = topBlockHash;
-    return this;
-  }
-}
-
-module.exports = MoneroDaemonSyncInfo;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_daemon_model_MoneroDaemonUpdateCheckResult.js.html b/docs/src_main_js_daemon_model_MoneroDaemonUpdateCheckResult.js.html deleted file mode 100644 index 4d07be84d..000000000 --- a/docs/src_main_js_daemon_model_MoneroDaemonUpdateCheckResult.js.html +++ /dev/null @@ -1,144 +0,0 @@ - - - - - JSDoc: Source: src/main/js/daemon/model/MoneroDaemonUpdateCheckResult.js - - - - - - - - - - -
- -

Source: src/main/js/daemon/model/MoneroDaemonUpdateCheckResult.js

- - - - - - -
-
-
/**
- * Models the result of checking for a daemon update.
- */
-class MoneroDaemonUpdateCheckResult {
-  
-  /**
-   * Deep copy constructor.
-   * 
-   * @param {MoneroDaemonUpdateCheckResult} is an existing result to deep copy from
-   */
-  constructor(result) {
-    this.state = {};
-    if (result !== undefined) {
-      assert(result instanceof MoneroDaemonUpdateCheckResult);
-      this.setIsUpdateAvailable(result.isUpdateAvailable());
-      this.setVersion(result.getVersion());
-      this.setHash(result.getHash());
-      this.setAutoUri(result.getAutoUri());
-      this.setUserUri(result.getUserUri());
-    }
-  }
-  
-  /**
-   * Indicates if an update is available.
-   * 
-   * @return {boolean} true if an update is available, false otherwise
-   */
-  isUpdateAvailable() {
-    return this.state.isUpdateAvailable;
-  }
-  
-  setIsUpdateAvailable(isUpdateAvailable) {
-    this.state.isUpdateAvailable = isUpdateAvailable;
-    return this;
-  }
-  
-  /**
-   * Get the update's version.
-   * 
-   * @return {string} is the update's version
-   */
-  getVersion() {
-    return this.state.version;
-  }
-  
-  setVersion(version) {
-    this.state.version = version;
-    return this;
-  }
-  
-  /**
-   * Get the update's hash.
-   * 
-   * @return {string} is the update's hash
-   */
-  getHash() {
-    return this.state.hash;
-  }
-  
-  setHash(hash) {
-    this.state.hash = hash;
-    return this;
-  }
-  
-  /**
-   * Get the uri to automatically download the update.
-   * 
-   * @return {string} is the uri to automatically download the update
-   */
-  getAutoUri() {
-    return this.state.autoUri;
-  }
-  
-  setAutoUri(autoUri) {
-    this.state.autoUri = autoUri;
-    return this;
-  }
-  
-  /**
-   * Get the uri to manually download the update.
-   * 
-   * @return {string} is the uri to manually download the update
-   */
-  getUserUri() {
-    return this.state.userUri;
-  }
-  
-  setUserUri(userUri) {
-    this.state.userUri = userUri;
-    return this;
-  }
-}
-
-module.exports = MoneroDaemonUpdateCheckResult;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_daemon_model_MoneroDaemonUpdateDownloadResult.js.html b/docs/src_main_js_daemon_model_MoneroDaemonUpdateDownloadResult.js.html deleted file mode 100644 index 8f5fbdb75..000000000 --- a/docs/src_main_js_daemon_model_MoneroDaemonUpdateDownloadResult.js.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - JSDoc: Source: src/main/js/daemon/model/MoneroDaemonUpdateDownloadResult.js - - - - - - - - - - -
- -

Source: src/main/js/daemon/model/MoneroDaemonUpdateDownloadResult.js

- - - - - - -
-
-
const MoneroDaemonUpdateCheckResult = require("./MoneroDaemonUpdateCheckResult");
-
-/**
- * Models the result of downloading an update.
- */
-class MoneroDaemonUpdateDownloadResult extends MoneroDaemonUpdateCheckResult {
-  
-  /**
-   * Construct a download result.
-   * 
-   * @param {MoneroDaemonUpdateCheckResult} is an existing result to copy from
-   */
-  constructor(result) {
-    super(result);
-  }
-  
-  /**
-   * Get the path the update was downloaded to.
-   * 
-   * @return {string} is the path the update was downloaded to
-   */
-  getDownloadPath() {
-    return this.state.downloadPath;
-  }
-  
-  setDownloadPath(downloadPath) {
-    this.state.downloadPath = downloadPath;
-    return this;
-  }
-}
-
-module.exports = MoneroDaemonUpdateDownloadResult;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_daemon_model_MoneroFeeEstimate.js.html b/docs/src_main_js_daemon_model_MoneroFeeEstimate.js.html deleted file mode 100644 index 0fc82fd82..000000000 --- a/docs/src_main_js_daemon_model_MoneroFeeEstimate.js.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - JSDoc: Source: src/main/js/daemon/model/MoneroFeeEstimate.js - - - - - - - - - - -
- -

Source: src/main/js/daemon/model/MoneroFeeEstimate.js

- - - - - - -
-
-
const BigInteger = require("../../common/biginteger").BigInteger;
-const GenUtils = require("../../common/GenUtils");
-
-/**
- * Models a Monero fee estimate.
- */
-class MoneroFeeEstimate {
-  
-  /**
-   * Construct the model.
-   * 
-   * @param {MoneroFeeEstimate|object} state - MoneroFeeEstimate or JS object
-   */
-  constructor(state) {
-    if (!state) this.state = {};
-    else if (state instanceof MoneroFeeEstimate) this.state = state.toJson();
-    else if (typeof state === "object") this.state = Object.assign({}, state);
-    else throw new MoneroError("state must be a MoneroFeeEstimate or JavaScript object");
-    
-    // deserialize
-    if (this.state.fee !== undefined && !(this.state.fee instanceof BigInteger)) this.state.fee = BigInteger.parse(this.state.fee);
-    if (this.state.fees !== undefined) {
-      for (let i = 0; i < this.state.fees.length; i++) {
-        if (!(this.state.fees[i] instanceof BigInteger)) this.state.fees[i] = BigInteger.parse(this.state.fees[i]);
-      }
-    }
-    if (this.state.quantizationMask !== undefined && !(this.state.quantizationMask instanceof BigInteger)) this.state.quantizationMask = BigInteger.parse(this.state.quantizationMask);
-  }
-
-  getFee() {
-    return this.state.fee;
-  }
-
-  setFee(fee) {
-    this.state.fee = fee;
-    return this;
-  }
-
-  getFees() {
-    return this.state.fees;
-  }
-
-  setFees(fees) {
-    this.state.fees = fees;
-    return this;
-  }
-  
-  getQuantizationMask() {
-    return this.state.quantizationMask;
-  }
-
-  setQuantizationMask(quantizationMask) {
-    this.state.quantizationMask = quantizationMask;
-    return this;
-  }
-  
-  copy() {
-    return new MoneroFeeEstimate(this);
-  }
-  
-  toJson() {
-    let json = Object.assign({}, this.state);
-    if (this.getFee()) json.fee = this.getFee().toString();
-    if (this.getFees()) for (let i = 0; i < this.getFees().length; i++) json.fees[i] = this.getFees()[i].toString();
-    if (this.getQuantizationMask()) json.quantizationMask = this.getQuantizationMask().toString();
-    return json;
-  }
-  
-  toString(indent = 0) {
-    let str = "";
-    let json = this.toJson();
-    str += GenUtils.kvLine("Fee", json.fee, indent);
-    str += GenUtils.kvLine("Fees", json.fees, indent);
-    str += GenUtils.kvLine("Quantization mask", json.quantizationMask, indent);
-    return str.slice(0, str.length - 1);  // strip last newline
-  }
-}
-
-module.exports = MoneroFeeEstimate;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_daemon_model_MoneroHardForkInfo.js.html b/docs/src_main_js_daemon_model_MoneroHardForkInfo.js.html deleted file mode 100644 index 446e355df..000000000 --- a/docs/src_main_js_daemon_model_MoneroHardForkInfo.js.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - JSDoc: Source: src/main/js/daemon/model/MoneroHardForkInfo.js - - - - - - - - - - -
- -

Source: src/main/js/daemon/model/MoneroHardForkInfo.js

- - - - - - -
-
-
const BigInteger = require("../../common/biginteger").BigInteger;
-
-/**
- * Monero hard fork info.
- */
-class MoneroHardForkInfo {
-  
-  constructor(state) {
-    this.state = Object.assign({}, state);
-    if (this.state.credits !== undefined && !(this.state.credits instanceof BigInteger)) this.state.credits = BigInteger.parse(this.state.credits);
-  }
-  
-  toJson() {
-    let json = Object.assign({}, this.state);
-    if (json.credits) json.credits = json.credits.toString();
-    return json;
-  }
-  
-  getEarliestHeight() {
-    return this.state.earliestHeight;
-  }
-
-  setEarliestHeight(earliestHeight) {
-    this.state.earliestHeight = earliestHeight;
-    return this;
-  }
-
-  isEnabled() {
-    return this.state.isEnabled;
-  }
-
-  setIsEnabled(isEnabled) {
-    this.state.isEnabled = isEnabled;
-    return this;
-  }
-
-  getState() {
-    return this.state.state;
-  }
-
-  setState(state) {
-    this.state.state = state;
-    return this;
-  }
-
-  getThreshold() {
-    return this.state.threshold;
-  }
-
-  setThreshold(threshold) {
-    this.state.threshold = threshold;
-    return this;
-  }
-
-  getVersion() {
-    return this.state.version;
-  }
-
-  setVersion(version) {
-    this.state.version = version;
-    return this;
-  }
-
-  getNumVotes() {
-    return this.state.numVotes;
-  }
-
-  setNumVotes(numVotes) {
-    this.state.numVotes = numVotes;
-    return this;
-  }
-
-  getWindow() {
-    return this.state.window;
-  }
-
-  setWindow(window) {
-    this.state.window = window;
-    return this;
-  }
-
-  getVoting() {
-    return this.state.voting;
-  }
-
-  setVoting(voting) {
-    this.state.voting = voting;
-    return this;
-  }
-  
-  getCredits() {
-    return this.state.credits;
-  }
-  
-  setCredits(credits) {
-    this.state.credits = credits;
-    return this;
-  }
-  
-  getTopBlockHash() {
-    return this.state.topBlockHash;
-  }
-  
-  setTopBlockHash(topBlockHash) {
-    this.state.topBlockHash = topBlockHash;
-    return this;
-  }
-}
-
-module.exports = MoneroHardForkInfo;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_daemon_model_MoneroKeyImage.js.html b/docs/src_main_js_daemon_model_MoneroKeyImage.js.html deleted file mode 100644 index 1eb7c3026..000000000 --- a/docs/src_main_js_daemon_model_MoneroKeyImage.js.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - JSDoc: Source: src/main/js/daemon/model/MoneroKeyImage.js - - - - - - - - - - -
- -

Source: src/main/js/daemon/model/MoneroKeyImage.js

- - - - - - -
-
-
const assert = require("assert");
-const GenUtils = require("../../common/GenUtils");
-
-/**
- * Models a Monero key image.
- */
-class MoneroKeyImage {
-  
-  /**
-   * Construct the model.
-   * 
-   * @param {MoneroKeyImage|object|string} stateOrHex is a MoneroKeyImage, JS object, or hex string to initialize from (optional)
-   * @param {string} signature is the key image's signature
-   */
-  constructor(stateOrHex, signature) {
-    if (!stateOrHex) this.state = {};
-    else if (stateOrHex instanceof MoneroKeyImage) this.state = stateOrHex.toJson();
-    else if (typeof stateOrHex === "object") this.state = Object.assign({}, stateOrHex);
-    else if (typeof stateOrHex === "string") {
-      this.state = {};
-      this.setHex(stateOrHex);
-      this.setSignature(signature);
-    } else {
-      throw new MoneroError("stateOrHex must be a MoneroKeyImage, JavaScript object, or string");
-    }
-  }
-
-  getHex() {
-    return this.state.hex;
-  }
-
-  setHex(hex) {
-    this.state.hex = hex;
-    return this;
-  }
-
-  getSignature() {
-    return this.state.signature;
-  }
-
-  setSignature(signature) {
-    this.state.signature = signature;
-    return this;
-  }
-  
-  copy() {
-    return new MoneroKeyImage(this);
-  }
-  
-  toJson() {
-    return Object.assign({}, this.state);
-  }
-  
-  merge(keyImage) {
-    assert(keyImage instanceof MoneroKeyImage);
-    if (keyImage === this) return this;
-    this.setHex(GenUtils.reconcile(this.getHex(), keyImage.getHex()));
-    this.setSignature(GenUtils.reconcile(this.getSignature(), keyImage.getSignature()));
-    return this;
-  }
-  
-  toString(indent = 0) {
-    let str = "";
-    str += GenUtils.kvLine("Hex", this.getHex(), indent);
-    str += GenUtils.kvLine("Signature", this.getSignature(), indent);
-    return str.slice(0, str.length - 1);  // strip last newline
-  }
-}
-
-module.exports = MoneroKeyImage;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_daemon_model_MoneroKeyImageSpentStatus.js.html b/docs/src_main_js_daemon_model_MoneroKeyImageSpentStatus.js.html deleted file mode 100644 index fb7b792f8..000000000 --- a/docs/src_main_js_daemon_model_MoneroKeyImageSpentStatus.js.html +++ /dev/null @@ -1,73 +0,0 @@ - - - - - JSDoc: Source: src/main/js/daemon/model/MoneroKeyImageSpentStatus.js - - - - - - - - - - -
- -

Source: src/main/js/daemon/model/MoneroKeyImageSpentStatus.js

- - - - - - -
-
-
/**
- * Enumerate key image spent statuses.
- * 
- * @hideconstructor
- */
-class MoneroKeyImageSpentStatus {}
-
-/**
- * Key image is not spent (value=0).
- */
-MoneroKeyImageSpentStatus.NOT_SPENT = 0;
-
-/**
- * Key image is confirmed (value=1).
- */
-MoneroKeyImageSpentStatus.CONFIRMED = 1;
-
-/**
- * Key image is in the pool (value=2).
- */
-MoneroKeyImageSpentStatus.TX_POOL = 2;
-
-module.exports = MoneroKeyImageSpentStatus;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_daemon_model_MoneroMinerTxSum.js.html b/docs/src_main_js_daemon_model_MoneroMinerTxSum.js.html deleted file mode 100644 index 2f006d544..000000000 --- a/docs/src_main_js_daemon_model_MoneroMinerTxSum.js.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - JSDoc: Source: src/main/js/daemon/model/MoneroMinerTxSum.js - - - - - - - - - - -
- -

Source: src/main/js/daemon/model/MoneroMinerTxSum.js

- - - - - - -
-
-
const BigInteger = require("../../common/biginteger").BigInteger;
-
-/**
- * Model for the summation of miner emissions and fees.
- */
-class MoneroMinerTxSum {
-  
-  constructor(state) {
-    state = Object.assign({}, state);
-    this.state = state;
-    
-    // deserialize BigIntegers
-    if (state.emissionSum !== undefined && !(state.emissionSum instanceof BigInteger)) state.emissionSum = BigInteger.parse(state.emissionSum);
-    if (state.feeSum !== undefined && !(state.feeSum instanceof BigInteger)) state.feeSum = BigInteger.parse(state.feeSum);
-  }
-  
-  toJson() {
-    let json = Object.assign({}, this.state);
-    if (this.getEmissionSum()) json.emissionSum = this.getEmissionSum().toString();
-    if (this.getFeeSum()) json.feeSum = this.getFeeSum().toString();
-    return json;
-  }
-  
-  getEmissionSum() {
-    return this.state.emissionSum;
-  }
-  
-  setEmissionSum(emissionSum) {
-    this.state.emissionSum = emissionSum;
-    return this;
-  }
-  
-  getFeeSum() {
-    return this.state.feeSum;
-  }
-  
-  setFeeSum(feeSum) {
-    this.state.feeSum = feeSum;
-    return this;
-  }
-}
-
-module.exports = MoneroMinerTxSum;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_daemon_model_MoneroMiningStatus.js.html b/docs/src_main_js_daemon_model_MoneroMiningStatus.js.html deleted file mode 100644 index 3d48b27f3..000000000 --- a/docs/src_main_js_daemon_model_MoneroMiningStatus.js.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - JSDoc: Source: src/main/js/daemon/model/MoneroMiningStatus.js - - - - - - - - - - -
- -

Source: src/main/js/daemon/model/MoneroMiningStatus.js

- - - - - - -
-
-
/**
- * Models daemon mining status.
- */
-class MoneroMiningStatus {
-  
-  constructor(state) {
-    if (!state) state = {};
-    else if (state instanceof MoneroMiningStatus) state = state.toJson();
-    else if (typeof state === "object") state = Object.assign({}, state);
-    else throw new MoneroError("state must be a MoneroMiningStatus or JavaScript object");
-    this.state = state;
-  }
-  
-  toJson() {
-    return Object.assign({}, this.state);
-  }
-  
-  isActive() {
-    return this.state.isActive;
-  }
-  
-  setIsActive(isActive) {
-    this.state.isActive = isActive;
-    return this;
-  }
-  
-  getAddress() {
-    return this.state.address;
-  }
-  
-  setAddress(address) {
-    this.state.address = address;
-    return this;
-  }
-  
-  getSpeed() {
-    return this.state.speed;
-  }
-  
-  setSpeed(speed) {
-    this.state.speed = speed;
-    return this;
-  }
-  
-  getNumThreads() {
-    return this.state.numThreads;
-  }
-  
-  setNumThreads(numThreads) {
-    this.state.numThreads = numThreads;
-    return this;
-  }
-  
-  isBackground() {
-    return this.state.isBackground;
-  }
-  
-  setIsBackground(isBackground) {
-    this.state.isBackground = isBackground;
-    return this;
-  }
-}
-
-module.exports = MoneroMiningStatus;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_daemon_model_MoneroNetworkType.js.html b/docs/src_main_js_daemon_model_MoneroNetworkType.js.html deleted file mode 100644 index 35b5682d4..000000000 --- a/docs/src_main_js_daemon_model_MoneroNetworkType.js.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - JSDoc: Source: src/main/js/daemon/model/MoneroNetworkType.js - - - - - - - - - - -
- -

Source: src/main/js/daemon/model/MoneroNetworkType.js

- - - - - - -
-
-
const MoneroError = require("../../common/MoneroError");
-
-/**
- * Defines the Monero network types (mainnet, testnet, and stagenet).
- * 
- * @hideconstructor
- */
-class MoneroNetworkType {
-  
-  /**
-   * Validates the given network type.
-   * 
-   * @param {int} networkType - the network type to validate as a numeric
-   */
-  static validate(networkType) {
-    if (networkType !== 0 && networkType !== 1 && networkType !== 2) throw new MoneroError("Network type is invalid: " + networkType);
-  }
-  
-  /**
-   * Indicates if the given network type is valid or not.
-   * 
-   * @param {int} networkType - the network type to validate as a numeric
-   * @return {boolean} true if the network type is valid, false otherwise
-   */
-  static isValid(networkType) {
-    return networkType === 0 || networkType === 1 || networkType === 2;
-  }
-  
-  /**
-   * Parse the given string as a network type.
-   * 
-   * @param {string} networkTypeStr - "mainnet", "testnet", or "stagenet" (case insensitive)
-   * @return {int} the network type as a numeric
-   */
-  static parse(networkTypeStr) {
-    let str = ("" + networkTypeStr).toLowerCase();
-    switch (str) {
-      case "mainnet": return MoneroNetworkType.MAINNET;
-      case "testnet": return MoneroNetworkType.TESTNET;
-      case "stagenet": return MoneroNetworkType.STAGENET;
-      default: throw new MoneroError("Invalid network type to parse: '" + networkTypeStr + "'");
-    }
-  }
-  
-  /**
-   * Get the network type in human-readable form.
-   *
-   * @return {string} the network type in human-readable form
-   */
-  static toString(networkType) {
-    if (networkType === 0) return "mainnet";
-    if (networkType === 1) return "testnet";
-    if (networkType === 2) return "stagenet";
-    throw new MoneroError("Invalid network type: " + networkType);
-  }
-}
-
-/**
- * Mainnet (value=0).
- */
-MoneroNetworkType.MAINNET = 0;
-
-/**
- * Testnet (value=1).
- */
-MoneroNetworkType.TESTNET = 1;
-
-/**
- * Stagnet (value=2).
- */
-MoneroNetworkType.STAGENET = 2;
-
-module.exports = MoneroNetworkType;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_daemon_model_MoneroOutput.js.html b/docs/src_main_js_daemon_model_MoneroOutput.js.html deleted file mode 100644 index 12a2d6f4e..000000000 --- a/docs/src_main_js_daemon_model_MoneroOutput.js.html +++ /dev/null @@ -1,181 +0,0 @@ - - - - - JSDoc: Source: src/main/js/daemon/model/MoneroOutput.js - - - - - - - - - - -
- -

Source: src/main/js/daemon/model/MoneroOutput.js

- - - - - - -
-
-
const assert = require("assert");
-const BigInteger = require("../../common/biginteger").BigInteger;
-const GenUtils = require("../../common/GenUtils");
-const MoneroKeyImage = require("./MoneroKeyImage");
-
-/**
- * Models a Monero transaction output.
- * 
- * @class
- */
-class MoneroOutput {
-  
-  /**
-   * Construct the model.
-   * 
-   * @param {MoneroOutput|object} state is existing state to initialize from (optional)
-   */
-  constructor(state) {
-    
-    // initialize internal state
-    if (!state) state = {};
-    else if (state instanceof MoneroOutput) state = state.toJson();
-    else if (typeof state === "object") state = Object.assign({}, state);
-    else throw new MoneroError("state must be a MoneroOutput or JavaScript object");
-    this.state = state;
-    
-    // deserialize fields if necessary
-    if (state.amount !== undefined && !(state.amount instanceof BigInteger)) state.amount = BigInteger.parse(state.amount);
-    if (state.keyImage && !(state.keyImage instanceof MoneroKeyImage)) state.keyImage = new MoneroKeyImage(state.keyImage);
-  }
-  
-  getTx() {
-    return this.state.tx;
-  }
-  
-  setTx(tx) {
-    this.state.tx = tx;
-    return this;
-  }
-  
-  getKeyImage() {
-    return this.state.keyImage;
-  }
-
-  setKeyImage(keyImage) {
-    assert(keyImage === undefined || keyImage instanceof MoneroKeyImage);
-    this.state.keyImage = keyImage;
-    return this;
-  }
-  
-  getAmount() {
-    return this.state.amount;
-  }
-
-  setAmount(amount) {
-    this.state.amount = amount;
-    return this;
-  }
-  
-  getIndex() {
-    return this.state.index;
-  }
-  
-  setIndex(index) {
-    this.state.index = index;
-    return this;
-  }
-  
-  getRingOutputIndices() {
-    return this.state.ringOutputIndices;
-  }
-  
-  setRingOutputIndices(ringOutputIndices) {
-    this.state.ringOutputIndices = ringOutputIndices;
-    return this;
-  }
-  
-  getStealthPublicKey() {
-    return this.state.stealthPublicKey;
-  }
-  
-  setStealthPublicKey(stealthPublicKey) {
-    this.state.stealthPublicKey = stealthPublicKey;
-    return this;
-  }
-  
-  copy() {
-    return new MoneroOutput(this);
-  }
-  
-  toJson() {
-    let json = Object.assign({}, this.state);
-    if (this.getAmount()) json.amount = this.getAmount() ? this.getAmount().toString() : undefined;
-    if (this.getKeyImage()) json.keyImage = this.getKeyImage() ? this.getKeyImage().toJson() : undefined;
-    delete json.tx;
-    return json;
-  }
-  
-  merge(output) {
-    assert(output instanceof MoneroOutput);
-    if (this === output) return this;
-    
-    // merge txs if they're different which comes back to merging outputs
-    if (this.getTx() !== output.getTx()) this.getTx().merge(output.getTx());
-    
-    // otherwise merge output fields
-    else {
-      if (this.getKeyImage() === undefined) this.setKeyImage(output.getKeyImage());
-      else if (output.getKeyImage() !== undefined) this.getKeyImage().merge(output.getKeyImage());
-      this.setAmount(GenUtils.reconcile(this.getAmount(), output.getAmount()));
-      this.setIndex(GenUtils.reconcile(this.getIndex(), output.getIndex()));
-    }
-
-    return this;
-  }
-  
-  toString(indent = 0) {
-    let str = "";
-    if (this.getKeyImage()) {
-      str += GenUtils.kvLine("Key image", "", indent);
-      str += this.getKeyImage().toString(indent + 1) + "\n";
-    }
-    str += GenUtils.kvLine("Amount", this.getAmount(), indent);
-    str += GenUtils.kvLine("Index", this.getIndex(), indent);
-    str += GenUtils.kvLine("Ring output indices", this.getRingOutputIndices(), indent);
-    str += GenUtils.kvLine("Stealth public key", this.getStealthPublicKey(), indent);
-    return str === "" ? str : str.slice(0, str.length - 1);  // strip last newline
-  }
-}
-
-module.exports = MoneroOutput;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_daemon_model_MoneroOutputHistogramEntry.js.html b/docs/src_main_js_daemon_model_MoneroOutputHistogramEntry.js.html deleted file mode 100644 index 49124cb7a..000000000 --- a/docs/src_main_js_daemon_model_MoneroOutputHistogramEntry.js.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - JSDoc: Source: src/main/js/daemon/model/MoneroOutputHistogramEntry.js - - - - - - - - - - -
- -

Source: src/main/js/daemon/model/MoneroOutputHistogramEntry.js

- - - - - - -
-
-
const BigInteger = require("../../common/biginteger").BigInteger;
-
-/**
- * Entry in a Monero output histogram (see get_output_histogram of Daemon RPC documentation).
- */
-class MoneroOutputHistogramEntry {
-  
-  constructor(state) {
-    this.state = Object.assign({}, state);
-    if (this.state.amount !== undefined && !(this.state.amount instanceof BigInteger)) this.state.amount = BigInteger.parse(this.state.amount);
-  }
-  
-  toJson() {
-    let json = Object.assign({}, this.state);
-    if (json.amount) json.amount = json.amount.toString();
-    return json;
-  }
-  
-  getAmount() {
-    return this.state.amount;
-  }
-  
-  setAmount(amount) {
-    this.state.amount = amount;
-    return this;
-  }
-
-  getNumInstances() {
-    return this.state.numInstances;
-  }
-
-  setNumInstances(numInstances) {
-    this.state.numInstances = numInstances;
-    return this;
-  }
-
-  getNumUnlockedInstances() {
-    return this.state.numUnlockedInstances;
-  }
-
-  setNumUnlockedInstances(numUnlockedInstances) {
-    this.state.numUnlockedInstances = numUnlockedInstances;
-    return this;
-  }
-
-  getNumRecentInstances() {
-    return this.state.numRecentInstances;
-  }
-
-  setNumRecentInstances(numRecentInstances) {
-    this.state.numRecentInstances = numRecentInstances;
-    return this;
-  }
-}
-
-module.exports = MoneroOutputHistogramEntry;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_daemon_model_MoneroPeer.js.html b/docs/src_main_js_daemon_model_MoneroPeer.js.html deleted file mode 100644 index b990d99b1..000000000 --- a/docs/src_main_js_daemon_model_MoneroPeer.js.html +++ /dev/null @@ -1,310 +0,0 @@ - - - - - JSDoc: Source: src/main/js/daemon/model/MoneroPeer.js - - - - - - - - - - -
- -

Source: src/main/js/daemon/model/MoneroPeer.js

- - - - - - -
-
-
const BigInteger = require("../../common/biginteger").BigInteger;
-
-/**
- * Models a peer to the daemon.
- */
-class MoneroPeer {
-  
-  constructor(state) {
-    this.state = Object.assign({}, state);
-    if (this.state.rpcCreditsPerHash !== undefined && !(this.state.rpcCreditsPerHash instanceof BigInteger)) this.state.rpcCreditsPerHash = BigInteger.parse(this.state.rpcCreditsPerHash);
-  }
-  
-  toJson() {
-    let json = Object.assign({}, this.state);
-    if (json.rpcCreditsPerHash) json.rpcCreditsPerHash = json.rpcCreditsPerHash.toString();
-    return json;
-  }
-  
-  getId() {
-    return this.state.id;
-  }
-
-  setId(id) {
-    this.state.id = id;
-    return this;
-  }
-
-  getAddress() {
-    return this.state.address;
-  }
-
-  setAddress(address) {
-    this.state.address = address;
-    return this;
-  }
-
-  getHost() {
-    return this.state.host;
-  }
-
-  setHost(host) {
-    this.state.host = host;
-    return this;
-  }
-
-  getPort() {
-    return this.state.port;
-  }
-
-  setPort(port) {
-    this.state.port = port;
-    return this;
-  }
-  
-  /**
-   * Indicates if the peer was online when last checked (aka "white listed" as
-   * opposed to "gray listed").
-   * 
-   * @return {boolean} true if peer was online when last checked, false otherwise
-   */
-  isOnline() {
-    return this.state.isOnline;
-  }
-  
-  setIsOnline(isOnline) {
-    this.state.isOnline = isOnline;
-    return this;
-  }
-  
-  getLastSeenTimestamp() {
-    return this.state.lastSeenTimestamp;
-  }
-  
-  setLastSeenTimestamp(lastSeenTimestamp) {
-    this.state.lastSeenTimestamp = lastSeenTimestamp;
-    return this;
-  }
-  
-  getPruningSeed() {
-    return this.state.pruningSeed;
-  }
-  
-  setPruningSeed(pruningSeed) {
-    this.state.pruningSeed = pruningSeed;
-    return this;
-  }
-  
-  getRpcPort() {
-    return this.state.rpcPort;
-  }
-
-  setRpcPort(rpcPort) {
-    this.state.rpcPort = rpcPort;
-    return this;
-  }
-  
-  getRpcCreditsPerHash() {
-    return this.state.rpcCreditsPerHash;
-  }
-  
-  setRpcCreditsPerHash(rpcCreditsPerHash) {
-    this.state.rpcCreditsPerHash = rpcCreditsPerHash;
-    return this;
-  }
-  
-    getId() {
-    return this.state.id;
-  }
-
-  setId(id) {
-    this.state.id = id;
-    return this;
-  }
-
-  getAvgDownload() {
-    return this.state.avgDownload;
-  }
-
-  setAvgDownload(avgDownload) {
-    this.state.avgDownload = avgDownload;
-    return this;
-  }
-
-  getAvgUpload() {
-    return this.state.avgUpload;
-  }
-
-  setAvgUpload(avgUpload) {
-    this.state.avgUpload = avgUpload;
-    return this;
-  }
-
-  getCurrentDownload() {
-    return this.state.currentDownload;
-  }
-
-  setCurrentDownload(currentDownload) {
-    this.state.currentDownload = currentDownload;
-    return this;
-  }
-
-  getCurrentUpload() {
-    return this.state.currentUpload;
-  }
-
-  setCurrentUpload(currentUpload) {
-    this.state.currentUpload = currentUpload;
-    return this;
-  }
-
-  getHeight() {
-    return this.state.height;
-  }
-
-  setHeight(height) {
-    this.state.height = height;
-    return this;
-  }
-
-  isIncoming() {
-    return this.state.isIncoming;
-  }
-
-  setIsIncoming(isIncoming) {
-    this.state.isIncoming = isIncoming;
-    return this;
-  }
-
-  getLiveTime() {
-    return this.state.liveTime;
-  }
-
-  setLiveTime(liveTime) {
-    this.state.liveTime = liveTime;
-    return this;
-  }
-
-  isLocalIp() {
-    return this.state.isLocalIp;
-  }
-
-  setIsLocalIp(isLocalIp) {
-    this.state.isLocalIp = isLocalIp;
-    return this;
-  }
-
-  isLocalHost() {
-    return this.state.isLocalHost;
-  }
-
-  setIsLocalHost(isLocalHost) {
-    this.state.isLocalHost = isLocalHost;
-    return this;
-  }
-
-  getNumReceives() {
-    return this.state.numReceives;
-  }
-
-  setNumReceives(numReceives) {
-    this.state.numReceives = numReceives;
-    return this;
-  }
-
-  getNumSends() {
-    return this.state.numSends;
-  }
-
-  setNumSends(numSends) {
-    this.state.numSends = numSends;
-    return this;
-  }
-
-  getReceiveIdleTime() {
-    return this.state.receiveIdleTime;
-  }
-
-  setReceiveIdleTime(receiveIdleTime) {
-    this.state.receiveIdleTime = receiveIdleTime;
-    return this;
-  }
-
-  getSendIdleTime() {
-    return this.state.sendIdleTime;
-  }
-
-  setSendIdleTime(sendIdleTime) {
-    this.state.sendIdleTime = sendIdleTime;
-    return this;
-  }
-
-  getState() {
-    return this.state.state;
-  }
-
-  setState(state) {
-    this.state.state = state;
-    return this;
-  }
-
-  getNumSupportFlags() {
-    return this.state.numSupportFlags;
-  }
-
-  setNumSupportFlags(numSupportFlags) {
-    this.state.numSupportFlags = numSupportFlags;
-    return this;
-  }
-  
-  getType() {
-    return this.state.type;
-  }
-  
-  setType(type) {
-    this.state.type = type;
-    return this;
-  }
-}
-
-module.exports = MoneroPeer;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_daemon_model_MoneroPruneResult.js.html b/docs/src_main_js_daemon_model_MoneroPruneResult.js.html deleted file mode 100644 index 5c4d0dedc..000000000 --- a/docs/src_main_js_daemon_model_MoneroPruneResult.js.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - JSDoc: Source: src/main/js/daemon/model/MoneroPruneResult.js - - - - - - - - - - -
- -

Source: src/main/js/daemon/model/MoneroPruneResult.js

- - - - - - -
-
-
/**
- * Result of pruning the blockchain.
- */
-class MoneroPruneResult {
-  
-  constructor(state) {
-    state = Object.assign({}, state);
-    this.state = state;
-  }
-  
-  toJson() {
-    let json = Object.assign({}, this.state);
-    if (this.isPruned()) json.isPruned = this.isPruned();
-    if (this.getPruningSeed()) json.pruningSeed = this.getPruningSeed();
-    return json;
-  }
-  
-  isPruned() {
-    return this.state.isPruned;
-  }
-  
-  setIsPruned(isPruned) {
-    this.state.isPruned = isPruned;
-    return this;
-  }
-  
-  getPruningSeed() {
-    return this.state.pruningSeed;
-  }
-  
-  setPruningSeed(pruningSeed) {
-    this.state.pruningSeed = pruningSeed;
-    return this;
-  }
-}
-
-module.exports = MoneroPruneResult;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_daemon_model_MoneroSubmitTxResult.js.html b/docs/src_main_js_daemon_model_MoneroSubmitTxResult.js.html deleted file mode 100644 index 1cc8bd8b6..000000000 --- a/docs/src_main_js_daemon_model_MoneroSubmitTxResult.js.html +++ /dev/null @@ -1,208 +0,0 @@ - - - - - JSDoc: Source: src/main/js/daemon/model/MoneroSubmitTxResult.js - - - - - - - - - - -
- -

Source: src/main/js/daemon/model/MoneroSubmitTxResult.js

- - - - - - -
-
-
const BigInteger = require("../../common/biginteger").BigInteger;
-
-/**
- * Models the result from submitting a tx to a daemon.
- */
-class MoneroSubmitTxResult {
-  
-  constructor(state) {
-    state = Object.assign({}, state);
-    this.state = state;
-    
-    // deserialize BigIntegers
-    if (state.credits !== undefined && !(state.credits instanceof BigInteger)) state.credits = BigInteger.parse(state.credits);
-  }
-  
-  toJson() {
-    let json = Object.assign({}, this.state);
-    if (json.credits) json.credits = json.credits.toString();
-    return json;
-  }
-  
-  isGood() {
-    return this.state.isGood;
-  }
-  
-  setIsGood(isGood) {
-    this.state.isGood = isGood;
-    return this;
-  }
-  
-  isRelayed() {
-    return this.state.isRelayed;
-  }
-  
-  setIsRelayed(isRelayed) {
-    this.state.isRelayed = isRelayed;
-    return this;
-  }
-  
-  isDoubleSpendSeen() {
-    return this.state.isDoubleSpendSeen;
-  }
-  
-  setIsDoubleSpend(isDoubleSpendSeen) {
-    this.state.isDoubleSpendSeen = isDoubleSpendSeen
-    return this;
-  }
-  
-  isFeeTooLow() {
-    return this.state.isFeeTooLow;
-  }
-  
-  setIsFeeTooLow(isFeeTooLow) {
-    this.state.isFeeTooLow = isFeeTooLow;
-    return this;
-  }
-  
-  isMixinTooLow() {
-    return this.state.isMixinTooLow;
-  }
-  
-  setIsMixinTooLow(isMixinTooLow) {
-    this.state.isMixinTooLow = isMixinTooLow;
-    return this;
-  }
-  
-  hasInvalidInput() {
-    return this.state.hasInvalidInput;
-  }
-  
-  setHasInvalidInput(hasInvalidInput) {
-    this.state.hasInvalidInput = hasInvalidInput;
-    return this;
-  }
-  
-  hasInvalidOutput() {
-    return this.state.hasInvalidOutput;
-  }
-  
-  setHasInvalidOutput(hasInvalidOutput) {
-    this.state.hasInvalidOutput = hasInvalidOutput;
-    return this;
-  }
-  
-  hasTooFewOutputs() {
-    return this.state.hasTooFewOutputs;
-  }
-  
-  setHasTooFewOutputs(hasTooFewOutputs) {
-    this.state.hasTooFewOutputs = hasTooFewOutputs;
-    return this;
-  }
-  
-  isOverspend() {
-    return this.state.isOverspend;
-  }
-  
-  setIsOverspend(isOverspend) {
-    this.state.isOverspend = isOverspend;
-    return this;
-  }
-  
-  getReason() {
-    return this.state.reason;
-  }
-  
-  setReason(reason) {
-    this.state.reason = reason;
-    return this;
-  }
-  
-  isTooBig() {
-    return this.state.isTooBig;
-  }
-  
-  setIsTooBig(isTooBig) {
-    this.state.isTooBig = isTooBig;
-    return this;
-  }
-  
-  getSanityCheckFailed() {
-    return this.state.sanityCheckFailed;
-  }
-  
-  setSanityCheckFailed(sanityCheckFailed) {
-    this.state.sanityCheckFailed = sanityCheckFailed;
-    return this;
-  }
-  
-  getCredits() {
-    return this.state.credits;
-  }
-  
-  setCredits(credits) {
-    this.state.credits = credits;
-    return this;
-  }
-  
-  getTopBlockHash() {
-    return this.state.topBlockHash;
-  }
-  
-  setTopBlockHash(topBlockHash) {
-    this.state.topBlockHash = topBlockHash;
-    return this;
-  }
-
-  isTxExtraTooBig() {
-    return this.state.isTxExtraTooBig;
-  }
-  
-  setIsTxExtraTooBig(isTxExtraTooBig) {
-    this.state.isTxExtraTooBig = isTxExtraTooBig;
-    return this;
-  }
-}
-
-module.exports = MoneroSubmitTxResult;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_daemon_model_MoneroTx.js.html b/docs/src_main_js_daemon_model_MoneroTx.js.html deleted file mode 100644 index b6adb6331..000000000 --- a/docs/src_main_js_daemon_model_MoneroTx.js.html +++ /dev/null @@ -1,656 +0,0 @@ - - - - - JSDoc: Source: src/main/js/daemon/model/MoneroTx.js - - - - - - - - - - -
- -

Source: src/main/js/daemon/model/MoneroTx.js

- - - - - - -
-
-
const assert = require("assert");
-const BigInteger = require("../../common/biginteger").BigInteger;
-const GenUtils = require("../../common/GenUtils");
-const MoneroOutput = require("./MoneroOutput");
-
-/**
- * Represents a transaction on the Monero network.
- * 
- * @class
- */
-class MoneroTx {
-  
-  /**
-   * Construct the model.
-   * 
-   * @param {MoneroTx|object} state is existing state to initialize from (optional)
-   */
-  constructor(state) {
-    
-    // initialize internal state
-    if (!state) state = {};
-    else if (state instanceof MoneroTx) state = state.toJson();
-    else if (typeof state === "object") state = Object.assign({}, state);
-    else throw new MoneroError("state must be a MoneroTx or JavaScript object");
-    this.state = state;
-    
-    // deserialize BigIntegers
-    if (state.fee !== undefined && !(state.fee instanceof BigInteger)) state.fee = BigInteger.parse(state.fee);
-    if (state.unlockTime !== undefined && !(state.unlockTime instanceof BigInteger)) state.unlockTime = BigInteger.parse(state.unlockTime);
-    
-    // deserialize inputs
-    if (state.inputs) {
-      for (let i = 0; i < state.inputs.length; i++) {
-        if (!(state.inputs[i] instanceof MoneroOutput)) {
-          state.inputs[i] = new MoneroOutput(Object.assign(state.inputs[i], {tx: this}));
-        }
-      }
-    }
-    
-    // deserialize outputs
-    if (state.outputs) {
-      for (let i = 0; i < state.outputs.length; i++) {
-        if (!(state.outputs[i] instanceof MoneroOutput)) {
-          state.outputs[i] = new MoneroOutput(Object.assign(state.outputs[i], {tx: this}));
-        }
-      }
-    }
-  }
-  
-  getBlock() {
-    return this.state.block;
-  }
-  
-  setBlock(block) {
-    this.state.block = block;
-    return this;
-  }
-  
-  getHeight() {
-    return this.getBlock() === undefined ? undefined : this.getBlock().getHeight();
-  }
-  
-  getHash() {
-    return this.state.hash;
-  }
-  
-  setHash(hash) {
-    this.state.hash = hash;
-    return this;
-  }
-  
-  getVersion() {
-    return this.state.version;
-  }
-  
-  setVersion(version) {
-    this.state.version = version;
-    return this;
-  }
-  
-  isMinerTx() {
-    return this.state.isMinerTx;
-  }
-  
-  setIsMinerTx(miner) {
-    this.state.isMinerTx = miner;
-    return this;
-  }
-  
-  getPaymentId() {
-    return this.state.paymentId;
-  }
-  
-  setPaymentId(paymentId) {
-    this.state.paymentId = paymentId;
-    return this;
-  }
-  
-  getFee() {
-    return this.state.fee;
-  }
-  
-  setFee(fee) {
-    this.state.fee = fee;
-    return this;
-  }
-  
-  getRingSize() {
-    return this.state.ringSize;
-  }
-  
-  setRingSize(ringSize) {
-    this.state.ringSize = ringSize;
-    return this;
-  }
-  
-  getRelay() {
-    return this.state.relay;
-  }
-  
-  setRelay(relay) {
-    this.state.relay = relay;
-    return this;
-  }
-  
-  isRelayed() {
-    return this.state.isRelayed;
-  }
-  
-  setIsRelayed(isRelayed) {
-    this.state.isRelayed = isRelayed;
-    return this;
-  }
-  
-  isConfirmed() {
-    return this.state.isConfirmed;
-  }
-  
-  setIsConfirmed(isConfirmed) {
-    this.state.isConfirmed = isConfirmed;
-    return this;
-  }
-  
-  inTxPool() {
-    return this.state.inTxPool;
-  }
-  
-  setInTxPool(inTxPool) {
-    this.state.inTxPool = inTxPool;
-    return this;
-  }
-  
-  getNumConfirmations() {
-    return this.state.numConfirmations;
-  }
-  
-  setNumConfirmations(numConfirmations) {
-    this.state.numConfirmations = numConfirmations;
-    return this;
-  }
-  
-  /**
-   * Get the minimum height or timestamp for the transactions to unlock.
-   * 
-   * @return {BigInteger} the minimum height or timestamp for the transactin to unlock
-   */
-  getUnlockTime() {
-    return this.state.unlockTime;
-  }
-  
-  setUnlockTime(unlockTime) {
-    if (unlockTime !== undefined) {
-      if (typeof unlockTime === "number") unlockTime = "" + unlockTime;
-      if (!(unlockTime instanceof BigInteger)) {
-        try { unlockTime = BigInteger.parse(unlockTime); }
-        catch (err) { throw new MoneroError("Invalid unlock time: " + unlockTime); }
-      }
-    }
-    this.state.unlockTime = unlockTime;
-    return this;
-  }
-  
-  getLastRelayedTimestamp() {
-    return this.state.lastRelayedTimestamp;
-  }
-  
-  setLastRelayedTimestamp(lastRelayedTimestamp) {
-    this.state.lastRelayedTimestamp = lastRelayedTimestamp;
-    return this;
-  }
-  
-  getReceivedTimestamp() {
-    return this.state.receivedTimestamp;
-  }
-  
-  setReceivedTimestamp(receivedTimestamp) {
-    this.state.receivedTimestamp = receivedTimestamp;
-    return this;
-  }
-  
-  isDoubleSpendSeen() {
-    return this.state.isDoubleSpendSeen;
-  }
-  
-  setIsDoubleSpend(isDoubleSpendSeen) {
-    this.state.isDoubleSpendSeen = isDoubleSpendSeen;
-    return this;
-  }
-  
-  getKey() {
-    return this.state.key;
-  }
-  
-  setKey(key) {
-    this.state.key = key;
-    return this;
-  }
-  
-  /**
-   * Get full transaction hex.  Full hex = pruned hex + prunable hex.
-   * 
-   * @return {string} is full transaction hex
-   */
-  getFullHex() {
-    return this.state.fullHex;
-  }
-  
-  setFullHex(fullHex) {
-    this.state.fullHex = fullHex;
-    return this;
-  }
-  
-  /**
-   * Get pruned transaction hex.  Full hex = pruned hex + prunable hex.
-   * 
-   * @return {string} is pruned transaction hex
-   */
-  getPrunedHex() {
-    return this.state.prunedHex;
-  }
-  
-  setPrunedHex(prunedHex) {
-    this.state.prunedHex = prunedHex;
-    return this;
-  }
-  
-  /**
-   * Get prunable transaction hex which is hex that is removed from a pruned
-   * transaction. Full hex = pruned hex + prunable hex.
-   * 
-   * @return {string} is the prunable transaction hex
-   */
-  getPrunableHex() {
-    return this.state.prunableHex;
-  }
-  
-  setPrunableHex(prunableHex) {
-    this.state.prunableHex = prunableHex;
-    return this;
-  }
-  
-  getPrunableHash() {
-    return this.state.prunableHash;
-  }
-  
-  setPrunableHash(prunableHash) {
-    this.state.prunableHash = prunableHash;
-    return this;
-  }
-  
-  getSize() {
-    return this.state.size;
-  }
-  
-  setSize(size) {
-    this.state.size = size;
-    return this;
-  }
-  
-  getWeight() {
-    return this.state.weight;
-  }
-  
-  setWeight(weight) {
-    this.state.weight = weight;
-    return this;
-  }
-  
-  getInputs() {
-    return this.state.inputs;
-  }
-  
-  setInputs(inputs) {
-    this.state.inputs = inputs;
-    return this;
-  }
-  
-  getOutputs() {
-    return this.state.outputs;
-  }
-  
-  setOutputs(outputs) {
-    this.state.outputs = outputs;
-    return this;
-  }
-  
-  getOutputIndices() {
-    return this.state.outputIndices;
-  }
-  
-  setOutputIndices(outputIndices) {
-    this.state.outputIndices = outputIndices;
-    return this;
-  }
-  
-  getMetadata() {
-    return this.state.metadata;
-  }
-  
-  setMetadata(metadata) {
-    this.state.metadata = metadata;
-    return this;
-  }
-  
-  getExtra() {
-    return this.state.extra;
-  }
-  
-  setExtra(extra) {
-    this.state.extra = extra;
-    return this;
-  }
-
-  getRctSignatures() {
-    return this.state.rctSignatures;
-  }
-  
-  setRctSignatures(rctSignatures) {
-    this.state.rctSignatures = rctSignatures;
-    return this;
-  }
-  
-  getRctSigPrunable() {
-    return this.state.rctSigPrunable;
-  }
-  
-  setRctSigPrunable(rctSigPrunable) {
-    this.state.rctSigPrunable = rctSigPrunable;
-    return this;
-  }
-  
-  isKeptByBlock() {
-    return  this.state.isKeptByBlock;
-  }
-  
-  setIsKeptByBlock(isKeptByBlock) {
-    this.state.isKeptByBlock = isKeptByBlock;
-    return this;
-  }
-  
-  isFailed() {
-    return this.state.isFailed;
-  }
-  
-  setIsFailed(isFailed) {
-    this.state.isFailed = isFailed;
-    return this;
-  }
-  
-  getLastFailedHeight() {
-    return this.state.lastFailedHeight;
-  }
-  
-  setLastFailedHeight(lastFailedHeight) {
-    this.state.lastFailedHeight = lastFailedHeight;
-    return this;
-  }
-  
-  getLastFailedHash() {
-    return this.state.lastFailedHash;
-  }
-  
-  setLastFailedHash(lastFailedHash) {
-    this.state.lastFailedHash = lastFailedHash;
-    return this;
-  }
-  
-  getMaxUsedBlockHeight() {
-    return this.state.maxUsedBlockHeight;
-  }
-  
-  setMaxUsedBlockHeight(maxUsedBlockHeight) {
-    this.state.maxUsedBlockHeight = maxUsedBlockHeight;
-    return this;
-  }
-  
-  getMaxUsedBlockHash() {
-    return this.state.maxUsedBlockHash;
-  }
-  
-  setMaxUsedBlockHash(maxUsedBlockHash) {
-    this.state.maxUsedBlockHash = maxUsedBlockHash;
-    return this;
-  }
-  
-  getSignatures() {
-    return this.state.signatures;
-  }
-  
-  setSignatures(signatures) {
-    this.state.signatures = signatures;
-    return this;
-  }
-  
-  copy() {
-    return new MoneroTx(this);
-  }
-  
-  toJson() {
-    let json = Object.assign({}, this.state);
-    if (this.getFee()) json.fee = this.getFee().toString();
-    if (this.getUnlockTime()) json.unlockTime = this.getUnlockTime().toString();
-    if (this.getInputs()) {
-      json.inputs = [];
-      for (let input of this.getInputs()) json.inputs.push(input.toJson());
-    }
-    if (this.getOutputs()) {
-      json.outputs = [];
-      for (let output of this.getOutputs()) json.outputs.push(output.toJson());
-    }
-    if (this.getExtra()) json.extra = this.getExtra().slice();
-    delete json.block;  // do not serialize parent block
-    return json;
-  }
-  
-  /**
-   * Updates this transaction by merging the latest information from the given
-   * transaction.
-   * 
-   * @param tx is the transaction to update this transaction with
-   * @return {MoneroTx} this for method chaining
-   */
-  merge(tx) {
-    assert(tx instanceof MoneroTx);
-    if (this === tx) return this;
-    
-    // merge blocks if they're different
-    if (this.getBlock() !== tx.getBlock()) {
-      if (this.getBlock() === undefined) {
-        this.setBlock(tx.getBlock());
-        this.getBlock().getTxs[this.getBlock().getTxs().indexOf(tx)] = this; // update block to point to this tx
-      } else if (tx.getBlock() !== undefined) {
-        this.getBlock().merge(tx.getBlock()); // comes back to merging txs
-        return this;
-      }
-    }
-    
-    // otherwise merge tx fields
-    this.setHash(GenUtils.reconcile(this.getHash(), tx.getHash()));
-    this.setVersion(GenUtils.reconcile(this.getVersion(), tx.getVersion()));
-    this.setPaymentId(GenUtils.reconcile(this.getPaymentId(), tx.getPaymentId()));
-    this.setFee(GenUtils.reconcile(this.getFee(), tx.getFee()));
-    this.setRingSize(GenUtils.reconcile(this.getRingSize(), tx.getRingSize()));
-    this.setIsConfirmed(GenUtils.reconcile(this.isConfirmed(), tx.isConfirmed(), {resolveTrue: true})); // tx can become confirmed
-    this.setIsMinerTx(GenUtils.reconcile(this.isMinerTx(), tx.isMinerTx()));
-    this.setRelay(GenUtils.reconcile(this.getRelay(), tx.getRelay(), {resolveTrue: true}));       // tx can become relayed
-    this.setIsRelayed(GenUtils.reconcile(this.isRelayed(), tx.isRelayed(), {resolveTrue: true})); // tx can become relayed
-    this.setIsDoubleSpend(GenUtils.reconcile(this.isDoubleSpendSeen(), tx.isDoubleSpendSeen(), {resolveTrue: true})); // double spend can become seen
-    this.setKey(GenUtils.reconcile(this.getKey(), tx.getKey()));
-    this.setFullHex(GenUtils.reconcile(this.getFullHex(), tx.getFullHex()));
-    this.setPrunedHex(GenUtils.reconcile(this.getPrunedHex(), tx.getPrunedHex()));
-    this.setPrunableHex(GenUtils.reconcile(this.getPrunableHex(), tx.getPrunableHex()));
-    this.setPrunableHash(GenUtils.reconcile(this.getPrunableHash(), tx.getPrunableHash()));
-    this.setSize(GenUtils.reconcile(this.getSize(), tx.getSize()));
-    this.setWeight(GenUtils.reconcile(this.getWeight(), tx.getWeight()));
-    this.setOutputIndices(GenUtils.reconcile(this.getOutputIndices(), tx.getOutputIndices()));
-    this.setMetadata(GenUtils.reconcile(this.getMetadata(), tx.getMetadata()));
-    this.setExtra(GenUtils.reconcile(this.getExtra(), tx.getExtra()));
-    this.setRctSignatures(GenUtils.reconcile(this.getRctSignatures(), tx.getRctSignatures()));
-    this.setRctSigPrunable(GenUtils.reconcile(this.getRctSigPrunable(), tx.getRctSigPrunable()));
-    this.setIsKeptByBlock(GenUtils.reconcile(this.isKeptByBlock(), tx.isKeptByBlock()));
-    this.setIsFailed(GenUtils.reconcile(this.isFailed(), tx.isFailed(), {resolveTrue: true}));
-    this.setLastFailedHeight(GenUtils.reconcile(this.getLastFailedHeight(), tx.getLastFailedHeight()));
-    this.setLastFailedHash(GenUtils.reconcile(this.getLastFailedHash(), tx.getLastFailedHash()));
-    this.setMaxUsedBlockHeight(GenUtils.reconcile(this.getMaxUsedBlockHeight(), tx.getMaxUsedBlockHeight()));
-    this.setMaxUsedBlockHash(GenUtils.reconcile(this.getMaxUsedBlockHash(), tx.getMaxUsedBlockHash()));
-    this.setSignatures(GenUtils.reconcile(this.getSignatures(), tx.getSignatures()));
-    this.setUnlockTime(GenUtils.reconcile(this.getUnlockTime(), tx.getUnlockTime()));
-    this.setNumConfirmations(GenUtils.reconcile(this.getNumConfirmations(), tx.getNumConfirmations(), {resolveMax: true})); // num confirmations can increase
-    
-    // merge inputs
-    if (tx.getInputs()) {
-      for (let merger of tx.getInputs()) {
-        let merged = false;
-        merger.setTx(this);
-        if (!this.getInputs()) this.setInputs([]);
-        for (let mergee of this.getInputs()) {
-          if (mergee.getKeyImage().getHex() === merger.getKeyImage().getHex()) {
-            mergee.merge(merger);
-            merged = true;
-            break;
-          }
-        }
-        if (!merged) this.getInputs().push(merger);
-      }
-    }
-    
-    // merge outputs
-    if (tx.getOutputs()) {
-      for (let output of tx.getOutputs()) output.setTx(this);
-      if (!this.getOutputs()) this.setOutputs(tx.getOutputs());
-      else {
-        
-        // merge outputs if key image or stealth public key present, otherwise append
-        for (let merger of tx.getOutputs()) {
-          let merged = false;
-          merger.setTx(this);
-          for (let mergee of this.getOutputs()) {
-            if ((merger.getKeyImage() && mergee.getKeyImage().getHex() === merger.getKeyImage().getHex()) ||
-                (merger.getStealthPublicKey() && mergee.getStealthPublicKey() === merger.getStealthPublicKey())) {
-             mergee.merge(merger);
-             merged = true;
-             break;
-            }
-          }
-          if (!merged) this.getOutputs().push(merger); // append output
-        }
-      }
-    }
-    
-    // handle unrelayed -> relayed -> confirmed
-    if (this.isConfirmed()) {
-      this.setInTxPool(false);
-      this.setReceivedTimestamp(undefined);
-      this.setLastRelayedTimestamp(undefined);
-    } else {
-      this.setInTxPool(GenUtils.reconcile(this.inTxPool(), tx.inTxPool(), {resolveTrue: true})); // unrelayed -> tx pool
-      this.setReceivedTimestamp(GenUtils.reconcile(this.getReceivedTimestamp(), tx.getReceivedTimestamp(), {resolveMax: false})); // take earliest receive time
-      this.setLastRelayedTimestamp(GenUtils.reconcile(this.getLastRelayedTimestamp(), tx.getLastRelayedTimestamp(), {resolveMax: true}));  // take latest relay time
-    }
-    
-    return this;  // for chaining
-  }
-  
-  toString(indent = 0) {
-    let str = "";
-    str += GenUtils.getIndent(indent) + "=== TX ===\n";
-    str += GenUtils.kvLine("Tx hash", this.getHash(), indent);
-    str += GenUtils.kvLine("Height", this.getHeight(), indent);
-    str += GenUtils.kvLine("Version", this.getVersion(), indent);
-    str += GenUtils.kvLine("Is miner tx", this.isMinerTx(), indent);
-    str += GenUtils.kvLine("Payment ID", this.getPaymentId(), indent);
-    str += GenUtils.kvLine("Fee", this.getFee(), indent);
-    str += GenUtils.kvLine("Ring size", this.getRingSize(), indent);
-    str += GenUtils.kvLine("Relay", this.getRelay(), indent);
-    str += GenUtils.kvLine("Is relayed", this.isRelayed(), indent);
-    str += GenUtils.kvLine("Is confirmed", this.isConfirmed(), indent);
-    str += GenUtils.kvLine("In tx pool", this.inTxPool(), indent);
-    str += GenUtils.kvLine("Num confirmations", this.getNumConfirmations(), indent);
-    str += GenUtils.kvLine("Unlock time", this.getUnlockTime(), indent);
-    str += GenUtils.kvLine("Last relayed time", this.getLastRelayedTimestamp(), indent);
-    str += GenUtils.kvLine("Received time", this.getReceivedTimestamp(), indent);
-    str += GenUtils.kvLine("Is double spend", this.isDoubleSpendSeen(), indent);
-    str += GenUtils.kvLine("Key", this.getKey(), indent);
-    str += GenUtils.kvLine("Full hex", this.getFullHex(), indent);
-    str += GenUtils.kvLine("Pruned hex", this.getPrunedHex(), indent);
-    str += GenUtils.kvLine("Prunable hex", this.getPrunableHex(), indent);
-    str += GenUtils.kvLine("Prunable hash", this.getPrunableHash(), indent);
-    str += GenUtils.kvLine("Size", this.getSize(), indent);
-    str += GenUtils.kvLine("Weight", this.getWeight(), indent);
-    str += GenUtils.kvLine("Output indices", this.getOutputIndices(), indent);
-    str += GenUtils.kvLine("Metadata", this.getMetadata(), indent);
-    str += GenUtils.kvLine("Extra", this.getExtra(), indent);
-    str += GenUtils.kvLine("RCT signatures", this.getRctSignatures(), indent);
-    str += GenUtils.kvLine("RCT sig prunable", this.getRctSigPrunable(), indent);
-    str += GenUtils.kvLine("Kept by block", this.isKeptByBlock(), indent);
-    str += GenUtils.kvLine("Is failed", this.isFailed(), indent);
-    str += GenUtils.kvLine("Last failed height", this.getLastFailedHeight(), indent);
-    str += GenUtils.kvLine("Last failed hash", this.getLastFailedHash(), indent);
-    str += GenUtils.kvLine("Max used block height", this.getMaxUsedBlockHeight(), indent);
-    str += GenUtils.kvLine("Max used block hash", this.getMaxUsedBlockHash(), indent);
-    str += GenUtils.kvLine("Signatures", this.getSignatures(), indent);
-    if (this.getInputs()) {
-      str += GenUtils.kvLine("Inputs", "", indent);
-      for (let i = 0; i < this.getInputs().length; i++) {
-        str += GenUtils.kvLine(i + 1, "", indent + 1);
-        str += this.getInputs()[i].toString(indent + 2);
-        str += '\n'
-      }
-    }
-    if (this.getOutputs()) {
-      str += GenUtils.kvLine("Outputs", "", indent);
-      for (let i = 0; i < this.getOutputs().length; i++) {
-        str += GenUtils.kvLine(i + 1, "", indent + 1);
-        str += this.getOutputs()[i].toString(indent + 2);
-        str += '\n'
-      }
-    }
-    return str.slice(0, str.length - 1);  // strip last newline
-  }
-}
-
-// default payment id
-MoneroTx.DEFAULT_PAYMENT_ID = "0000000000000000";
-
-module.exports = MoneroTx;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_daemon_model_MoneroTxPoolStats.js.html b/docs/src_main_js_daemon_model_MoneroTxPoolStats.js.html deleted file mode 100644 index 0686091ff..000000000 --- a/docs/src_main_js_daemon_model_MoneroTxPoolStats.js.html +++ /dev/null @@ -1,190 +0,0 @@ - - - - - JSDoc: Source: src/main/js/daemon/model/MoneroTxPoolStats.js - - - - - - - - - - -
- -

Source: src/main/js/daemon/model/MoneroTxPoolStats.js

- - - - - - -
-
-
const BigInteger = require("../../common/biginteger").BigInteger;
-
-/**
- * Models transaction pool statistics.
- */
-class MoneroTxPoolStats {
-  
-  constructor(state) {
-    this.state = Object.assign({}, state);
-    if (this.state.feeTotal !== undefined && !(this.state.feeTotal instanceof BigInteger)) this.state.feeTotal = BigInteger.parse(this.state.feeTotal);
-    if (this.state.histo !== undefined && !(this.state.histo instanceof Map)) this.state.histo = new Map(JSON.parse(this.state.histo));
-  }
-  
-  toJson() {
-    let json = Object.assign({}, this.state);
-    if (json.feeTotal) json.feeTotal = json.feeTotal.toString();
-    if (json.histo) json.histo = JSON.stringify([...json.histo]); // convert map to array of key-value pairs then stringify
-    return json;
-  }
-  
-  getNumTxs() {
-    return this.state.numTxs;
-  }
-  
-  setNumTxs(numTxs) {
-    this.state.numTxs = numTxs;
-    return this;
-  }
-  
-  getNumNotRelayed() {
-    return this.state.numNotRelayed;
-  }
-  
-  setNumNotRelayed(numNotRelayed) {
-    this.state.numNotRelayed = numNotRelayed;
-    return this;
-  }
-  
-  getNumFailing() {
-    return this.state.numFailing;
-  }
-  
-  setNumFailing(numFailing) {
-    this.state.numFailing = numFailing;
-    return this;
-  }
-  
-  getNumDoubleSpends() {
-    return this.state.numDoubleSpends;
-  }
-  
-  setNumDoubleSpends(numDoubleSpends) {
-    this.state.numDoubleSpends = numDoubleSpends;
-    return this;
-  }
-  
-  getNum10m() {
-    return this.state.num10m;
-  }
-  
-  setNum10m(num10m) {
-    this.state.num10m = num10m;
-    return this;
-  }
-  
-  getFeeTotal() {
-    return this.state.feeTotal;
-  }
-  
-  setFeeTotal(feeTotal) {
-    this.state.feeTotal = feeTotal;
-    return this;
-  }
-  
-  getBytesMax() {
-    return this.state.bytesMax;
-  }
-  
-  setBytesMax(bytesMax) {
-    this.state.bytesMax = bytesMax;
-    return this;
-  }
-  
-  getBytesMed() {
-    return this.state.bytesMed;
-  }
-  
-  setBytesMed(bytesMed) {
-    this.state.bytesMed = bytesMed;
-    return this;
-  }
-  
-  getBytesMin() {
-    return this.state.bytesMin;
-  }
-  
-  setBytesMin(bytesMin) {
-    this.state.bytesMin = bytesMin;
-    return this;
-  }
-  
-  getBytesTotal() {
-    return this.state.bytesTotal;
-  }
-  
-  setBytesTotal(bytesTotal) {
-    this.state.bytesTotal = bytesTotal;
-    return this;
-  }
-  
-  // TODO: histo... what?
-  getHisto() {
-    return this.state.histo;
-  }
-  
-  setHisto(histo) {
-    this.state.histo = histo;
-    return this;
-  }
-  
-  getHisto98pc() {
-    return this.state.histo98pc;
-  }
-  
-  setHisto98pc(histo98pc) {
-    this.state.histo98pc = histo98pc;
-    return this;
-  }
-  
-  getOldestTimestamp() {
-    return this.state.oldestTimestamp;
-  }
-  
-  setOldestTimestamp(oldestTimestamp) {
-    this.state.oldestTimestamp = oldestTimestamp;
-    return this;
-  }
-}
-
-module.exports = MoneroTxPoolStats;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_daemon_model_MoneroVersion.js.html b/docs/src_main_js_daemon_model_MoneroVersion.js.html deleted file mode 100644 index 36813ee10..000000000 --- a/docs/src_main_js_daemon_model_MoneroVersion.js.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - JSDoc: Source: src/main/js/daemon/model/MoneroVersion.js - - - - - - - - - - -
- -

Source: src/main/js/daemon/model/MoneroVersion.js

- - - - - - -
-
-
/**
- * Models a Monero version.
- */
-class MoneroVersion {
-  
-  /**
-   * Construct the model.
-   * 
-   * @param number is the version number
-   * @param isRelease indicates if this version is a release
-   */
-  constructor(number, isRelease) {
-    this.state = {};
-    this.state.number = number;
-    this.state.isRelease = isRelease;
-  }
-
-  getNumber() {
-    return this.state.number;
-  }
-
-  setNumber(number) {
-    this.state.number = number;
-    return this;
-  }
-
-  isRelease() {
-    return this.state.isRelease;
-  }
-
-  setIsRelease(isRelease) {
-    this.state.isRelease = isRelease;
-    return this;
-  }
-  
-  copy() {
-    return new MoneroKeyImage(this);
-  }
-  
-  toJson() {
-    return Object.assign({}, this.state);
-  }
-}
-
-module.exports = MoneroVersion;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_wallet_MoneroWallet.js.html b/docs/src_main_js_wallet_MoneroWallet.js.html deleted file mode 100644 index da552e79d..000000000 --- a/docs/src_main_js_wallet_MoneroWallet.js.html +++ /dev/null @@ -1,1468 +0,0 @@ - - - - - JSDoc: Source: src/main/js/wallet/MoneroWallet.js - - - - - - - - - - -
- -

Source: src/main/js/wallet/MoneroWallet.js

- - - - - - -
-
-
const assert = require("assert");
-const MoneroBlock = require("../daemon/model/MoneroBlock");
-const BigInteger = require("../common/biginteger").BigInteger;
-const MoneroConnectionManagerListener = require("../common/MoneroConnectionManagerListener")
-const MoneroError = require("../common/MoneroError");
-const MoneroOutputQuery = require("./model/MoneroOutputQuery");
-const MoneroTransferQuery = require("./model/MoneroTransferQuery");
-const MoneroTxConfig = require("./model/MoneroTxConfig");
-const MoneroTxQuery = require("./model/MoneroTxQuery");
-const MoneroTxSet = require("./model/MoneroTxSet");
-
-/**
- * Copyright (c) woodser
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-/**
- * Monero wallet interface and default implementations.
- * 
- * @interface
- */
-class MoneroWallet {
-  
-  /**
-   * Register a listener to receive wallet notifications.
-   * 
-   * @param {MoneroWalletListener} listener - listener to receive wallet notifications
-   */
-  async addListener(listener) {
-    throw new Error("Not supported");
-  }
-  
-  /**
-   * Unregister a listener to receive wallet notifications.
-   * 
-   * @param {MoneroWalletListener} listener - listener to unregister
-   */
-  async removeListener(listener) {
-    throw new Error("Not supported");
-  }
-  
-  /**
-   * Get the listeners registered with the wallet.
-   * 
-   * @return {MoneroWalletListener[]} the registered listeners
-   */
-  getListeners() {
-    throw new Error("Not supported");
-  }
-  
-  /**
-   * Indicates if the wallet is view-only, meaning it does not have the private
-   * spend key and can therefore only observe incoming outputs.
-   * 
-   * @return {bool} true if the wallet is view-only, false otherwise
-   */
-  async isViewOnly() {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Set the wallet's daemon connection.
-   * 
-   * @param {string|MoneroRpcConnection} uriOrConnection - daemon's URI or connection (defaults to offline)
-   * @param {string} username - username to authenticate with the daemon (optional)
-   * @param {string} password - password to authenticate with the daemon (optional)
-   */
-  async setDaemonConnection(uriOrConnection, username, password) {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Get the wallet's daemon connection.
-   * 
-   * @return {MoneroRpcConnection} the wallet's daemon connection
-   */
-  async getDaemonConnection() {
-    throw new MoneroError("Not supported");
-  }
-
-  /**
-   * Set the wallet's daemon connection manager.
-   * 
-   * @param {MoneroConnectionManager} connectionManager manages connections to monerod
-   */
-  async setConnectionManager(connectionManager) {
-    if (this._connectionManager) this._connectionManager.removeListener(this._connectionManagerListener);
-    this._connectionManager = connectionManager;
-    if (!connectionManager) return;
-    let that = this;
-    if (!this._connectionManagerListener) this._connectionManagerListener = new class extends MoneroConnectionManagerListener {
-      async onConnectionChanged(connection) {
-        await that.setDaemonConnection(connection);
-      }
-    };
-    connectionManager.addListener(this._connectionManagerListener);
-    await this.setDaemonConnection(connectionManager.getConnection());
-  }
-
-  /**
-   * Get the wallet's daemon connection manager.
-   * 
-   * @return {MoneroConnectionManager} the wallet's daemon connection manager
-   */
-  getConnectionManager() {
-    return this._connectionManager;
-  }
-  
-  /**
-   * Indicates if the wallet is connected to daemon.
-   * 
-   * @return {boolean} true if the wallet is connected to a daemon, false otherwise
-   */
-  async isConnectedToDaemon() {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Gets the version of the wallet.
-   * 
-   * @return {MoneroVersion} the version of the wallet
-   */
-  async getVersion() {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Get the wallet's path.
-   * 
-   * @return {string} the path the wallet can be opened with
-   */
-  async getPath() {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Get the wallet's mnemonic phrase or seed.
-   * 
-   * @return {string} the wallet's mnemonic phrase or seed.
-   */
-  async getSeed() {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Get the language of the wallet's mnemonic phrase or seed.
-   * 
-   * @return {string} the language of the wallet's mnemonic phrase or seed.
-   */
-  async getSeedLanguage() {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Get the wallet's private view key.
-   * 
-   * @return {string} the wallet's private view key
-   */
-  async getPrivateViewKey() {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Get the wallet's private spend key.
-   * 
-   * @return {string} the wallet's private spend key
-   */
-  async getPrivateSpendKey() {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Get the wallet's public view key.
-   * 
-   * @return {string} the wallet's public view key
-   */
-  async getPublicViewKey() {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Get the wallet's public spend key.
-   * 
-   * @return {string} the wallet's public spend key
-   */
-  async getPublicSpendKey() {
-    throw new MoneroError("Not supported");
-  }
-    
-  /**
-   * Get the wallet's primary address.
-   * 
-   * @return {string} the wallet's primary address
-   */
-  async getPrimaryAddress() {
-    return await this.getAddress(0, 0);
-  }
-  
-  /**
-   * Get the address of a specific subaddress.
-   * 
-   * @param {int} accountIdx - the account index of the address's subaddress
-   * @param {int} subaddressIdx - the subaddress index within the account
-   * @return {string} the receive address of the specified subaddress
-   */
-  async getAddress(accountIdx, subaddressIdx) {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Get the account and subaddress index of the given address.
-   * 
-   * @param {string} address - address to get the account and subaddress index from
-   * @return {MoneroSubaddress} the account and subaddress indices
-   */
-  async getAddressIndex(address) {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Get an integrated address based on the given standard address and payment
-   * ID. Uses the wallet's primary address if an address is not given.
-   * Generates a random payment ID if a payment ID is not given.
-   * 
-   * @param {string} standardAddress is the standard address to generate the integrated address from (wallet's primary address if undefined)
-   * @param {string} paymentId is the payment ID to generate an integrated address from (randomly generated if undefined)
-   * @return {MoneroIntegratedAddress} the integrated address
-   */
-  async getIntegratedAddress(standardAddress, paymentId) {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Decode an integrated address to get its standard address and payment id.
-   * 
-   * @param {string} integratedAddress - integrated address to decode
-   * @return {MoneroIntegratedAddress} the decoded integrated address including standard address and payment id
-   */
-  async decodeIntegratedAddress(integratedAddress) {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Get the block height that the wallet is synced to.
-   * 
-   * @return {int} the block height that the wallet is synced to
-   */
-  async getHeight() {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Get the blockchain's height.
-   * 
-   * @return {int} the blockchain's height
-   */
-  async getDaemonHeight() {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Get the blockchain's height by date as a conservative estimate for scanning.
-   * 
-   * @param {int} year - year of the height to get
-   * @param {int} month - month of the height to get as a number between 1 and 12
-   * @param {int} day - day of the height to get as a number between 1 and 31
-   * @return the blockchain's approximate height at the given date
-   */
-  async getHeightByDate(year, month, day) {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Synchronize the wallet with the daemon as a one-time synchronous process.
-   * 
-   * @param {MoneroWalletListener|number} listenerOrStartHeight - listener xor start height (defaults to no sync listener, the last synced block)
-   * @param {number} startHeight - startHeight if not given in first arg (defaults to last synced block)
-   */
-  async sync(listenerOrStartHeight, startHeight) {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Start background synchronizing with a maximum period between syncs.
-   * 
-   * @param {int} syncPeriodInMs - maximum period between syncs in milliseconds (default is wallet-specific)
-   */
-  async startSyncing(syncPeriodInMs) {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Stop synchronizing the wallet with the daemon.
-   */
-  async stopSyncing() {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Scan transactions by their hash/id.
-   * 
-   * @param {string[]} txHashes - tx hashes to scan
-   */
-  async scanTxs(txHashes) {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * <p>Rescan the blockchain for spent outputs.</p>
-   * 
-   * <p>Note: this can only be called with a trusted daemon.</p>
-   * 
-   * <p>Example use case: peer multisig hex is import when connected to an untrusted daemon,
-   * so the wallet will not rescan spent outputs.  Then the wallet connects to a trusted
-   * daemon.  This method should be manually invoked to rescan outputs.</p>
-   */
-  async rescanSpent() {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * <p>Rescan the blockchain from scratch, losing any information which cannot be recovered from
-   * the blockchain itself.</p>
-   * 
-   * <p>WARNING: This method discards local wallet data like destination addresses, tx secret keys,
-   * tx notes, etc.</p>
-   */
-  async rescanBlockchain() {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Get the balance of the wallet, account, or subaddress.
-   * 
-   * @param {int} accountIdx - index of the account to get the balance of (default all accounts)
-   * @param {int} subaddressIdx - index of the subaddress to get the balance of (default all subaddresses)
-   * @return {BigInteger} the balance of the wallet, account, or subaddress
-   */
-  async getBalance(accountIdx, subaddressIdx) {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Get the unlocked balance of the wallet, account, or subaddress.
-   * 
-   * @param {int} accountIdx - index of the account to get the unlocked balance of (optional)
-   * @param {int} subaddressIdx - index of the subaddress to get the unlocked balance of (optional)
-   * @return {BigInteger} the unlocked balance of the wallet, account, or subaddress
-   */
-  async getUnlockedBalance(accountIdx, subaddressIdx) {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Get the number of blocks until the next and last funds unlock.
-   * 
-   * @return {int[]} the number of blocks until the next and last funds unlock in elements 0 and 1, respectively, or undefined if no balance
-   */
-  async getNumBlocksToUnlock() {
-    
-    // get balances
-    let balance = await this.getBalance();
-    if (balance.compare(new BigInteger(0)) === 0) return [undefined, undefined]; // skip if no balance
-    let unlockedBalance = await this.getUnlockedBalance();
-    
-    // compute number of blocks until next funds available
-    let txs;
-    let height;
-    let numBlocksToNextUnlock = undefined;
-    if (unlockedBalance.compare(new BigInteger(0)) > 0) numBlocksToNextUnlock = 0;
-    else {
-      txs = await this.getTxs({isLocked: true}); // get locked txs
-      height = await this.getHeight(); // get most recent height
-      for (let tx of txs) {
-        let numBlocksToUnlock = Math.max((tx.isConfirmed() ? tx.getHeight() : height) + 10, tx.getUnlockTime()) - height;
-        numBlocksToNextUnlock = numBlocksToNextUnlock === undefined ? numBlocksToUnlock : Math.min(numBlocksToNextUnlock, numBlocksToUnlock);
-      }
-    }
-    
-    // compute number of blocks until all funds available
-    let numBlocksToLastUnlock = undefined;
-    if (balance.compare(unlockedBalance) === 0) {
-      if (unlockedBalance.compare(new BigInteger(0)) > 0) numBlocksToLastUnlock = 0;
-    } else {
-      if (!txs) {
-        txs = await this.getTxs({isLocked: true}); // get locked txs
-        height = await this.getHeight(); // get most recent height
-      }
-      for (let tx of txs) {
-        let numBlocksToUnlock = Math.max((tx.isConfirmed() ? tx.getHeight() : height) + 10, tx.getUnlockTime()) - height;
-        numBlocksToLastUnlock = numBlocksToLastUnlock === undefined ? numBlocksToUnlock : Math.max(numBlocksToLastUnlock, numBlocksToUnlock);
-      }
-    }
-    
-    return [numBlocksToNextUnlock, numBlocksToLastUnlock];
-  }
-  
-  /**
-   * Get accounts with a given tag.
-   * 
-   * @param {boolean} includeSubaddresses - include subaddresses if true
-   * @param {string} tag - tag for filtering accounts, all accounts if undefined
-   * @return {MoneroAccount[]} all accounts with the given tag
-   */
-  async getAccounts(includeSubaddresses, tag) {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Get an account.
-   * 
-   * @param {int} accountIdx - index of the account to get
-   * @param {boolean} includeSubaddresses - include subaddresses if true
-   * @return {MoneroAccount} the retrieved account
-   */
-  async getAccount(accountIdx, includeSubaddresses) {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Create a new account with a label for the first subaddress.
-   * 
-   * @param {string} label - label for account's first subaddress (optional)
-   * @return {MoneroAccount} the created account
-   */
-  async createAccount(label) {
-    throw new MoneroError("Not supported");
-  }
-
-  /**
-   * Set an account label.
-   * 
-   * @param {number} accountIdx - index of the account to set the label for
-   * @param {string} label - the label to set
-   */
-  async setAccountLabel(accountIdx, label) {
-    await this.setSubaddressLabel(accountIdx, 0, label);
-  }
-  
-  /**
-   * Get subaddresses in an account.
-   * 
-   * @param {int} accountIdx - account to get subaddresses within
-   * @param {int[]} subaddressIndices - indices of subaddresses to get (optional)
-   * @return {MoneroSubaddress[]} the retrieved subaddresses
-   */
-  async getSubaddresses(accountIdx, subaddressIndices) {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Get a subaddress.
-   * 
-   * @param {int} accountIdx - index of the subaddress's account
-   * @param {int} subaddressIdx - index of the subaddress within the account
-   * @return {MoneroSubaddress} the retrieved subaddress
-   */
-  async getSubaddress(accountIdx, subaddressIdx) {
-    assert(accountIdx >= 0);
-    assert(subaddressIdx >= 0);
-    return (await this.getSubaddresses(accountIdx, subaddressIdx))[0];
-  }
-  
-  /**
-   * Create a subaddress within an account.
-   * 
-   * @param {int} accountIdx - index of the account to create the subaddress within
-   * @param {string} label - the label for the subaddress (optional)
-   * @return {MoneroSubaddress} the created subaddress
-   */
-  async createSubaddress(accountIdx, label) {
-    throw new MoneroError("Not supported");
-  }
-
-  /**
-   * Set a subaddress label.
-   * 
-   * @param {number} accountIdx - index of the account to set the label for
-   * @param {number} subaddressIdx - index of the subaddress to set the label for
-   * @param {string} label - the label to set
-   */
-  async setSubaddressLabel(accountIdx, subaddressIdx, label) {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Get a wallet transaction by hash.
-   * 
-   * @param {string} txHash - hash of a transaction to get
-   * @return {MoneroTxWallet} the identified transaction or undefined if not found
-   */
-  async getTx(txHash) {
-    let txs = await this.getTxs([txHash]);
-    return txs.length === 0 ? undefined : txs[0]; 
-  }
-  
-  /**
-   * <p>Get wallet transactions.  Wallet transactions contain one or more
-   * transfers that are either incoming or outgoing to the wallet.<p>
-   * 
-   * <p>Results can be filtered by passing a query object.  Transactions must
-   * meet every criteria defined in the query in order to be returned.  All
-   * criteria are optional and no filtering is applied when not defined.</p>
-   * 
-   * @param {(MoneroTxQuery|string[]|object)} query - configures the query (optional)
-   * @param {boolean} query.isConfirmed - get txs that are confirmed or not (optional)
-   * @param {boolean} query.inTxPool - get txs that are in the tx pool or not (optional)
-   * @param {boolean} query.isRelayed - get txs that are relayed or not (optional)
-   * @param {boolean} query.isFailed - get txs that are failed or not (optional)
-   * @param {boolean} query.isMinerTx - get miner txs or not (optional)
-   * @param {string} query.hash - get a tx with the hash (optional)
-   * @param {string[]} query.hashes - get txs with the hashes (optional)
-   * @param {string} query.paymentId - get transactions with the payment id (optional)
-   * @param {string[]} query.paymentIds - get transactions with the payment ids (optional)
-   * @param {boolean} query.hasPaymentId - get transactions with a payment id or not (optional)
-   * @param {int} query.minHeight - get txs with height >= the given height (optional)
-   * @param {int} query.maxHeight - get txs with height <= the given height (optional)
-   * @param {boolean} query.isOutgoing - get txs with an outgoing transfer or not (optional)
-   * @param {boolean} query.isIncoming - get txs with an incoming transfer or not (optional)
-   * @param {MoneroTransferQuery} query.transferQuery - get txs that have a transfer that meets this query (optional)
-   * @param {boolean} query.includeOutputs - specifies that tx outputs should be returned with tx results (optional)
-   * @return {MoneroTxWallet[]} wallet transactions per the configuration
-   */
-  async getTxs(query) {
-    throw new MoneroError("Not supported");
-  }
-
-  /**
-   * <p>Get incoming and outgoing transfers to and from this wallet.  An outgoing
-   * transfer represents a total amount sent from one or more subaddresses
-   * within an account to individual destination addresses, each with their
-   * own amount.  An incoming transfer represents a total amount received into
-   * a subaddress within an account.  Transfers belong to transactions which
-   * are stored on the blockchain.</p>
-   * 
-   * <p>Results can be filtered by passing a query object.  Transfers must
-   * meet every criteria defined in the query in order to be returned.  All
-   * criteria are optional and no filtering is applied when not defined.</p>
-   * 
-   * @param {(MoneroTransferQuery|object)} query - configures the query (optional)
-   * @param {boolean} query.isOutgoing - get transfers that are outgoing or not (optional)
-   * @param {boolean} query.isIncoming - get transfers that are incoming or not (optional)
-   * @param {string} query.address - wallet's address that a transfer either originated from (if outgoing) or is destined for (if incoming) (optional)
-   * @param {int} query.accountIndex - get transfers that either originated from (if outgoing) or are destined for (if incoming) a specific account index (optional)
-   * @param {int} query.subaddressIndex - get transfers that either originated from (if outgoing) or are destined for (if incoming) a specific subaddress index (optional)
-   * @param {int[]} query.subaddressIndices - get transfers that either originated from (if outgoing) or are destined for (if incoming) specific subaddress indices (optional)
-   * @param {BigInteger} query.amount - amount being transferred (optional)
-   * @param {MoneroDestination[]} query.destinations - individual destinations of an outgoing transfer, which is local wallet data and NOT recoverable from the blockchain (optional)
-   * @param {boolean} query.hasDestinations - get transfers that have destinations or not (optional)
-   * @param {MoneroTxQuery} query.txQuery - get transfers whose transaction meets this query (optional)
-   * @return {MoneroTransfer[]} wallet transfers that meet the query
-   */
-  async getTransfers(query) {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Get incoming transfers.
-   * 
-   * @param {(MoneroTransferQuery|object)} query - configures the query (optional)
-   * @param {string} query.address - get incoming transfers to a specific address in the wallet (optional)
-   * @param {int} query.accountIndex - get incoming transfers to a specific account index (optional)
-   * @param {int} query.subaddressIndex - get incoming transfers to a specific subaddress index (optional)
-   * @param {int[]} query.subaddressIndices - get transfers destined for specific subaddress indices (optional)
-   * @param {BigInteger} query.amount - amount being transferred (optional)
-   * @param {MoneroTxQuery} query.txQuery - get transfers whose transaction meets this query (optional)
-   * @return {MoneroIncomingTransfer[]} incoming transfers that meet the query
-   */
-  async getIncomingTransfers(query) {
-    query = MoneroWallet._normalizeTransferQuery(query);
-    if (query.isIncoming() === false) throw new MoneroError("Transfer query contradicts getting incoming transfers");
-    query.setIsIncoming(true);
-    return this.getTransfers(query);
-  }
-  
-  /**
-   * Get outgoing transfers.
-   * 
-   * @param {(MoneroTransferQuery|object)} query - configures the query (optional)
-   * @param {string} query.address - get outgoing transfers from a specific address in the wallet (optional)
-   * @param {int} query.accountIndex - get outgoing transfers from a specific account index (optional)
-   * @param {int} query.subaddressIndex - get outgoing transfers from a specific subaddress index (optional)
-   * @param {int[]} query.subaddressIndices - get outgoing transfers from specific subaddress indices (optional)
-   * @param {BigInteger} query.amount - amount being transferred (optional)
-   * @param {MoneroDestination[]} query.destinations - individual destinations of an outgoing transfer, which is local wallet data and NOT recoverable from the blockchain (optional)
-   * @param {boolean} query.hasDestinations - get transfers that have destinations or not (optional)
-   * @param {MoneroTxQuery} query.txQuery - get transfers whose transaction meets this query (optional)
-   * @return {MoneroOutgoingTransfer[]} outgoing transfers that meet the query
-   */
-  async getOutgoingTransfers(query) {
-    query = MoneroWallet._normalizeTransferQuery(query);
-    if (query.isOutgoing() === false) throw new MoneroError("Transfer query contradicts getting outgoing transfers");
-    query.setIsOutgoing(true);
-    return this.getTransfers(query);
-  }
-  
-  /**
-   * <p>Get outputs created from previous transactions that belong to the wallet
-   * (i.e. that the wallet can spend one time).  Outputs are part of
-   * transactions which are stored in blocks on the blockchain.</p>
-   * 
-   * <p>Results can be filtered by passing a query object.  Outputs must
-   * meet every criteria defined in the query in order to be returned.  All
-   * filtering is optional and no filtering is applied when not defined.</p>
-   * 
-   * @param {(MoneroOutputQuery|object)} query - configures the query (optional)
-   * @param {int} query.accountIndex - get outputs associated with a specific account index (optional)
-   * @param {int} query.subaddressIndex - get outputs associated with a specific subaddress index (optional)
-   * @param {int[]} query.subaddressIndices - get outputs associated with specific subaddress indices (optional)
-   * @param {BigInteger} query.amount - get outputs with a specific amount (optional)
-   * @param {BigInteger} query.minAmount - get outputs greater than or equal to a minimum amount (optional)
-   * @param {BigInteger} query.maxAmount - get outputs less than or equal to a maximum amount (optional)
-   * @param {boolean} query.isSpent - get outputs that are spent or not (optional)
-   * @param {string|MoneroKeyImage} query.keyImage - get output with a key image or which matches fields defined in a MoneroKeyImage (optional)
-   * @param {MoneroTxQuery} query.txQuery - get outputs whose transaction meets this filter (optional)
-   * @return {MoneroOutputWallet[]} the queried outputs
-   */
-  async getOutputs(query) {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Export outputs in hex format.
-   *
-   * @param {boolean} all - export all outputs if true, else export the outputs since the last export
-   * @return {string} outputs in hex format
-   */
-  async exportOutputs(all) {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Import outputs in hex format.
-   * 
-   * @param {string} outputsHex - outputs in hex format
-   * @return {int} the number of outputs imported
-   */
-  async importOutputs(outputsHex) {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Export signed key images.
-   * 
-   * @param {boolean} all - export all key images if true, else export the key images since the last export
-   * @return {MoneroKeyImage[]} the wallet's signed key images
-   */
-  async exportKeyImages(all) {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Import signed key images and verify their spent status.
-   * 
-   * @param {MoneroKeyImage[]} keyImages - images to import and verify (requires hex and signature)
-   * @return {MoneroKeyImageImportResult} results of the import
-   */
-  async importKeyImages(keyImages) {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Get new key images from the last imported outputs.
-   * 
-   * @return {MoneroKeyImage[]} the key images from the last imported outputs
-   */
-  async getNewKeyImagesFromLastImport() {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Freeze an output.
-   * 
-   * @param {string} keyImage - key image of the output to freeze
-   */
-  async freezeOutput(keyImage) {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Thaw a frozen output.
-   * 
-   * @param {string} keyImage - key image of the output to thaw
-   */
-  async thawOutput(keyImage) {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Check if an output is frozen.
-   * 
-   * @param {string} keyImage - key image of the output to check if frozen
-   * @return {boolean} true if the output is frozen, false otherwise
-   */
-  async isOutputFrozen(keyImage) {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Create a transaction to transfer funds from this wallet.
-   * 
-   * @param {MoneroTxConfig|object} config - configures the transaction to create (required)
-   * @param {string} config.address - single destination address (required unless `destinations` provided)
-   * @param {BigInteger|string} config.amount - single destination amount (required unless `destinations` provided)
-   * @param {int} config.accountIndex - source account index to transfer funds from (required)
-   * @param {int} config.subaddressIndex - source subaddress index to transfer funds from (optional)
-   * @param {int[]} config.subaddressIndices - source subaddress indices to transfer funds from (optional)
-   * @param {boolean} config.relay - relay the transaction to peers to commit to the blockchain (default false)
-   * @param {MoneroTxPriority} config.priority - transaction priority (default MoneroTxPriority.NORMAL)
-   * @param {MoneroDestination[]} config.destinations - addresses and amounts in a multi-destination tx (required unless `address` and `amount` provided)
-   * @param {int[]} config.subtractFeeFrom - list of destination indices to split the transaction fee (optional)
-   * @param {string} config.paymentId - transaction payment ID (optional)
-   * @param {BigInteger|string} config.unlockTime - minimum height or timestamp for the transaction to unlock (default 0)
-   * @return {MoneroTxWallet} the created transaction
-   */
-  async createTx(config) {
-    config = MoneroWallet._normalizeCreateTxsConfig(config);
-    if (config.getCanSplit() !== undefined) assert.equal(config.getCanSplit(), false, "Cannot split transactions using createTx(); use createTxs()");
-    config.setCanSplit(false);
-    return (await this.createTxs(config))[0];
-  }
-  
-  /**
-   * Create one or more transactions to transfer funds from this wallet.
-   * 
-   * @param {MoneroTxConfig|object} config - configures the transactions to create (required)
-   * @param {string} config.address - single destination address (required unless `destinations` provided)
-   * @param {BigInteger|string} config.amount - single destination amount (required unless `destinations` provided)
-   * @param {int} config.accountIndex - source account index to transfer funds from (required)
-   * @param {int} config.subaddressIndex - source subaddress index to transfer funds from (optional)
-   * @param {int[]} config.subaddressIndices - source subaddress indices to transfer funds from (optional)
-   * @param {boolean} config.relay - relay the transactions to peers to commit to the blockchain (default false)
-   * @param {MoneroTxPriority} config.priority - transaction priority (default MoneroTxPriority.NORMAL)
-   * @param {MoneroDestination[]} config.destinations - addresses and amounts in a multi-destination tx (required unless `address` and `amount` provided)
-   * @param {string} config.paymentId - transaction payment ID (optional)
-   * @param {BigInteger|string} config.unlockTime - minimum height or timestamp for the transactions to unlock (default 0)
-   * @param {boolean} config.canSplit - allow funds to be transferred using multiple transactions (default true)
-   * @return {MoneroTxWallet[]} the created transactions
-   */
-  async createTxs(config) {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Sweep an output by key image.
-   * 
-   * @param {MoneroTxConfig} config - configures the transaction to create (required)
-   * @param {string} config.address - single destination address (required)
-   * @param {string} config.keyImage - key image to sweep (required)
-   * @param {boolean} config.relay - relay the transaction to peers to commit to the blockchain (default false)
-   * @param {BigInteger|string} config.unlockTime - minimum height or timestamp for the transaction to unlock (default 0)
-   * @param {MoneroTxPriority} config.priority - transaction priority (default MoneroTxPriority.NORMAL)
-   * @return {MoneroTxWallet} the created transaction
-   */
-  async sweepOutput(config) {
-    throw new MoneroError("Not supported");
-  }
-
-  /**
-   * Sweep all unlocked funds according to the given configuration.
-   * 
-   * @param {MoneroTxConfig|object} config - configures the transactions to create (required)
-   * @param {string} config.address - single destination address (required)
-   * @param {int} config.accountIndex - source account index to sweep from (optional, defaults to all accounts)
-   * @param {int} config.subaddressIndex - source subaddress index to sweep from (optional, defaults to all subaddresses)
-   * @param {int[]} config.subaddressIndices - source subaddress indices to sweep from (optional)
-   * @param {boolean} config.relay - relay the transactions to peers to commit to the blockchain (default false)
-   * @param {MoneroTxPriority} config.priority - transaction priority (default MoneroTxPriority.NORMAL)
-   * @param {BigInteger|string} config.unlockTime - minimum height or timestamp for the transactions to unlock (default 0)
-   * @param {boolean} config.sweepEachSubaddress - sweep each subaddress individually if true (default false)
-   * @return {MoneroTxWallet[]} the created transactions
-   */
-  async sweepUnlocked(config) {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * <p>Sweep all unmixable dust outputs back to the wallet to make them easier to spend and mix.</p>
-   * 
-   * <p>NOTE: Dust only exists pre RCT, so this method will throw "no dust to sweep" on new wallets.</p>
-   * 
-   * @param {boolean} relay - specifies if the resulting transaction should be relayed (default false)
-   * @return {MoneroTxWallet[]} the created transactions
-   */
-  async sweepDust(relay) {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Relay a previously created transaction.
-   * 
-   * @param {(MoneroTxWallet|string)} txOrMetadata - transaction or its metadata to relay
-   * @return {string} the hash of the relayed tx
-   */
-  async relayTx(txOrMetadata) {
-    return (await this.relayTxs([txOrMetadata]))[0];
-  }
-  
-  /**
-   * Relay previously created transactions.
-   * 
-   * @param {(MoneroTxWallet[]|string[])} txsOrMetadatas - transactions or their metadata to relay
-   * @return {string[]} the hashes of the relayed txs
-   */
-  async relayTxs(txsOrMetadatas) {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Describe a tx set from unsigned tx hex.
-   * 
-   * @param {string} unsignedTxHex - unsigned tx hex
-   * @return {MoneroTxSet} the tx set containing structured transactions
-   */
-  async describeUnsignedTxSet(unsignedTxHex) {
-    return this.describeTxSet(new MoneroTxSet().setUnsignedTxHex(unsignedTxHex));
-  }
-  
-  /**
-   * Describe a tx set from multisig tx hex.
-   * 
-   * @param {string} multisigTxHex - multisig tx hex
-   * @return {MoneroTxSet} the tx set containing structured transactions
-   */
-  async describeMultisigTxSet(multisigTxHex) {
-    return this.describeTxSet(new MoneroTxSet().setMultisigTxHex(multisigTxHex));
-  }
-  
-  /**
-   * Describe a tx set containing unsigned or multisig tx hex to a new tx set containing structured transactions.
-   * 
-   * @param {MoneroTxSet} txSet - a tx set containing unsigned or multisig tx hex
-   * @return {MoneroTxSet} the tx set containing structured transactions
-   */
-  async describeTxSet(txSet) {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Sign unsigned transactions from a view-only wallet.
-   * 
-   * @param {string} unsignedTxHex - unsigned transaction hex from when the transactions were created
-   * @return {string} the signed transaction hex
-   */
-  async signTxs(unsignedTxHex) {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Submit signed transactions from a view-only wallet.
-   * 
-   * @param {string} signedTxHex - signed transaction hex from signTxs()
-   * @return {string[]} the resulting transaction hashes
-   */
-  async submitTxs(signedTxHex) {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Sign a message.
-   * 
-   * @param {string} message - the message to sign
-   * @param {MoneroMessageSignatureType} signatureType - sign with spend key or view key (default spend key)
-   * @param {int} accountIdx - the account index of the message signature (default 0)
-   * @param {int} subaddressIdx - the subaddress index of the message signature (default 0)
-   * @return {string} the signature
-   */
-  async signMessage(message, signatureType, accountIdx, subaddressIdx) {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Verify a signature on a message.
-   * 
-   * @param {string} message - signed message
-   * @param {string} address - signing address
-   * @param {string} signature - signature
-   * @return {MoneroMessageSignatureResult} true if the signature is good, false otherwise
-   */
-  async verifyMessage(message, address, signature) {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Get a transaction's secret key from its hash.
-   * 
-   * @param {string} txHash - transaction's hash
-   * @return {string} - transaction's secret key
-   */
-  async getTxKey(txHash) {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Check a transaction in the blockchain with its secret key.
-   * 
-   * @param {string} txHash - transaction to check
-   * @param {string} txKey - transaction's secret key
-   * @param {string} address - destination public address of the transaction
-   * @return {MoneroCheckTx} the result of the check
-   */
-  async checkTxKey(txHash, txKey, address) {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Get a transaction signature to prove it.
-   * 
-   * @param {string} txHash - transaction to prove
-   * @param {string} address - destination public address of the transaction
-   * @param {string} message - message to include with the signature to further authenticate the proof (optional)
-   * @return {string} the transaction signature
-   */
-  async getTxProof(txHash, address, message) {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Prove a transaction by checking its signature.
-   * 
-   * @param {string} txHash - transaction to prove
-   * @param {string} address - destination public address of the transaction
-   * @param {string} message - message included with the signature to further authenticate the proof (optional)
-   * @param {string} signature - transaction signature to confirm
-   * @return {MoneroCheckTx} the result of the check
-   */
-  async checkTxProof(txHash, address, message, signature) {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Generate a signature to prove a spend. Unlike proving a transaction, it does not require the destination public address.
-   * 
-   * @param {string} txHash - transaction to prove
-   * @param {string} message - message to include with the signature to further authenticate the proof (optional)
-   * @return {string} the transaction signature
-   */
-  async getSpendProof(txHash, message) {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Prove a spend using a signature. Unlike proving a transaction, it does not require the destination public address.
-   * 
-   * @param {string} txHash - transaction to prove
-   * @param {string} message - message included with the signature to further authenticate the proof (optional)
-   * @param {string} signature - transaction signature to confirm
-   * @return {boolean} true if the signature is good, false otherwise
-   */
-  async checkSpendProof(txHash, message, signature) {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Generate a signature to prove the entire balance of the wallet.
-   * 
-   * @param message - message included with the signature to further authenticate the proof (optional)
-   * @return the reserve proof signature
-   */
-  async getReserveProofWallet(message) {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Generate a signature to prove an available amount in an account.
-   * 
-   * @param {int} accountIdx - account to prove ownership of the amount
-   * @param {BigInteger} amount - minimum amount to prove as available in the account
-   * @param {string} message - message to include with the signature to further authenticate the proof (optional)
-   * @return {string} the reserve proof signature
-   */
-  async getReserveProofAccount(accountIdx, amount, message) {
-    throw new MoneroError("Not supported");
-  }
-
-  /**
-   * Proves a wallet has a disposable reserve using a signature.
-   * 
-   * @param {string} address - public wallet address
-   * @param {string} message - message included with the signature to further authenticate the proof (optional)
-   * @param {string} signature - reserve proof signature to check
-   * @return {MoneroCheckReserve} the result of checking the signature proof
-   */
-  async checkReserveProof(address, message, signature) {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Get a transaction note.
-   * 
-   * @param {string} txHash - transaction to get the note of
-   * @return {string} the tx note
-   */
-  async getTxNote(txHash) {
-    return (await this.getTxNotes([txHash]))[0];
-  }
-  
-  /**
-   * Get notes for multiple transactions.
-   * 
-   * @param {string[]} txHashes - hashes of the transactions to get notes for
-   * @return {string[]} notes for the transactions
-   */
-  async getTxNotes(txHashes) {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Set a note for a specific transaction.
-   * 
-   * @param {string} txHash - hash of the transaction to set a note for
-   * @param {string} note - the transaction note
-   */
-  async setTxNote(txHash, note) {
-    await this.setTxNotes([txHash], [note]);
-  }
-  
-  /**
-   * Set notes for multiple transactions.
-   * 
-   * @param {string[]} txHashes - transactions to set notes for
-   * @param {string[]} notes - notes to set for the transactions
-   */
-  async setTxNotes(txHashes, notes) {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Get address book entries.
-   * 
-   * @param {int[]} entryIndices - indices of the entries to get
-   * @return {MoneroAddressBookEntry[]} the address book entries
-   */
-  async getAddressBookEntries(entryIndices) {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Add an address book entry.
-   * 
-   * @param {string} address - entry address
-   * @param {string} description - entry description (optional)
-   * @return {int} the index of the added entry
-   */
-  async addAddressBookEntry(address, description) {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Edit an address book entry.
-   * 
-   * @param {number} index - index of the address book entry to edit
-   * @param {boolean} setAddress - specifies if the address should be updated
-   * @param {string} address - updated address
-   * @param {boolean} setDescription - specifies if the description should be updated
-   * @param {string} description - updated description
-   */
-  async editAddressBookEntry(index, setAddress, address, setDescription, description) {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Delete an address book entry.
-   * 
-   * @param {int} entryIdx - index of the entry to delete
-   */
-  async deleteAddressBookEntry(entryIdx) {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Tag accounts.
-   * 
-   * @param {string} tag - tag to apply to the specified accounts
-   * @param {int[]} accountIndices - indices of the accounts to tag
-   */
-  async tagAccounts(tag, accountIndices) {
-    throw new MoneroError("Not supported");
-  }
-
-  /**
-   * Untag accounts.
-   * 
-   * @param {int[]} accountIndices - indices of the accounts to untag
-   */
-  async untagAccounts(accountIndices) {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Return all account tags.
-   * 
-   * @return {MoneroAccountTag[]} the wallet's account tags
-   */
-  async getAccountTags() {
-    throw new MoneroError("Not supported");
-  }
-
-  /**
-   * Sets a human-readable description for a tag.
-   * 
-   * @param {string} tag - tag to set a description for
-   * @param {string} label - label to set for the tag
-   */
-  async setAccountTagLabel(tag, label) {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Creates a payment URI from a send configuration.
-   * 
-   * @param {MoneroTxConfig} config - specifies configuration for a potential tx
-   * @return {string} the payment uri
-   */
-  async getPaymentUri(config) {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Parses a payment URI to a tx config.
-   * 
-   * @param {string} uri - payment uri to parse
-   * @return {MoneroTxConfig} the send configuration parsed from the uri
-   */
-  async parsePaymentUri(uri) {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Get an attribute.
-   * 
-   * @param {string} key - attribute to get the value of
-   * @return {string} the attribute's value
-   */
-  async getAttribute(key) {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Set an arbitrary attribute.
-   * 
-   * @param {string} key - attribute key
-   * @param {string} val - attribute value
-   */
-  async setAttribute(key, val) {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Start mining.
-   * 
-   * @param {int} numThreads - number of threads created for mining (optional)
-   * @param {boolean} backgroundMining - specifies if mining should occur in the background (optional)
-   * @param {boolean} ignoreBattery - specifies if the battery should be ignored for mining (optional)
-   */
-  async startMining(numThreads, backgroundMining, ignoreBattery) {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Stop mining.
-   */
-  async stopMining() {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Indicates if importing multisig data is needed for returning a correct balance.
-   * 
-   * @return {boolean} true if importing multisig data is needed for returning a correct balance, false otherwise
-   */
-  async isMultisigImportNeeded() {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Indicates if this wallet is a multisig wallet.
-   * 
-   * @return {boolean} true if this is a multisig wallet, false otherwise
-   */
-  async isMultisig() {
-    return (await this.getMultisigInfo()).isMultisig();
-  }
-  
-  /**
-   * Get multisig info about this wallet.
-   * 
-   * @return {MoneroMultisigInfo} multisig info about this wallet
-   */
-  async getMultisigInfo() {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Get multisig info as hex to share with participants to begin creating a
-   * multisig wallet.
-   * 
-   * @return {string} this wallet's multisig hex to share with participants
-   */
-  async prepareMultisig() {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Make this wallet multisig by importing multisig hex from participants.
-   * 
-   * @param {String[]} multisigHexes - multisig hex from each participant
-   * @param {int} threshold - number of signatures needed to sign transfers
-   * @param {string} password - wallet password
-   * @return {string} this wallet's multisig hex to share with participants
-   */
-  async makeMultisig(multisigHexes, threshold, password) {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Exchange multisig hex with participants in a M/N multisig wallet.
-   * 
-   * This process must be repeated with participants exactly N-M times.
-   * 
-   * @param {string[]} multisigHexes are multisig hex from each participant
-   * @param {string} password - wallet's password // TODO monero-project: redundant? wallet is created with password
-   * @return {MoneroMultisigInitResult} the result which has the multisig's address xor this wallet's multisig hex to share with participants iff not done
-   */
-  async exchangeMultisigKeys(multisigHexes, password) {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Export this wallet's multisig info as hex for other participants.
-   * 
-   * @return {string} this wallet's multisig info as hex for other participants
-   */
-  async exportMultisigHex() {
-    throw new MoneroError("Not supported?");
-  }
-  
-  /**
-   * Import multisig info as hex from other participants.
-   * 
-   * @param {string[]} multisigHexes - multisig hex from each participant
-   * @return {int} the number of outputs signed with the given multisig hex
-   */
-  async importMultisigHex(multisigHexes) {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Sign multisig transactions from a multisig wallet.
-   * 
-   * @param {string} multisigTxHex - unsigned multisig transactions as hex
-   * @return {MoneroMultisigSignResult} the result of signing the multisig transactions
-   */
-  async signMultisigTxHex(multisigTxHex) {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Submit signed multisig transactions from a multisig wallet.
-   * 
-   * @param {string} signedMultisigTxHex - signed multisig hex returned from signMultisigTxHex()
-   * @return {string[]} the resulting transaction hashes
-   */
-  async submitMultisigTxHex(signedMultisigTxHex) {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Change the wallet password.
-   * 
-   * @param {string} oldPassword - the wallet's old password
-   * @param {string} newPassword - the wallet's new password
-   */
-  async changePassword(oldPassword, newPassword) {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Save the wallet at its current path.
-   */
-  save() {
-    throw new MoneroError("Not supported");
-  }
-  
-  /**
-   * Optionally save then close the wallet.
-   *
-   * @param {boolean} save - specifies if the wallet should be saved before being closed (default false)
-   */
-  async close(save) {
-    if (this._connectionManager) this._connectionManager.removeListener(this._connectionManagerListener);
-    this._connectionManager = undefined;
-    this._connectionManagerListener = undefined;
-  }
-  
-  /**
-   * Indicates if this wallet is closed or not.
-   * 
-   * @return {boolean} true if the wallet is closed, false otherwise
-   */
-  async isClosed() {
-    throw new MoneroError("Not supported");
-  }
-  
-  // -------------------------------- PRIVATE ---------------------------------
-  
-  static _normalizeTxQuery(query) {
-    if (query instanceof MoneroTxQuery) query = query.copy();
-    else if (Array.isArray(query)) query = new MoneroTxQuery().setHashes(query);
-    else {
-      query = Object.assign({}, query);
-      query = new MoneroTxQuery(query);
-    }
-    if (query.getBlock() === undefined) query.setBlock(new MoneroBlock().setTxs([query]));
-    if (query.getInputQuery()) query.getInputQuery().setTxQuery(query);
-    if (query.getOutputQuery()) query.getOutputQuery().setTxQuery(query);
-    return query;
-  }
-  
-  static _normalizeTransferQuery(query) {
-    if (query === undefined) query = new MoneroTransferQuery();
-    else if (query instanceof MoneroTransferQuery) {
-      if (query.getTxQuery() === undefined) query = query.copy();
-      else {
-        let txQuery = query.getTxQuery().copy();
-        if (query.getTxQuery().getTransferQuery() === query) query = txQuery.getTransferQuery();
-        else {
-          assert.equal(query.getTxQuery().getTransferQuery(), undefined, "Transfer query's tx query must be circular reference or null");
-          query = query.copy();
-          query.setTxQuery(txQuery);
-        }
-      }
-    } else {
-      query = Object.assign({}, query);
-      query = new MoneroTransferQuery(query);
-    }
-    if (query.getTxQuery() === undefined) query.setTxQuery(new MoneroTxQuery());
-    query.getTxQuery().setTransferQuery(query);
-    if (query.getTxQuery().getBlock() === undefined) query.getTxQuery().setBlock(new MoneroBlock().setTxs([query.getTxQuery()]));
-    return query;
-  }
-  
-  static _normalizeOutputQuery(query) {
-    if (query === undefined) query = new MoneroOutputQuery();
-    else if (query instanceof MoneroOutputQuery) {
-      if (query.getTxQuery() === undefined) query = query.copy();
-      else {
-        let txQuery = query.getTxQuery().copy();
-        if (query.getTxQuery().getOutputQuery() === query) query = txQuery.getOutputQuery();
-        else {
-          assert.equal(query.getTxQuery().getOutputQuery(), undefined, "Output query's tx query must be circular reference or null");
-          query = query.copy();
-          query.setTxQuery(txQuery);
-        }
-      }
-    } else {
-      query = Object.assign({}, query);
-      query = new MoneroOutputQuery(query);
-    }
-    if (query.getTxQuery() === undefined) query.setTxQuery(new MoneroTxQuery());
-    query.getTxQuery().setOutputQuery(query);
-    if (query.getTxQuery().getBlock() === undefined) query.getTxQuery().setBlock(new MoneroBlock().setTxs([query.getTxQuery()]));
-    return query;
-  }
-  
-  static _normalizeCreateTxsConfig(config) {
-    if (config === undefined || !(config instanceof Object)) throw new MoneroError("Must provide MoneroTxConfig or equivalent JS object");
-    config = new MoneroTxConfig(config);
-    assert(config.getDestinations() && config.getDestinations().length > 0, "Must provide destinations");
-    assert.equal(config.getSweepEachSubaddress(), undefined);
-    assert.equal(config.getBelowAmount(), undefined);
-    return config;
-  }
-  
-  static _normalizeSweepOutputConfig(config) {
-    if (config === undefined || !(config instanceof Object)) throw new MoneroError("Must provide MoneroTxConfig or equivalent JS object");
-    config = new MoneroTxConfig(config);
-    assert.equal(config.getSweepEachSubaddress(), undefined);
-    assert.equal(config.getBelowAmount(), undefined);
-    assert.equal(config.getCanSplit(), undefined, "Cannot split transactions when sweeping an output");
-    if (!config.getDestinations() || config.getDestinations().length !== 1 || !config.getDestinations()[0].getAddress()) throw new MoneroError("Must provide exactly one destination address to sweep output to");
-    if (config.getSubtractFeeFrom() && config.getSubtractFeeFrom().length > 0) throw new MoneroError("Sweep transfers do not support subtracting fees from destinations");
-    return config;  
-  }
-  
-  static _normalizeSweepUnlockedConfig(config) {
-    if (config === undefined || !(config instanceof Object)) throw new MoneroError("Must provide MoneroTxConfig or equivalent JS object");
-    config = new MoneroTxConfig(config);
-    if (config.getDestinations() === undefined || config.getDestinations().length != 1) throw new MoneroError("Must provide exactly one destination to sweep to");
-    if (config.getDestinations()[0].getAddress() === undefined) throw new MoneroError("Must provide destination address to sweep to");
-    if (config.getDestinations()[0].getAmount() !== undefined) throw new MoneroError("Cannot provide amount in sweep config");
-    if (config.getKeyImage() !== undefined) throw new MoneroError("Key image defined; use sweepOutput() to sweep an output by its key image");
-    if (config.getSubaddressIndices() !== undefined && config.getSubaddressIndices().length === 0) config.setSubaddressIndices(undefined);
-    if (config.getAccountIndex() === undefined && config.getSubaddressIndices() !== undefined) throw new MoneroError("Must provide account index if subaddress indices are provided");
-    return config;
-  }
-}
-
-MoneroWallet.DEFAULT_LANGUAGE = "English";
-
-module.exports = MoneroWallet;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_wallet_MoneroWalletFull.js.html b/docs/src_main_js_wallet_MoneroWalletFull.js.html deleted file mode 100644 index cbe248853..000000000 --- a/docs/src_main_js_wallet_MoneroWalletFull.js.html +++ /dev/null @@ -1,2740 +0,0 @@ - - - - - JSDoc: Source: src/main/js/wallet/MoneroWalletFull.js - - - - - - - - - - -
- -

Source: src/main/js/wallet/MoneroWalletFull.js

- - - - - - -
-
-
const assert = require("assert");
-const BigInteger = require("../common/biginteger").BigInteger;
-const GenUtils = require("../common/GenUtils");
-const LibraryUtils = require("../common/LibraryUtils");
-const TaskLooper = require("../common/TaskLooper");
-const MoneroAccount = require("./model/MoneroAccount");
-const MoneroAddressBookEntry = require("./model/MoneroAddressBookEntry");
-const MoneroBlock = require("../daemon/model/MoneroBlock");
-const MoneroCheckTx = require("./model/MoneroCheckTx");
-const MoneroCheckReserve = require("./model/MoneroCheckReserve");
-const MoneroDaemonRpc = require("../daemon/MoneroDaemonRpc");
-const MoneroError = require("../common/MoneroError");
-const MoneroIntegratedAddress = require("./model/MoneroIntegratedAddress");
-const MoneroKeyImage = require("../daemon/model/MoneroKeyImage");
-const MoneroKeyImageImportResult = require("./model/MoneroKeyImageImportResult");
-const MoneroMultisigInfo = require("./model/MoneroMultisigInfo");
-const MoneroMultisigInitResult = require("./model/MoneroMultisigInitResult");
-const MoneroMultisigSignResult = require("./model/MoneroMultisigSignResult");
-const MoneroNetworkType = require("../daemon/model/MoneroNetworkType");
-const MoneroOutputWallet = require("./model/MoneroOutputWallet");
-const MoneroRpcConnection = require("../common/MoneroRpcConnection");
-const MoneroSubaddress = require("./model/MoneroSubaddress");
-const MoneroSyncResult = require("./model/MoneroSyncResult");
-const MoneroTxConfig = require("./model/MoneroTxConfig");
-const MoneroTxSet = require("./model/MoneroTxSet");
-const MoneroTxWallet = require("./model/MoneroTxWallet");
-const MoneroWallet = require("./MoneroWallet");
-const MoneroWalletConfig = require("./model/MoneroWalletConfig");
-const MoneroWalletKeys = require("./MoneroWalletKeys");
-const MoneroWalletListener = require("./model/MoneroWalletListener");
-const MoneroMessageSignatureType = require("./model/MoneroMessageSignatureType");
-const MoneroMessageSignatureResult = require("./model/MoneroMessageSignatureResult");
-
-/**
- * Implements a Monero wallet using fully client-side WebAssembly bindings to monero-project's wallet2 in C++.
- * 
- * @extends {MoneroWalletKeys}
- * @implements {MoneroWallet}
- * @hideconstructor
- */
-class MoneroWalletFull extends MoneroWalletKeys {
-  
-  // --------------------------- STATIC UTILITIES -----------------------------
-  
-  /**
-   * Check if a wallet exists at a given path.
-   * 
-   * @param {string} path - path of the wallet on the file system
-   * @param {fs} - Node.js compatible file system to use (optional, defaults to disk if nodejs)
-   * @return {boolean} true if a wallet exists at the given path, false otherwise
-   */
-  static walletExists(path, fs) {
-    assert(path, "Must provide a path to look for a wallet");
-    if (!fs) fs = MoneroWalletFull._getFs();
-    if (!fs) throw new MoneroError("Must provide file system to check if wallet exists");
-    let exists = fs.existsSync(path + ".keys");
-    LibraryUtils.log(1, "Wallet exists at " + path + ": " + exists);
-    return exists;
-  }
-  
-  /**
-   * <p>Open an existing wallet using WebAssembly bindings to wallet2.h.</p>
-   * 
-   * <p>Examples:<p>
-   * 
-   * <code>
-   * let wallet1 = await MoneroWalletFull.openWallet(<br>
-   * &nbsp;&nbsp; "./wallets/wallet1",<br>
-   * &nbsp;&nbsp; "supersecretpassword",<br>
-   * &nbsp;&nbsp; MoneroNetworkType.STAGENET,<br>
-   * &nbsp;&nbsp; "http://localhost:38081" // daemon uri<br>
-   * );<br><br>
-   * 
-   * let wallet2 = await MoneroWalletFull.openWallet({<br>
-   * &nbsp;&nbsp; path: "./wallets/wallet2",<br>
-   * &nbsp;&nbsp; password: "supersecretpassword",<br>
-   * &nbsp;&nbsp; networkType: MoneroNetworkType.STAGENET,<br>
-   * &nbsp;&nbsp; serverUri: "http://localhost:38081", // daemon configuration<br>
-   * &nbsp;&nbsp; serverUsername: "superuser",<br>
-   * &nbsp;&nbsp; serverPassword: "abctesting123"<br>
-   * });
-   * </code>
-   * 
-   * @param {MoneroWalletConfig|object|string} configOrPath - MoneroWalletConfig or equivalent config object or a path to a wallet to open
-   * @param {string} configOrPath.path - path of the wallet to open (optional if 'keysData' provided)
-   * @param {string} configOrPath.password - password of the wallet to open
-   * @param {string|number} configOrPath.networkType - network type of the wallet to open (one of "mainnet", "testnet", "stagenet" or MoneroNetworkType.MAINNET|TESTNET|STAGENET)
-   * @param {Uint8Array} configOrPath.keysData - wallet keys data to open (optional if path provided)
-   * @param {Uint8Array} configOrPath.cacheData - wallet cache data to open (optional)
-   * @param {MoneroRpcConnection|object} configOrPath.server - MoneroRpcConnection or equivalent JS object configuring the daemon connection (optional)
-   * @param {string} configOrPath.serverUri - uri of the wallet's daemon (optional)
-   * @param {string} configOrPath.serverUsername - username to authenticate with the daemon (optional)
-   * @param {string} configOrPath.serverPassword - password to authenticate with the daemon (optional)
-   * @param {boolean} configOrPath.rejectUnauthorized - reject self-signed server certificates if true (default true)
-   * @param {boolean} configOrPath.proxyToWorker - proxies wallet operations to a worker in order to not block the main thread (default true)
-   * @param {fs} configOrPath.fs - Node.js compatible file system to use (defaults to disk or in-memory FS if browser)
-   * @param {string} password - password of the wallet to open
-   * @param {string|number} networkType - network type of the wallet to open
-   * @param {string|MoneroRpcConnection} daemonUriOrConnection - daemon URI or MoneroRpcConnection
-   * @param {boolean} proxyToWorker - proxies wallet operations to a worker in order to not block the main thread (default true)
-   * @param {fs} fs - Node.js compatible file system to use (defaults to disk or in-memory FS if browser)
-   * @return {MoneroWalletFull} the opened wallet
-   */
-  static async openWallet(configOrPath, password, networkType, daemonUriOrConnection, proxyToWorker, fs) {
-
-    // normalize and validate config
-    let config;
-    if (typeof configOrPath === "object") {
-      config = configOrPath instanceof MoneroWalletConfig ? configOrPath : new MoneroWalletConfig(configOrPath);
-      if (password !== undefined || networkType !== undefined || daemonUriOrConnection !== undefined || proxyToWorker !== undefined || fs !== undefined) throw new MoneroError("Can specify config object or params but not both when opening WASM wallet")
-    } else {
-      config = new MoneroWalletConfig().setPath(configOrPath).setPassword(password).setNetworkType(networkType).setProxyToWorker(proxyToWorker).setFs(fs);
-      if (typeof daemonUriOrConnection === "object") config.setServer(daemonUriOrConnection);
-      else config.setServerUri(daemonUriOrConnection);
-    }
-    if (config.getProxyToWorker() === undefined) config.setProxyToWorker(true);
-    if (config.getSeed() !== undefined) throw new MoneroError("Cannot specify seed when opening wallet");
-    if (config.getSeedOffset() !== undefined) throw new MoneroError("Cannot specify seed offset when opening wallet");
-    if (config.getPrimaryAddress() !== undefined) throw new MoneroError("Cannot specify primary address when opening wallet");
-    if (config.getPrivateViewKey() !== undefined) throw new MoneroError("Cannot specify private view key when opening wallet");
-    if (config.getPrivateSpendKey() !== undefined) throw new MoneroError("Cannot specify private spend key when opening wallet");
-    if (config.getRestoreHeight() !== undefined) throw new MoneroError("Cannot specify restore height when opening wallet");
-    if (config.getLanguage() !== undefined) throw new MoneroError("Cannot specify language when opening wallet");
-    if (config.getSaveCurrent() === true) throw new MoneroError("Cannot save current wallet when opening JNI wallet");
-    
-    // read wallet data from disk if not provided
-    if (!config.getKeysData()) {
-      let fs = config.getFs() ? config.getFs() : MoneroWalletFull._getFs();
-      if (!fs) throw new MoneroError("Must provide file system to read wallet data from");
-      if (!this.walletExists(config.getPath(), fs)) throw new MoneroError("Wallet does not exist at path: " + config.getPath());
-      config.setKeysData(fs.readFileSync(config.getPath() + ".keys"));
-      config.setCacheData(fs.existsSync(config.getPath()) ? fs.readFileSync(config.getPath()) : "");
-    }
-    
-    // open wallet from data
-    return MoneroWalletFull._openWalletData(config.getPath(), config.getPassword(), config.getNetworkType(), config.getKeysData(), config.getCacheData(), config.getServer(), config.getProxyToWorker(), config.getFs());
-  }
-  
-  /**
-   * <p>Create a wallet using WebAssembly bindings to wallet2.h.<p>
-   * 
-   * <p>Example:</p>
-   * 
-   * <code>
-   * let wallet = await MoneroWalletFull.createWallet({<br>
-   * &nbsp;&nbsp; path: "./test_wallets/wallet1", // leave blank for in-memory wallet<br>
-   * &nbsp;&nbsp; password: "supersecretpassword",<br>
-   * &nbsp;&nbsp; networkType: MoneroNetworkType.STAGENET,<br>
-   * &nbsp;&nbsp; seed: "coexist igloo pamphlet lagoon...",<br>
-   * &nbsp;&nbsp; restoreHeight: 1543218,<br>
-   * &nbsp;&nbsp; server: new MoneroRpcConnection("http://localhost:38081", "daemon_user", "daemon_password_123"),<br>
-   * });
-   * </code>
-   * 
-   * @param {object|MoneroWalletConfig} config - MoneroWalletConfig or equivalent config object
-   * @param {string} config.path - path of the wallet to create (optional, in-memory wallet if not given)
-   * @param {string} config.password - password of the wallet to create
-   * @param {string|number} config.networkType - network type of the wallet to create (one of "mainnet", "testnet", "stagenet" or MoneroNetworkType.MAINNET|TESTNET|STAGENET)
-   * @param {string} config.seed - seed of the wallet to create (optional, random wallet created if neither seed nor keys given)
-   * @param {string} config.seedOffset - the offset used to derive a new seed from the given seed to recover a secret wallet from the seed phrase
-   * @param {boolean} config.isMultisig - restore multisig wallet from seed
-   * @param {string} config.primaryAddress - primary address of the wallet to create (only provide if restoring from keys)
-   * @param {string} config.privateViewKey - private view key of the wallet to create (optional)
-   * @param {string} config.privateSpendKey - private spend key of the wallet to create (optional)
-   * @param {number} config.restoreHeight - block height to start scanning from (defaults to 0 unless generating random wallet)
-   * @param {string} config.language - language of the wallet's seed phrase (defaults to "English" or auto-detected)
-   * @param {number} config.accountLookahead -  number of accounts to scan (optional)
-   * @param {number} config.subaddressLookahead - number of subaddresses to scan per account (optional)
-   * @param {MoneroRpcConnection|object} config.server - MoneroRpcConnection or equivalent JS object providing daemon configuration (optional)
-   * @param {string} config.serverUri - uri of the wallet's daemon (optional)
-   * @param {string} config.serverUsername - username to authenticate with the daemon (optional)
-   * @param {string} config.serverPassword - password to authenticate with the daemon (optional)
-   * @param {MoneroConnectionManager} config.connectionManager - manage connections to monerod (optional)
-   * @param {boolean} config.rejectUnauthorized - reject self-signed server certificates if true (defaults to true)
-   * @param {boolean} config.proxyToWorker - proxies wallet operations to a worker in order to not block the main thread (default true)
-   * @param {fs} config.fs - Node.js compatible file system to use (defaults to disk or in-memory FS if browser)
-   * @return {MoneroWalletFull} the created wallet
-   */
-  static async createWallet(config) {
-    
-    // normalize and validate config
-    if (config === undefined) throw new MoneroError("Must provide config to create wallet");
-    config = config instanceof MoneroWalletConfig ? config : new MoneroWalletConfig(config);
-    if (config.getSeed() !== undefined && (config.getPrimaryAddress() !== undefined || config.getPrivateViewKey() !== undefined || config.getPrivateSpendKey() !== undefined)) {
-      throw new MoneroError("Wallet may be initialized with a seed or keys but not both");
-    } // TODO: factor this much out to common
-    if (config.getNetworkType() === undefined) throw new MoneroError("Must provide a networkType: 'mainnet', 'testnet' or 'stagenet'");
-    MoneroNetworkType.validate(config.getNetworkType());
-    if (config.getSaveCurrent() === true) throw new MoneroError("Cannot save current wallet when creating full WASM wallet");
-    if (config.getPath() === undefined) config.setPath("");
-    if (config.getPath() && MoneroWalletFull.walletExists(config.getPath(), config.getFs())) throw new MoneroError("Wallet already exists: " + config.getPath());
-    if (config.getPassword() === undefined) config.setPassword("");
-
-    // set server from connection manager if provided
-    if (config.getConnectionManager()) {
-      if (config.getServer()) throw new MoneroError("Wallet can be initialized with a server or connection manager but not both");
-      config.setServer(config.getConnectionManager().getConnection());
-    }
-    
-    // create wallet
-    let wallet;
-    if (config.getSeed() !== undefined) {
-      if (config.getLanguage() !== undefined) throw new MoneroError("Cannot provide language when creating wallet from seed");
-      wallet = await MoneroWalletFull._createWalletFromSeed(config);
-    } else if (config.getPrivateSpendKey() !== undefined || config.getPrimaryAddress() !== undefined) {
-      if (config.getSeedOffset() !== undefined) throw new MoneroError("Cannot provide seedOffset when creating wallet from keys");
-      wallet = await MoneroWalletFull._createWalletFromKeys(config);
-    } else {
-      if (config.getSeedOffset() !== undefined) throw new MoneroError("Cannot provide seedOffset when creating random wallet");
-      if (config.getRestoreHeight() !== undefined) throw new MoneroError("Cannot provide restoreHeight when creating random wallet");
-      wallet = await MoneroWalletFull._createWalletRandom(config);
-    }
-    await wallet.setConnectionManager(config.getConnectionManager());
-    return wallet;
-  }
-  
-  static async _createWalletFromSeed(config) {
-    if (config.getProxyToWorker() === undefined) config.setProxyToWorker(true);
-    if (config.getProxyToWorker()) return MoneroWalletFullProxy._createWallet(config);
-    
-    // validate and normalize params
-    let daemonConnection = config.getServer();
-    let rejectUnauthorized = daemonConnection ? daemonConnection.getRejectUnauthorized() : true;
-    if (config.getRestoreHeight() === undefined) config.setRestoreHeight(0);
-    if (config.getSeedOffset() === undefined) config.setSeedOffset("");
-    
-    // load full wasm module
-    let module = await LibraryUtils.loadFullModule();
-    
-    // create wallet in queue
-    let wallet = await module.queueTask(async function() {
-      return new Promise(function(resolve, reject) {
-        
-        // register fn informing if unauthorized reqs should be rejected
-        let rejectUnauthorizedFnId = GenUtils.getUUID();
-        LibraryUtils.setRejectUnauthorizedFn(rejectUnauthorizedFnId, function() { return rejectUnauthorized });
-        
-        // define callback for wasm
-        let callbackFn = async function(cppAddress) {
-          if (typeof cppAddress === "string") reject(new MoneroError(cppAddress));
-          else resolve(new MoneroWalletFull(cppAddress, config.getPath(), config.getPassword(), config.getFs(), config.getRejectUnauthorized(), rejectUnauthorizedFnId));
-        };
-        
-        // create wallet in wasm and invoke callback when done
-        module.create_full_wallet(JSON.stringify(config.toJson()), rejectUnauthorizedFnId, callbackFn);
-      });
-    });
-    
-    // save wallet
-    if (config.getPath()) await wallet.save();
-    return wallet;
-  }
-  
-  static async _createWalletFromKeys(config) {
-    if (config.getProxyToWorker() === undefined) config.setProxyToWorker(true);
-    if (config.getProxyToWorker()) return MoneroWalletFullProxy._createWallet(config);
-    
-    // validate and normalize params
-    MoneroNetworkType.validate(config.getNetworkType());
-    if (config.getPrimaryAddress() === undefined) config.setPrimaryAddress("");
-    if (config.getPrivateViewKey() === undefined) config.setPrivateViewKey("");
-    if (config.getPrivateSpendKey() === undefined) config.setPrivateSpendKey("");
-    let daemonConnection = config.getServer();
-    let rejectUnauthorized = daemonConnection ? daemonConnection.getRejectUnauthorized() : true;
-    if (config.getRestoreHeight() === undefined) config.setRestoreHeight(0);
-    if (config.getLanguage() === undefined) config.setLanguage("English");
-    
-    // load full wasm module
-    let module = await LibraryUtils.loadFullModule();
-    
-    // create wallet in queue
-    let wallet = await module.queueTask(async function() {
-      return new Promise(function(resolve, reject) {
-        
-        // register fn informing if unauthorized reqs should be rejected
-        let rejectUnauthorizedFnId = GenUtils.getUUID();
-        LibraryUtils.setRejectUnauthorizedFn(rejectUnauthorizedFnId, function() { return rejectUnauthorized });
-        
-        // define callback for wasm
-        let callbackFn = async function(cppAddress) {
-          if (typeof cppAddress === "string") reject(new MoneroError(cppAddress));
-          else resolve(new MoneroWalletFull(cppAddress, config.getPath(), config.getPassword(), config.getFs(), config.getRejectUnauthorized(), rejectUnauthorizedFnId));
-        };
-        
-        // create wallet in wasm and invoke callback when done
-        module.create_full_wallet(JSON.stringify(config.toJson()), rejectUnauthorizedFnId, callbackFn);
-      });
-    });
-    
-    // save wallet
-    if (config.getPath()) await wallet.save();
-    return wallet;
-  }
-  
-  static async _createWalletRandom(config) {
-    if (config.getProxyToWorker() === undefined) config.setProxyToWorker(true);
-    if (config.getProxyToWorker()) return MoneroWalletFullProxy._createWallet(config);
-    
-    // validate and normalize params
-    if (config.getLanguage() === undefined) config.setLanguage("English");
-    let daemonConnection = config.getServer();
-    let rejectUnauthorized = daemonConnection ? daemonConnection.getRejectUnauthorized() : true;
-    
-    // load wasm module
-    let module = await LibraryUtils.loadFullModule();
-    
-    // create wallet in queue
-    let wallet = await module.queueTask(async function() {
-      return new Promise(function(resolve, reject) {
-        
-        // register fn informing if unauthorized reqs should be rejected
-        let rejectUnauthorizedFnId = GenUtils.getUUID();
-        LibraryUtils.setRejectUnauthorizedFn(rejectUnauthorizedFnId, function() { return rejectUnauthorized });
-      
-        // define callback for wasm
-        let callbackFn = async function(cppAddress) {
-          if (typeof cppAddress === "string") reject(new MoneroError(cppAddress));
-          else resolve(new MoneroWalletFull(cppAddress, config.getPath(), config.getPassword(), config.getFs(), config.getRejectUnauthorized(), rejectUnauthorizedFnId));
-        };
-        
-        // create wallet in wasm and invoke callback when done
-        module.create_full_wallet(JSON.stringify(config.toJson()), rejectUnauthorizedFnId, callbackFn);
-      });
-    });
-    
-    // save wallet
-    if (config.getPath()) await wallet.save();
-    return wallet;
-  }
-  
-  static async getSeedLanguages() {
-    let module = await LibraryUtils.loadFullModule();
-    return module.queueTask(async function() {
-      return JSON.parse(module.get_keys_wallet_seed_languages()).languages;
-    });
-  }
-  
-  // --------------------------- INSTANCE METHODS -----------------------------
-  
-  /**
-   * Internal constructor which is given the memory address of a C++ wallet
-   * instance.
-   * 
-   * This method should not be called externally but should be called through
-   * static wallet creation utilities in this class.
-   * 
-   * @param {int} cppAddress - address of the wallet instance in C++
-   * @param {string} path - path of the wallet instance
-   * @param {string} password - password of the wallet instance
-   * @param {FileSystem} fs - node.js-compatible file system to read/write wallet files
-   * @param {boolean} rejectUnauthorized - specifies if unauthorized requests (e.g. self-signed certificates) should be rejected
-   * @param {string} rejectUnauthorizedFnId - unique identifier for http_client_wasm to query rejectUnauthorized
-   */
-  constructor(cppAddress, path, password, fs, rejectUnauthorized, rejectUnauthorizedFnId) {
-    super(cppAddress);
-    this._path = path;
-    this._password = password;
-    this._listeners = [];
-    this._fs = fs ? fs : (path ? MoneroWalletFull._getFs() : undefined);
-    this._isClosed = false;
-    this._fullListener = new WalletFullListener(this); // receives notifications from wasm c++
-    this._fullListenerHandle = 0;                      // memory address of the wallet listener in c++
-    this._rejectUnauthorized = rejectUnauthorized;
-    this._rejectUnauthorizedConfigId = rejectUnauthorizedFnId;
-    this._syncPeriodInMs = MoneroWalletFull.DEFAULT_SYNC_PERIOD_IN_MS;
-    let that = this;
-    LibraryUtils.setRejectUnauthorizedFn(rejectUnauthorizedFnId, function() { return that._rejectUnauthorized }); // register fn informing if unauthorized reqs should be rejected
-  }
-  
-  // ------------ WALLET METHODS SPECIFIC TO WASM IMPLEMENTATION --------------
-  
-  /**
-   * Get the maximum height of the peers the wallet's daemon is connected to.
-   *
-   * @return {number} the maximum height of the peers the wallet's daemon is connected to
-   */
-  async getDaemonMaxPeerHeight() {
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      return new Promise(function(resolve, reject) {
-      
-        // define callback for wasm
-        let callbackFn = function(resp) {
-          resolve(resp);
-        }
-        
-        // call wasm and invoke callback when done
-        that._module.get_daemon_max_peer_height(that._cppAddress, callbackFn);
-      });
-    });
-  }
-  
-  /**
-   * Indicates if the wallet's daemon is synced with the network.
-   * 
-   * @return {boolean} true if the daemon is synced with the network, false otherwise
-   */
-  async isDaemonSynced() {
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      return new Promise(function(resolve, reject) {
-      
-        // define callback for wasm
-        let callbackFn = function(resp) {
-          resolve(resp);
-        }
-        
-        // call wasm and invoke callback when done
-        that._module.is_daemon_synced(that._cppAddress, callbackFn);
-      });
-    });
-  }
-  
-  /**
-   * Indicates if the wallet is synced with the daemon.
-   * 
-   * @return {boolean} true if the wallet is synced with the daemon, false otherwise
-   */
-  async isSynced() {
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      return new Promise(function(resolve, reject) {
-      
-        // define callback for wasm
-        let callbackFn = function(resp) {
-          resolve(resp);
-        }
-        
-        // call wasm and invoke callback when done
-        that._module.is_synced(that._cppAddress, callbackFn);
-      });
-    });
-  }
-  
-  /**
-   * Get the wallet's network type (mainnet, testnet, or stagenet).
-   * 
-   * @return {MoneroNetworkType} the wallet's network type
-   */
-  async getNetworkType() {
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      return that._module.get_network_type(that._cppAddress);
-    });
-  }
-  
-  /**
-   * Get the height of the first block that the wallet scans.
-   * 
-   * @return {number} the height of the first block that the wallet scans
-   */
-  async getRestoreHeight() {
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      return that._module.get_restore_height(that._cppAddress);
-    });
-  }
-  
-  /**
-   * Set the height of the first block that the wallet scans.
-   * 
-   * @param {number} restoreHeight - height of the first block that the wallet scans
-   */
-  async setRestoreHeight(restoreHeight) {
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      return that._module.set_restore_height(that._cppAddress, restoreHeight);
-    });
-  }
-  
-  /**
-   * Move the wallet from its current path to the given path.
-   * 
-   * @param {string} path - the wallet's destination path
-   */
-  async moveTo(path) {
-    return MoneroWalletFull._moveTo(path, this);
-  }
-  
-  // -------------------------- COMMON WALLET METHODS -------------------------
-  
-  async addListener(listener) {
-    this._assertNotClosed();
-    assert(listener instanceof MoneroWalletListener, "Listener must be instance of MoneroWalletListener");
-    this._listeners.push(listener);
-    await this._refreshListening();
-  }
-  
-  async removeListener(listener) {
-    this._assertNotClosed();
-    let idx = this._listeners.indexOf(listener);
-    if (idx > -1) this._listeners.splice(idx, 1);
-    else throw new MoneroError("Listener is not registered with wallet");
-    await this._refreshListening();
-  }
-  
-  getListeners() {
-    this._assertNotClosed();
-    return this._listeners;
-  }
-  
-  async setDaemonConnection(uriOrRpcConnection) {
-    this._assertNotClosed();
-    
-    // normalize connection
-    let connection = !uriOrRpcConnection ? undefined : uriOrRpcConnection instanceof MoneroRpcConnection ? uriOrRpcConnection : new MoneroRpcConnection(uriOrRpcConnection);
-    let uri = connection && connection.getUri() ? connection.getUri() : "";
-    let username = connection && connection.getUsername() ? connection.getUsername() : "";
-    let password = connection && connection.getPassword() ? connection.getPassword() : "";
-    let rejectUnauthorized = connection ? connection.getRejectUnauthorized() : undefined;
-    this._rejectUnauthorized = rejectUnauthorized;  // persist locally
-    
-    // set connection in queue
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      return new Promise(function(resolve, reject) {
-      
-        // define callback for wasm
-        let callbackFn = function(resp) { resolve(); }
-        
-        // call wasm and invoke callback when done
-        that._module.set_daemon_connection(that._cppAddress, uri, username, password, callbackFn);
-      });
-    });
-  }
-  
-  async getDaemonConnection() {
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      return new Promise(function(resolve, reject) {
-        let connectionContainerStr = that._module.get_daemon_connection(that._cppAddress);
-        if (!connectionContainerStr) resolve();
-        else {
-          let jsonConnection = JSON.parse(connectionContainerStr);
-          resolve(new MoneroRpcConnection(jsonConnection.uri, jsonConnection.username, jsonConnection.password, that._rejectUnauthorized));
-        }
-      });
-    });
-  }
-  
-  async isConnectedToDaemon() {
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      return new Promise(function(resolve, reject) {
-      
-        // define callback for wasm
-        let callbackFn = function(resp) {
-          resolve(resp);
-        }
-        
-        // call wasm and invoke callback when done
-        that._module.is_connected_to_daemon(that._cppAddress, callbackFn);
-      });
-    });
-  }
-  
-  async getVersion() {
-    this._assertNotClosed();
-    throw new MoneroError("Not implemented");
-  }
-  
-  async getPath() {
-    this._assertNotClosed();
-    return this._path;
-  }
-  
-  async getIntegratedAddress(standardAddress, paymentId) {
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      try {
-        let result = that._module.get_integrated_address(that._cppAddress, standardAddress ? standardAddress : "", paymentId ? paymentId : "");
-        if (result.charAt(0) !== "{") throw new MoneroError(result);
-        return new MoneroIntegratedAddress(JSON.parse(result));
-      } catch (err) {
-        if (err.message.includes("Invalid payment ID")) throw new MoneroError("Invalid payment ID: " + paymentId);
-        throw new MoneroError(err.message);
-      }
-    });
-  }
-  
-  async decodeIntegratedAddress(integratedAddress) {
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      try {
-        let result = that._module.decode_integrated_address(that._cppAddress, integratedAddress);
-        if (result.charAt(0) !== "{") throw new MoneroError(result);
-        return new MoneroIntegratedAddress(JSON.parse(result));
-      } catch (err) {
-        throw new MoneroError(err.message);
-      }
-    });
-  }
-  
-  async getHeight() {
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      return new Promise(function(resolve, reject) {
-        
-        // define callback for wasm
-        let callbackFn = function(resp) {
-          resolve(resp);
-        }
-        
-        // call wasm and invoke callback when done
-        that._module.get_height(that._cppAddress, callbackFn);
-      });
-    });
-  }
-  
-  async getDaemonHeight() {
-    this._assertNotClosed();
-    if (!(await this.isConnectedToDaemon())) throw new MoneroError("Wallet is not connected to daemon");
-    
-    // schedule task
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      return new Promise(function(resolve, reject) {
-        
-        // define callback for wasm
-        let callbackFn = function(resp) {
-          resolve(resp);
-        }
-        
-        // call wasm and invoke callback when done
-        that._module.get_daemon_height(that._cppAddress, callbackFn);
-      });
-    });
-  }
-  
-  async getHeightByDate(year, month, day) {
-    this._assertNotClosed();
-    if (!(await this.isConnectedToDaemon())) throw new MoneroError("Wallet is not connected to daemon");
-    
-    // schedule task
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      return new Promise(function(resolve, reject) {
-        
-        // define callback for wasm
-        let callbackFn = function(resp) {
-          if (typeof resp === "string") reject(new MoneroError(resp));
-          else resolve(resp);
-        }
-        
-        // call wasm and invoke callback when done
-        that._module.get_height_by_date(that._cppAddress, year, month, day, callbackFn);
-      });
-    });
-  }
-  
-  /**
-   * Synchronize the wallet with the daemon as a one-time synchronous process.
-   * 
-   * @param {MoneroWalletListener|number} listenerOrStartHeight - listener xor start height (defaults to no sync listener, the last synced block)
-   * @param {number} startHeight - startHeight if not given in first arg (defaults to last synced block)
-   * @param {bool} allowConcurrentCalls - allow other wallet methods to be processed simultaneously during sync (default false)<br><br><b>WARNING</b>: enabling this option will crash wallet execution if another call makes a simultaneous network request. TODO: possible to sync wasm network requests in http_client_wasm.cpp? 
-   */
-  async sync(listenerOrStartHeight, startHeight, allowConcurrentCalls) {
-    this._assertNotClosed();
-    if (!(await this.isConnectedToDaemon())) throw new MoneroError("Wallet is not connected to daemon");
-    
-    // normalize params
-    startHeight = listenerOrStartHeight === undefined || listenerOrStartHeight instanceof MoneroWalletListener ? startHeight : listenerOrStartHeight;
-    let listener = listenerOrStartHeight instanceof MoneroWalletListener ? listenerOrStartHeight : undefined;
-    if (startHeight === undefined) startHeight = Math.max(await this.getHeight(), await this.getRestoreHeight());
-    
-    // register listener if given
-    if (listener) await this.addListener(listener);
-    
-    // sync wallet
-    let err;
-    let result;
-    try {
-      let that = this;
-      result = await (allowConcurrentCalls ? syncWasm() : that._module.queueTask(async function() { return syncWasm(); }));
-      function syncWasm() {
-        that._assertNotClosed();
-        return new Promise(function(resolve, reject) {
-        
-          // define callback for wasm
-          let callbackFn = async function(resp) {
-            if (resp.charAt(0) !== "{") reject(new MoneroError(resp));
-            else {
-              let respJson = JSON.parse(resp);
-              resolve(new MoneroSyncResult(respJson.numBlocksFetched, respJson.receivedMoney));
-            }
-          }
-          
-          // sync wallet in wasm and invoke callback when done
-          that._module.sync(that._cppAddress, startHeight, callbackFn);
-        });
-      }
-    } catch (e) {
-      err = e;
-    }
-    
-    // unregister listener
-    if (listener) await this.removeListener(listener);
-    
-    // throw error or return
-    if (err) throw err;
-    return result;
-  }
-  
-  async startSyncing(syncPeriodInMs) {
-    this._assertNotClosed();
-    if (!(await this.isConnectedToDaemon())) throw new MoneroError("Wallet is not connected to daemon");
-    this._syncPeriodInMs = syncPeriodInMs === undefined ? MoneroWalletFull.DEFAULT_SYNC_PERIOD_IN_MS : syncPeriodInMs;
-    let that = this;
-    if (!this._syncLooper) this._syncLooper = new TaskLooper(async function() { await that._backgroundSync(); })
-    this._syncLooper.start(this._syncPeriodInMs);
-  }
-    
-  async stopSyncing() {
-    this._assertNotClosed();
-    if (this._syncLooper) this._syncLooper.stop();
-    this._module.stop_syncing(this._cppAddress); // task is not queued so wallet stops immediately
-  }
-  
-  async scanTxs(txHashes) {
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      return new Promise(function(resolve, reject) {
-        let callbackFn = function(err) {
-          if (err) reject(new MoneroError(msg));
-          else resolve();
-        } 
-        that._module.scan_txs(that._cppAddress, JSON.stringify({txHashes: txHashes}), callbackFn);
-      });
-    });
-  }
-  
-  async rescanSpent() {
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      return new Promise(function(resolve, reject) {
-        let callbackFn = function() { resolve(); }
-        that._module.rescan_spent(that._cppAddress, callbackFn);
-      });
-    });
-  }
-  
-  async rescanBlockchain() {
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      return new Promise(function(resolve, reject) {
-        let callbackFn = function() { resolve(); }
-        that._module.rescan_blockchain(that._cppAddress, callbackFn);
-      });
-    });
-  }
-  
-  async getBalance(accountIdx, subaddressIdx) {
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      
-      // get balance encoded in json string
-      let balanceStr;
-      if (accountIdx === undefined) {
-        assert(subaddressIdx === undefined, "Subaddress index must be undefined if account index is undefined");
-        balanceStr = that._module.get_balance_wallet(that._cppAddress);
-      } else if (subaddressIdx === undefined) {
-        balanceStr = that._module.get_balance_account(that._cppAddress, accountIdx);
-      } else {
-        balanceStr = that._module.get_balance_subaddress(that._cppAddress, accountIdx, subaddressIdx);
-      }
-      
-      // parse json string to BigInteger
-      return BigInteger.parse(JSON.parse(GenUtils.stringifyBIs(balanceStr)).balance);
-    });
-  }
-  
-  async getUnlockedBalance(accountIdx, subaddressIdx) {
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      
-      // get balance encoded in json string
-      let unlockedBalanceStr;
-      if (accountIdx === undefined) {
-        assert(subaddressIdx === undefined, "Subaddress index must be undefined if account index is undefined");
-        unlockedBalanceStr = that._module.get_unlocked_balance_wallet(that._cppAddress);
-      } else if (subaddressIdx === undefined) {
-        unlockedBalanceStr = that._module.get_unlocked_balance_account(that._cppAddress, accountIdx);
-      } else {
-        unlockedBalanceStr = that._module.get_unlocked_balance_subaddress(that._cppAddress, accountIdx, subaddressIdx);
-      }
-      
-      // parse json string to BigInteger
-      return BigInteger.parse(JSON.parse(GenUtils.stringifyBIs(unlockedBalanceStr)).unlockedBalance);
-    });
-  }
-  
-  async getAccounts(includeSubaddresses, tag) {
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      let accountsStr = that._module.get_accounts(that._cppAddress, includeSubaddresses ? true : false, tag ? tag : "");
-      let accounts = [];
-      for (let accountJson of JSON.parse(GenUtils.stringifyBIs(accountsStr)).accounts) {
-        accounts.push(MoneroWalletFull._sanitizeAccount(new MoneroAccount(accountJson)));
-      }
-      return accounts;
-    });
-  }
-  
-  async getAccount(accountIdx, includeSubaddresses) {
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      let accountStr = that._module.get_account(that._cppAddress, accountIdx, includeSubaddresses ? true : false);
-      let accountJson = JSON.parse(GenUtils.stringifyBIs(accountStr));
-      return MoneroWalletFull._sanitizeAccount(new MoneroAccount(accountJson));
-    });
-
-  }
-  
-  async createAccount(label) {
-    if (label === undefined) label = "";
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      let accountStr = that._module.create_account(that._cppAddress, label);
-      let accountJson = JSON.parse(GenUtils.stringifyBIs(accountStr));
-      return MoneroWalletFull._sanitizeAccount(new MoneroAccount(accountJson));
-    });
-  }
-  
-  async getSubaddresses(accountIdx, subaddressIndices) {
-    let args = {accountIdx: accountIdx, subaddressIndices: subaddressIndices === undefined ? [] : GenUtils.listify(subaddressIndices)};
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      let subaddressesJson = JSON.parse(GenUtils.stringifyBIs(that._module.get_subaddresses(that._cppAddress, JSON.stringify(args)))).subaddresses;
-      let subaddresses = [];
-      for (let subaddressJson of subaddressesJson) subaddresses.push(MoneroWalletFull._sanitizeSubaddress(new MoneroSubaddress(subaddressJson)));
-      return subaddresses;
-    });
-  }
-  
-  async createSubaddress(accountIdx, label) {
-    if (label === undefined) label = "";
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      let subaddressStr = that._module.create_subaddress(that._cppAddress, accountIdx, label);
-      let subaddressJson = JSON.parse(GenUtils.stringifyBIs(subaddressStr));
-      return MoneroWalletFull._sanitizeSubaddress(new MoneroSubaddress(subaddressJson));
-    });
-  }
-
-  async setSubaddressLabel(accountIdx, subaddressIdx, label) {
-    if (label === undefined) label = "";
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      that._module.set_subaddress_label(that._cppAddress, accountIdx, subaddressIdx, label);
-    });
-  }
-  
-  async getTxs(query) {
-    this._assertNotClosed();
-    
-    // copy and normalize query up to block
-    query = MoneroWallet._normalizeTxQuery(query);
-    
-    // schedule task
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      return new Promise(function(resolve, reject) {
-        
-        // define callback for wasm
-        let callbackFn = function(blocksJsonStr) {
-            
-          // check for error
-          if (blocksJsonStr.charAt(0) !== "{") {
-            reject(new MoneroError(blocksJsonStr));
-            return;
-          }
-          
-          // resolve with deserialized txs
-          try {
-            resolve(MoneroWalletFull._deserializeTxs(query, blocksJsonStr));
-          } catch (err) {
-            reject(err);
-          }
-        }
-        
-        // call wasm and invoke callback when done
-        that._module.get_txs(that._cppAddress, JSON.stringify(query.getBlock().toJson()), callbackFn);
-      });
-    });
-  }
-  
-  async getTransfers(query) {
-    this._assertNotClosed();
-    
-    // copy and normalize query up to block
-    query = MoneroWallet._normalizeTransferQuery(query);
-    
-    // return promise which resolves on callback
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      return new Promise(function(resolve, reject) {
-        
-        // define callback for wasm
-        let callbackFn = function(blocksJsonStr) {
-            
-          // check for error
-          if (blocksJsonStr.charAt(0) !== "{") {
-            reject(new MoneroError(blocksJsonStr));
-            return;
-          }
-           
-          // resolve with deserialized transfers 
-          try {
-            resolve(MoneroWalletFull._deserializeTransfers(query, blocksJsonStr));
-          } catch (err) {
-            reject(err);
-          }
-        }
-        
-        // call wasm and invoke callback when done
-        that._module.get_transfers(that._cppAddress, JSON.stringify(query.getTxQuery().getBlock().toJson()), callbackFn);
-      });
-    });
-  }
-  
-  async getOutputs(query) {
-    this._assertNotClosed();
-    
-    // copy and normalize query up to block
-    query = MoneroWallet._normalizeOutputQuery(query);
-    
-    // return promise which resolves on callback
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      return new Promise(function(resolve, reject) {
-        
-        // define callback for wasm
-        let callbackFn = function(blocksJsonStr) {
-          
-          // check for error
-          if (blocksJsonStr.charAt(0) !== "{") {
-            reject(new MoneroError(blocksJsonStr));
-            return;
-          }
-          
-          // resolve with deserialized outputs
-          try {
-            resolve(MoneroWalletFull._deserializeOutputs(query, blocksJsonStr));
-          } catch (err) {
-            reject(err);
-          }
-        }
-        
-        // call wasm and invoke callback when done
-        that._module.get_outputs(that._cppAddress, JSON.stringify(query.getTxQuery().getBlock().toJson()), callbackFn);
-      });
-    });
-  }
-  
-  async exportOutputs(all) {
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      return new Promise(function(resolve, reject) {
-        that._module.export_outputs(that._cppAddress, all, function(outputsHex) { resolve(outputsHex); });
-      });
-    });
-  }
-  
-  async importOutputs(outputsHex) {
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      return new Promise(function(resolve, reject) {
-        that._module.import_outputs(that._cppAddress, outputsHex, function(numImported) { resolve(numImported); });
-      });
-    });
-  }
-  
-  async exportKeyImages(all) {
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      return new Promise(function(resolve, reject) {
-        let callback = function(keyImagesStr) {
-          if (keyImagesStr.charAt(0) !== '{') reject(new MoneroError(keyImagesStr)); // json expected, else error
-          let keyImages = [];
-          for (let keyImageJson of JSON.parse(GenUtils.stringifyBIs(keyImagesStr)).keyImages) keyImages.push(new MoneroKeyImage(keyImageJson));
-          resolve(keyImages);
-        }
-        that._module.export_key_images(that._cppAddress, all, callback);
-      });
-    });
-  }
-  
-  async importKeyImages(keyImages) {
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      return new Promise(function(resolve, reject) {
-        let callback = function(keyImageImportResultStr) {
-          resolve(new MoneroKeyImageImportResult(JSON.parse(GenUtils.stringifyBIs(keyImageImportResultStr))));
-        }
-        that._module.import_key_images(that._cppAddress, JSON.stringify({keyImages: keyImages.map(keyImage => keyImage.toJson())}), callback);
-      });
-    });
-  }
-  
-  async getNewKeyImagesFromLastImport() {
-    this._assertNotClosed();
-    throw new MoneroError("Not implemented");
-  }
-  
-  async freezeOutput(keyImage) {
-    if (!keyImage) throw new MoneroError("Must specify key image to freeze");
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      return new Promise(function(resolve, reject) {
-        let callbackFn = function() { resolve(); }
-        that._module.freeze_output(that._cppAddress, keyImage, callbackFn);
-      });
-    });
-  }
-  
-  async thawOutput(keyImage) {
-    if (!keyImage) throw new MoneroError("Must specify key image to thaw");
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      return new Promise(function(resolve, reject) {
-        let callbackFn = function() { resolve(); }
-        that._module.thaw_output(that._cppAddress, keyImage, callbackFn);
-      });
-    });
-  }
-  
-  async isOutputFrozen(keyImage) {
-    if (!keyImage) throw new MoneroError("Must specify key image to check if frozen");
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      return new Promise(function(resolve, reject) {
-        let callbackFn = function(result) { resolve(result); }
-        that._module.is_output_frozen(that._cppAddress, keyImage, callbackFn);
-      });
-    });
-  }
-  
-  async createTxs(config) {
-    this._assertNotClosed();
-    
-    // validate, copy, and normalize config
-    config = MoneroWallet._normalizeCreateTxsConfig(config);
-    if (config.getCanSplit() === undefined) config.setCanSplit(true);
-    
-    // return promise which resolves on callback
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      return new Promise(function(resolve, reject) {
-        
-        // define callback for wasm
-        let callbackFn = function(txSetJsonStr) {
-          if (txSetJsonStr.charAt(0) !== '{') reject(new MoneroError(txSetJsonStr)); // json expected, else error
-          else resolve(new MoneroTxSet(JSON.parse(GenUtils.stringifyBIs(txSetJsonStr))).getTxs());
-        }
-        
-        // create txs in wasm and invoke callback when done
-        that._module.create_txs(that._cppAddress, JSON.stringify(config.toJson()), callbackFn);
-      });
-    });
-  }
-  
-  async sweepOutput(config) {
-    this._assertNotClosed();
-    
-    // normalize and validate config
-    config = MoneroWallet._normalizeSweepOutputConfig(config);
-    
-    // return promise which resolves on callback
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      return new Promise(function(resolve, reject) {
-        
-        // define callback for wasm
-        let callbackFn = function(txSetJsonStr) {
-          if (txSetJsonStr.charAt(0) !== '{') reject(new MoneroError(txSetJsonStr)); // json expected, else error
-          else resolve(new MoneroTxSet(JSON.parse(GenUtils.stringifyBIs(txSetJsonStr))).getTxs()[0]);
-        }
-        
-        // sweep output in wasm and invoke callback when done
-        that._module.sweep_output(that._cppAddress, JSON.stringify(config.toJson()), callbackFn);
-      });
-    });
-  }
-
-  async sweepUnlocked(config) {
-    this._assertNotClosed();
-    
-    // validate and normalize config
-    config = MoneroWallet._normalizeSweepUnlockedConfig(config);
-    
-    // return promise which resolves on callback
-    let that = this;
-    return that._module.queueTask(async function() { // TODO: could factor this pattern out, invoked with module params and callback handler
-      that._assertNotClosed();
-      return new Promise(function(resolve, reject) {
-        
-        // define callback for wasm
-        let callbackFn = function(txSetsJson) {
-          if (txSetsJson.charAt(0) !== '{') reject(new MoneroError(txSetsJson)); // json expected, else error
-          else {
-            let txSets = [];
-            for (let txSetJson of JSON.parse(GenUtils.stringifyBIs(txSetsJson)).txSets) txSets.push(new MoneroTxSet(txSetJson));
-            let txs = [];
-            for (let txSet of txSets) for (let tx of txSet.getTxs()) txs.push(tx);
-            resolve(txs);
-          }
-        }
-        
-        // sweep unlocked in wasm and invoke callback when done
-        that._module.sweep_unlocked(that._cppAddress, JSON.stringify(config.toJson()), callbackFn);
-      });
-    });
-  }
-  
-  async sweepDust(relay) {
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      return new Promise(function(resolve, reject) {
-        
-        // define callback for wasm
-        let callbackFn = function(txSetJsonStr) {
-          if (txSetJsonStr.charAt(0) !== '{') reject(new MoneroError(txSetJsonStr)); // json expected, else error
-          else {
-            let txSet = new MoneroTxSet(JSON.parse(GenUtils.stringifyBIs(txSetJsonStr)));
-            if (txSet.getTxs() === undefined) txSet.setTxs([]);
-            resolve(txSet.getTxs());
-          }
-        }
-        
-        // call wasm and invoke callback when done
-        that._module.sweep_dust(that._cppAddress, relay, callbackFn);
-      });
-    });
-  }
-  
-  async relayTxs(txsOrMetadatas) {
-    this._assertNotClosed();
-    assert(Array.isArray(txsOrMetadatas), "Must provide an array of txs or their metadata to relay");
-    let txMetadatas = [];
-    for (let txOrMetadata of txsOrMetadatas) txMetadatas.push(txOrMetadata instanceof MoneroTxWallet ? txOrMetadata.getMetadata() : txOrMetadata);
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      return new Promise(function(resolve, reject) {
-        let callback = function(txHashesJson) {
-          if (txHashesJson.charAt(0) !== "{") reject(new MoneroError(txHashesJson));
-          else resolve(JSON.parse(txHashesJson).txHashes);
-        }
-        that._module.relay_txs(that._cppAddress, JSON.stringify({txMetadatas: txMetadatas}), callback);
-      });
-    });
-  }
-  
-  async describeTxSet(txSet) {
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      txSet = new MoneroTxSet()
-              .setUnsignedTxHex(txSet.getUnsignedTxHex())
-              .setSignedTxHex(txSet.getSignedTxHex())
-              .setMultisigTxHex(txSet.getMultisigTxHex());
-      try { return new MoneroTxSet(JSON.parse(GenUtils.stringifyBIs(that._module.describe_tx_set(that._cppAddress, JSON.stringify(txSet.toJson()))))); }
-      catch (err) { throw new MoneroError(that._module.get_exception_message(err)); }
-    });
-  }
-  
-  async signTxs(unsignedTxHex) {
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      try { return that._module.sign_txs(that._cppAddress, unsignedTxHex); }
-      catch (err) { throw new MoneroError(that._module.get_exception_message(err)); }
-    });
-  }
-  
-  async submitTxs(signedTxHex) {
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      return new Promise(function(resolve, reject) {
-        let callbackFn = function(resp) {
-          if (resp.charAt(0) !== "{") reject(new MoneroError(resp));
-          else resolve(JSON.parse(resp).txHashes);
-        }
-        that._module.submit_txs(that._cppAddress, signedTxHex, callbackFn);
-      });
-    });
-  }
-  
-  async signMessage(message, signatureType, accountIdx, subaddressIdx) {
-    
-    // assign defaults
-    signatureType = signatureType || MoneroMessageSignatureType.SIGN_WITH_SPEND_KEY;
-    accountIdx = accountIdx || 0;
-    subaddressIdx = subaddressIdx || 0;
-    
-    // queue task to sign message
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      try { return that._module.sign_message(that._cppAddress, message, signatureType === MoneroMessageSignatureType.SIGN_WITH_SPEND_KEY ? 0 : 1, accountIdx, subaddressIdx); }
-      catch (err) { throw new MoneroError(that._module.get_exception_message(err)); }
-    });
-  }
-  
-  async verifyMessage(message, address, signature) {
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      let resultJson;
-      try {
-        resultJson = JSON.parse(that._module.verify_message(that._cppAddress, message, address, signature));
-      } catch (err) {
-        resultJson = {isGood: false};
-      }
-      let result = new MoneroMessageSignatureResult(
-        resultJson.isGood,
-        !resultJson.isGood ? undefined : resultJson.isOld,
-        !resultJson.isGood ? undefined : resultJson.signatureType === "spend" ? MoneroMessageSignatureType.SIGN_WITH_SPEND_KEY : MoneroMessageSignatureType.SIGN_WITH_VIEW_KEY,
-        !resultJson.isGood ? undefined : resultJson.version);
-      return result;
-    });
-  }
-  
-  async getTxKey(txHash) {
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      try { return that._module.get_tx_key(that._cppAddress, txHash); }
-      catch (err) { throw new MoneroError(that._module.get_exception_message(err)); }
-    });
-  }
-  
-  async checkTxKey(txHash, txKey, address) {
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed(); 
-      return new Promise(function(resolve, reject) {
-        that._module.check_tx_key(that._cppAddress, txHash, txKey, address, function(respJsonStr) {
-          if (respJsonStr.charAt(0) !== "{") reject(new MoneroError(respJsonStr));
-          else resolve(new MoneroCheckTx(JSON.parse(GenUtils.stringifyBIs(respJsonStr))));
-        });
-      });
-    });
-  }
-  
-  async getTxProof(txHash, address, message) {
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      return new Promise(function(resolve, reject) {
-        that._module.get_tx_proof(that._cppAddress, txHash || "", address || "", message || "", function(signature) {
-          let errorKey = "error: ";
-          if (signature.indexOf(errorKey) === 0) reject(new MoneroError(signature.substring(errorKey.length)));
-          else resolve(signature);
-        });
-      });
-    });
-  }
-  
-  async checkTxProof(txHash, address, message, signature) {
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed(); 
-      return new Promise(function(resolve, reject) {
-        that._module.check_tx_proof(that._cppAddress, txHash || "", address || "", message || "", signature || "", function(respJsonStr) {
-          if (respJsonStr.charAt(0) !== "{") reject(new MoneroError(respJsonStr));
-          else resolve(new MoneroCheckTx(JSON.parse(GenUtils.stringifyBIs(respJsonStr))));
-        });
-      });
-    });
-  }
-  
-  async getSpendProof(txHash, message) {
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      return new Promise(function(resolve, reject) {
-        that._module.get_spend_proof(that._cppAddress, txHash || "", message || "", function(signature) {
-          let errorKey = "error: ";
-          if (signature.indexOf(errorKey) === 0) reject(new MoneroError(signature.substring(errorKey.length)));
-          else resolve(signature);
-        });
-      });
-    });
-  }
-  
-  async checkSpendProof(txHash, message, signature) {
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed(); 
-      return new Promise(function(resolve, reject) {
-        that._module.check_spend_proof(that._cppAddress, txHash || "", message || "", signature || "", function(resp) {
-          typeof resp === "string" ? reject(new MoneroError(resp)) : resolve(resp);
-        });
-      });
-    });
-  }
-  
-  async getReserveProofWallet(message) {
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      return new Promise(function(resolve, reject) {
-        that._module.get_reserve_proof_wallet(that._cppAddress, message, function(signature) {
-          let errorKey = "error: ";
-          if (signature.indexOf(errorKey) === 0) reject(new MoneroError(signature.substring(errorKey.length), -1));
-          else resolve(signature);
-        });
-      });
-    });
-  }
-  
-  async getReserveProofAccount(accountIdx, amount, message) {
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      return new Promise(function(resolve, reject) {
-        that._module.get_reserve_proof_account(that._cppAddress, accountIdx, amount.toString(), message, function(signature) {
-          let errorKey = "error: ";
-          if (signature.indexOf(errorKey) === 0) reject(new MoneroError(signature.substring(errorKey.length), -1));
-          else resolve(signature);
-        });
-      });
-    });
-  }
-
-  async checkReserveProof(address, message, signature) {
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed(); 
-      return new Promise(function(resolve, reject) {
-        that._module.check_reserve_proof(that._cppAddress, address, message, signature, function(respJsonStr) {
-          if (respJsonStr.charAt(0) !== "{") reject(new MoneroError(respJsonStr, -1));
-          else resolve(new MoneroCheckReserve(JSON.parse(GenUtils.stringifyBIs(respJsonStr))));
-        });
-      });
-    });
-  }
-  
-  async getTxNotes(txHashes) {
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      try { return JSON.parse(that._module.get_tx_notes(that._cppAddress, JSON.stringify({txHashes: txHashes}))).txNotes; }
-      catch (err) { throw new MoneroError(that._module.get_exception_message(err)); }
-    });
-  }
-  
-  async setTxNotes(txHashes, notes) {
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      try { that._module.set_tx_notes(that._cppAddress, JSON.stringify({txHashes: txHashes, txNotes: notes})); }
-      catch (err) { throw new MoneroError(that._module.get_exception_message(err)); }
-    });
-  }
-  
-  async getAddressBookEntries(entryIndices) {
-    if (!entryIndices) entryIndices = [];
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      let entries = [];
-      for (let entryJson of JSON.parse(that._module.get_address_book_entries(that._cppAddress, JSON.stringify({entryIndices: entryIndices}))).entries) {
-        entries.push(new MoneroAddressBookEntry(entryJson));
-      }
-      return entries;
-    });
-  }
-  
-  async addAddressBookEntry(address, description) {
-    if (!address) address = "";
-    if (!description) description = "";
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      return that._module.add_address_book_entry(that._cppAddress, address, description);
-    });
-  }
-  
-  async editAddressBookEntry(index, setAddress, address, setDescription, description) {
-    if (!setAddress) setAddress = false;
-    if (!address) address = "";
-    if (!setDescription) setDescription = false;
-    if (!description) description = "";
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      that._module.edit_address_book_entry(that._cppAddress, index, setAddress, address, setDescription, description);
-    });
-  }
-  
-  async deleteAddressBookEntry(entryIdx) {
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      that._module.delete_address_book_entry(that._cppAddress, entryIdx);
-    });
-  }
-  
-  async tagAccounts(tag, accountIndices) {
-    if (!tag) tag = "";
-    if (!accountIndices) accountIndices = [];
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      that._module.tag_accounts(that._cppAddress, JSON.stringify({tag: tag, accountIndices: accountIndices}));
-    });
-  }
-
-  async untagAccounts(accountIndices) {
-    if (!accountIndices) accountIndices = [];
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      that._module.tag_accounts(that._cppAddress, JSON.stringify({accountIndices: accountIndices}));
-    });
-  }
-  
-  async getAccountTags() {
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      let accountTags = [];
-      for (let accountTagJson of JSON.parse(that._module.get_account_tags(that._cppAddress)).accountTags) accountTags.push(new MoneroAccountTag(accountTagJson));
-      return accountTags;
-    });
-  }
-
-  async setAccountTagLabel(tag, label) {
-    if (!tag) tag = "";
-    if (!llabel) label = "";
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      that._module.set_account_tag_label(that._cppAddress, tag, label);
-    });
-  }
-  
-  async getPaymentUri(config) {
-    config = MoneroWallet._normalizeCreateTxsConfig(config);
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      try {
-        return that._module.get_payment_uri(that._cppAddress, JSON.stringify(config.toJson()));
-      } catch (err) {
-        throw new MoneroError("Cannot make URI from supplied parameters");
-      }
-    });
-  }
-  
-  async parsePaymentUri(uri) {
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      try {
-        return new MoneroTxConfig(JSON.parse(GenUtils.stringifyBIs(that._module.parse_payment_uri(that._cppAddress, uri))), true); // relax validation for unquoted big integers
-      } catch (err) {
-        throw new MoneroError(err.message);
-      }
-    });
-  }
-  
-  async getAttribute(key) {
-    this._assertNotClosed();
-    assert(typeof key === "string", "Attribute key must be a string");
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      let value = that._module.get_attribute(that._cppAddress, key);
-      return value === "" ? null : value;
-    });
-  }
-  
-  async setAttribute(key, val) {
-    this._assertNotClosed();
-    assert(typeof key === "string", "Attribute key must be a string");
-    assert(typeof val === "string", "Attribute value must be a string");
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      that._module.set_attribute(that._cppAddress, key, val);
-    });
-  }
-  
-  async startMining(numThreads, backgroundMining, ignoreBattery) {
-    this._assertNotClosed();
-    let daemon = new MoneroDaemonRpc(Object.assign((await this.getDaemonConnection()).getConfig(), {proxyToWorker: false}));
-    await daemon.startMining(await this.getPrimaryAddress(), numThreads, backgroundMining, ignoreBattery);
-  }
-  
-  async stopMining() {
-    this._assertNotClosed();
-    let daemon = new MoneroDaemonRpc(Object.assign((await this.getDaemonConnection()).getConfig(), {proxyToWorker: false}));
-    await daemon.stopMining();
-  }
-  
-  async isMultisigImportNeeded() {
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      return that._module.is_multisig_import_needed(that._cppAddress);
-    });
-  }
-  
-  async isMultisig() {
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      return that._module.is_multisig(that._cppAddress);
-    });
-  }
-  
-  async getMultisigInfo() {
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      return new MoneroMultisigInfo(JSON.parse(that._module.get_multisig_info(that._cppAddress)));
-    });
-  }
-  
-  async prepareMultisig() {
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      return that._module.prepare_multisig(that._cppAddress);
-    });
-  }
-  
-  async makeMultisig(multisigHexes, threshold, password) {
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      return new Promise(function(resolve, reject) {
-        that._module.make_multisig(that._cppAddress, JSON.stringify({multisigHexes: multisigHexes, threshold: threshold, password: password}), (resp) => {
-          let errorKey = "error: ";
-          if (resp.indexOf(errorKey) === 0) reject(new MoneroError(resp.substring(errorKey.length)));
-          else resolve(resp);
-        });
-      });
-    });
-  }
-  
-  async exchangeMultisigKeys(multisigHexes, password) {
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      return new Promise(function(resolve, reject) {
-        that._module.exchange_multisig_keys(that._cppAddress, JSON.stringify({multisigHexes: multisigHexes, password: password}), (resp) => {
-          let errorKey = "error: ";
-          if (resp.indexOf(errorKey) === 0) reject(new MoneroError(resp.substring(errorKey.length)));
-          else resolve(new MoneroMultisigInitResult(JSON.parse(resp)));
-        });
-      });
-    });
-  }
-  
-  async exportMultisigHex() {
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      return that._module.export_multisig_hex(that._cppAddress);
-    });
-  }
-  
-  async importMultisigHex(multisigHexes) {
-    if (!GenUtils.isArray(multisigHexes)) throw new MoneroError("Must provide string[] to importMultisigHex()")
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      return new Promise(function(resolve, reject) {
-        let callbackFn = function(resp) {
-          if (typeof resp === "string") reject(new MoneroError(resp));
-          else resolve(resp);
-        }
-        that._module.import_multisig_hex(that._cppAddress, JSON.stringify({multisigHexes: multisigHexes}), callbackFn);
-      });
-    });
-  }
-  
-  async signMultisigTxHex(multisigTxHex) {
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      return new Promise(function(resolve, reject) {
-        let callbackFn = async function(resp) {
-          if (resp.charAt(0) !== "{") reject(new MoneroError(resp));
-          else resolve(new MoneroMultisigSignResult(JSON.parse(resp)));
-        }
-        that._module.sign_multisig_tx_hex(that._cppAddress, multisigTxHex, callbackFn)
-      });
-    });
-  }
-  
-  async submitMultisigTxHex(signedMultisigTxHex) {
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      return new Promise(function(resolve, reject) {
-        let callbackFn = function(resp) { 
-          if (resp.charAt(0) !== "{") reject(new MoneroError(resp));
-          else resolve(JSON.parse(resp).txHashes);
-        }
-        that._module.submit_multisig_tx_hex(that._cppAddress, signedMultisigTxHex, callbackFn);
-      });
-    });
-  }
-  
-  /**
-   * Get the wallet's keys and cache data.
-   * 
-   * @return {DataView[]} is the keys and cache data, respectively
-   */
-  async getData() {
-    this._assertNotClosed();
-    
-    // queue call to wasm module
-    let viewOnly = await this.isViewOnly();
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      
-      // store views in array
-      let views = [];
-      
-      // malloc cache buffer and get buffer location in c++ heap
-      let cacheBufferLoc = JSON.parse(that._module.get_cache_file_buffer(that._cppAddress));
-      
-      // read binary data from heap to DataView
-      let view = new DataView(new ArrayBuffer(cacheBufferLoc.length));
-      for (let i = 0; i < cacheBufferLoc.length; i++) {
-        view.setInt8(i, that._module.HEAPU8[cacheBufferLoc.pointer / Uint8Array.BYTES_PER_ELEMENT + i]);
-      }
-      
-      // free binary on heap
-      that._module._free(cacheBufferLoc.pointer);
-      
-      // write cache file
-      views.push(Buffer.from(view.buffer));
-      
-      // malloc keys buffer and get buffer location in c++ heap
-      let keysBufferLoc = JSON.parse(that._module.get_keys_file_buffer(that._cppAddress, that._password, viewOnly));
-      
-      // read binary data from heap to DataView
-      view = new DataView(new ArrayBuffer(keysBufferLoc.length));
-      for (let i = 0; i < keysBufferLoc.length; i++) {
-        view.setInt8(i, that._module.HEAPU8[keysBufferLoc.pointer / Uint8Array.BYTES_PER_ELEMENT + i]);
-      }
-      
-      // free binary on heap
-      that._module._free(keysBufferLoc.pointer);
-      
-      // prepend keys file
-      views.unshift(Buffer.from(view.buffer));
-      return views;
-    });
-  }
-  
-  async changePassword(oldPassword, newPassword) {
-    if (oldPassword !== this._password) throw new MoneroError("Invalid original password."); // wallet2 verify_password loads from disk so verify password here
-    if (newPassword === undefined) newPassword = "";
-    let that = this;
-    await that._module.queueTask(async function() {
-      that._assertNotClosed();
-      return new Promise(function(resolve, reject) {
-        that._module.change_wallet_password(that._cppAddress, oldPassword, newPassword, async function(errMsg) {
-          if (errMsg) reject(new MoneroError(errMsg));
-          else resolve();
-        });
-      });
-    });
-    this._password = newPassword;
-    if (this._path) await this.save(); // auto save
-  }
-  
-  async save() {
-    return MoneroWalletFull._save(this);
-  }
-  
-  async close(save) {
-    if (this._isClosed) return; // no effect if closed
-    await this._refreshListening();
-    await this.stopSyncing();
-    await super.close(save);
-    delete this._path;
-    delete this._password;
-    delete this._listeners;
-    delete this._fullListener;
-    LibraryUtils.setRejectUnauthorizedFn(this._rejectUnauthorizedConfigId, undefined); // unregister fn informing if unauthorized reqs should be rejected
-  }
-  
-  // ----------- ADD JSDOC FOR SUPPORTED DEFAULT IMPLEMENTATIONS --------------
-  
-  async getNumBlocksToUnlock() { return super.getNumBlocksToUnlock(...arguments); }
-  async getTx() { return super.getTx(...arguments); }
-  async getIncomingTransfers() { return super.getIncomingTransfers(...arguments); }
-  async getOutgoingTransfers() { return super.getOutgoingTransfers(...arguments); }
-  async createTx() { return super.createTx(...arguments); }
-  async relayTx() { return super.relayTx(...arguments); }
-  async getTxNote() { return super.getTxNote(...arguments); }
-  async setTxNote() { return super.setTxNote(...arguments); }
-  
-  // ---------------------------- PRIVATE HELPERS ----------------------------
-  
-  static _getFs() {
-    if (!MoneroWalletFull.FS) MoneroWalletFull.FS = GenUtils.isBrowser() ? undefined : require('fs');
-    return MoneroWalletFull.FS;
-  }
-  
-  static async _openWalletData(path, password, networkType, keysData, cacheData, daemonUriOrConnection, proxyToWorker, fs) {
-    if (proxyToWorker) return MoneroWalletFullProxy.openWalletData(path, password, networkType, keysData, cacheData, daemonUriOrConnection, fs);
-    
-    // validate and normalize parameters
-    if (networkType === undefined) throw new MoneroError("Must provide the wallet's network type");
-    MoneroNetworkType.validate(networkType);
-    let daemonConnection = typeof daemonUriOrConnection === "string" ? new MoneroRpcConnection(daemonUriOrConnection) : daemonUriOrConnection;
-    let daemonUri = daemonConnection && daemonConnection.getUri() ? daemonConnection.getUri() : "";
-    let daemonUsername = daemonConnection && daemonConnection.getUsername() ? daemonConnection.getUsername() : "";
-    let daemonPassword = daemonConnection && daemonConnection.getPassword() ? daemonConnection.getPassword() : "";
-    let rejectUnauthorized = daemonConnection ? daemonConnection.getRejectUnauthorized() : true;
-    
-    // load wasm module
-    let module = await LibraryUtils.loadFullModule();
-    
-    // open wallet in queue
-    return module.queueTask(async function() {
-      return new Promise(function(resolve, reject) {
-        
-        // register fn informing if unauthorized reqs should be rejected
-        let rejectUnauthorizedFnId = GenUtils.getUUID();
-        LibraryUtils.setRejectUnauthorizedFn(rejectUnauthorizedFnId, function() { return rejectUnauthorized });
-      
-        // define callback for wasm
-        let callbackFn = async function(cppAddress) {
-          if (typeof cppAddress === "string") reject(new MoneroError(cppAddress));
-          else resolve(new MoneroWalletFull(cppAddress, path, password, fs, rejectUnauthorized, rejectUnauthorizedFnId));
-        };
-        
-        // create wallet in wasm and invoke callback when done
-        module.open_wallet_full(password, networkType, keysData, cacheData, daemonUri, daemonUsername, daemonPassword, rejectUnauthorizedFnId, callbackFn);
-      });
-    });
-  }
-  
-  async _backgroundSync() {
-    let label = this._path ? this._path : (this._browserMainPath ? this._browserMainPath : "in-memory wallet"); // label for log
-    LibraryUtils.log(1, "Background synchronizing " + label);
-    try { await this.sync(); }
-    catch (err) { if (!this._isClosed) console.error("Failed to background synchronize " + label + ": " + err.message); }
-  }
-  
-  async _refreshListening() {
-    let isEnabled = this._listeners.length > 0;
-    let that = this;
-    if (that._fullListenerHandle === 0 && !isEnabled || that._fullListenerHandle > 0 && isEnabled) return; // no difference
-    return that._module.queueTask(async function() {
-      return new Promise(function(resolve, reject) {
-        that._module.set_listener(
-            that._cppAddress,
-            that._fullListenerHandle,
-            newListenerHandle => {
-              if (typeof newListenerHandle === "string") reject(new MoneroError(newListenerHandle));
-              else {
-                that._fullListenerHandle = newListenerHandle;
-                resolve();
-              }
-            },
-            isEnabled ? async function(height, startHeight, endHeight, percentDone, message) { await that._fullListener.onSyncProgress(height, startHeight, endHeight, percentDone, message); } : undefined,
-            isEnabled ? async function(height) { await that._fullListener.onNewBlock(height); } : undefined,
-            isEnabled ? async function(newBalanceStr, newUnlockedBalanceStr) { await that._fullListener.onBalancesChanged(newBalanceStr, newUnlockedBalanceStr); } : undefined,
-            isEnabled ? async function(height, txHash, amountStr, accountIdx, subaddressIdx, version, unlockTime, isLocked) { await that._fullListener.onOutputReceived(height, txHash, amountStr, accountIdx, subaddressIdx, version, unlockTime, isLocked); } : undefined,
-            isEnabled ? async function(height, txHash, amountStr, accountIdxStr, subaddressIdxStr, version, unlockTime, isLocked) { await that._fullListener.onOutputSpent(height, txHash, amountStr, accountIdxStr, subaddressIdxStr, version, unlockTime, isLocked); } : undefined,
-        );
-      });
-    });
-  }
-  
-  static _sanitizeBlock(block) {
-    for (let tx of block.getTxs()) MoneroWalletFull._sanitizeTxWallet(tx);
-    return block;
-  }
-  
-  static _sanitizeTxWallet(tx) {
-    assert(tx instanceof MoneroTxWallet);
-    return tx;
-  }
-  
-  static _sanitizeAccount(account) {
-    if (account.getSubaddresses()) {
-      for (let subaddress of account.getSubaddresses()) MoneroWalletFull._sanitizeSubaddress(subaddress);
-    }
-    return account;
-  }
-  
-  static _sanitizeSubaddress(subaddress) {
-    if (subaddress.getLabel() === "") subaddress.setLabel(undefined);
-    return subaddress
-  }
-  
-  static _deserializeBlocks(blocksJsonStr) {
-    let blocksJson = JSON.parse(GenUtils.stringifyBIs(blocksJsonStr));
-    let deserializedBlocks = {};
-    deserializedBlocks.blocks = [];
-    if (blocksJson.blocks) for (let blockJson of blocksJson.blocks) deserializedBlocks.blocks.push(MoneroWalletFull._sanitizeBlock(new MoneroBlock(blockJson, MoneroBlock.DeserializationType.TX_WALLET)));
-    return deserializedBlocks;
-  }
-  
-  static _deserializeTxs(query, blocksJsonStr) {
-    
-    // deserialize blocks
-    let deserializedBlocks = MoneroWalletFull._deserializeBlocks(blocksJsonStr);
-    let blocks = deserializedBlocks.blocks;
-    
-    // collect txs
-    let txs = [];
-    for (let block of blocks) {
-      MoneroWalletFull._sanitizeBlock(block);
-      for (let tx of block.getTxs()) {
-        if (block.getHeight() === undefined) tx.setBlock(undefined); // dereference placeholder block for unconfirmed txs
-        txs.push(tx);
-      }
-    }
-    
-    // re-sort txs which is lost over wasm serialization  // TODO: confirm that order is lost
-    if (query.getHashes() !== undefined) {
-      let txMap = new Map();
-      for (let tx of txs) txMap[tx.getHash()] = tx;
-      let txsSorted = [];
-      for (let txHash of query.getHashes()) if (txMap[txHash] !== undefined) txsSorted.push(txMap[txHash]);
-      txs = txsSorted;
-    }
-    
-    return txs;
-  }
-  
-  static _deserializeTransfers(query, blocksJsonStr) {
-    
-    // deserialize blocks
-    let deserializedBlocks = MoneroWalletFull._deserializeBlocks(blocksJsonStr);
-    let blocks = deserializedBlocks.blocks;
-    
-    // collect transfers
-    let transfers = [];
-    for (let block of blocks) {
-      for (let tx of block.getTxs()) {
-        if (block.getHeight() === undefined) tx.setBlock(undefined); // dereference placeholder block for unconfirmed txs
-        if (tx.getOutgoingTransfer() !== undefined) transfers.push(tx.getOutgoingTransfer());
-        if (tx.getIncomingTransfers() !== undefined) {
-          for (let transfer of tx.getIncomingTransfers()) transfers.push(transfer);
-        }
-      }
-    }
-    
-    return transfers;
-  }
-  
-  static _deserializeOutputs(query, blocksJsonStr) {
-    
-    // deserialize blocks
-    let deserializedBlocks = MoneroWalletFull._deserializeBlocks(blocksJsonStr);
-    let blocks = deserializedBlocks.blocks;
-    
-    // collect outputs
-    let outputs = [];
-    for (let block of blocks) {
-      for (let tx of block.getTxs()) {
-        for (let output of tx.getOutputs()) outputs.push(output);
-      }
-    }
-    
-    return outputs;
-  }
-  
-  /**
-   * Set the path of the wallet on the browser main thread if run as a worker.
-   * 
-   * @param {string} browserMainPath - path of the wallet on the browser main thread
-   */
-  _setBrowserMainPath(browserMainPath) {
-    this._browserMainPath = browserMainPath;
-  }
-  
-  static async _moveTo(path, wallet) {
-    if (await wallet.isClosed()) throw new MoneroError("Wallet is closed");
-    if (!path) throw new MoneroError("Must provide path of destination wallet");
-    
-    // save and return if same path
-    const Path = require("path");
-    if (Path.normalize(wallet._path) === Path.normalize(path)) {
-      await wallet.save();
-      return;
-    }
-    
-    // create destination directory if it doesn't exist
-    let walletDir = Path.dirname(path);
-    if (!wallet._fs.existsSync(walletDir)) {
-      try { wallet._fs.mkdirSync(walletDir); }
-      catch (err) { throw new MoneroError("Destination path " + path + " does not exist and cannot be created: " + err.message); }
-    }
-    
-    // write wallet files
-    let data = await wallet.getData();
-    wallet._fs.writeFileSync(path + ".keys", data[0], "binary");
-    wallet._fs.writeFileSync(path, data[1], "binary");
-    wallet._fs.writeFileSync(path + ".address.txt", await wallet.getPrimaryAddress());
-    let oldPath = wallet._path;
-    wallet._path = path;
-    
-    // delete old wallet files
-    if (oldPath) {
-      wallet._fs.unlinkSync(oldPath + ".address.txt");
-      wallet._fs.unlinkSync(oldPath + ".keys");
-      wallet._fs.unlinkSync(oldPath);
-    }
-  }
-  
-  static async _save(wallet) {
-    if (await wallet.isClosed()) throw new MoneroError("Wallet is closed");
-        
-    // path must be set
-    let path = await wallet.getPath();
-    if (!path) throw new MoneroError("Cannot save wallet because path is not set");
-    
-    // write wallet files to *.new
-    let pathNew = path + ".new";
-    let data = await wallet.getData();
-    wallet._fs.writeFileSync(pathNew + ".keys", data[0], "binary");
-    wallet._fs.writeFileSync(pathNew, data[1], "binary");
-    wallet._fs.writeFileSync(pathNew + ".address.txt", await wallet.getPrimaryAddress());
-    
-    // replace old wallet files with new
-    wallet._fs.renameSync(pathNew + ".keys", path + ".keys");
-    wallet._fs.renameSync(pathNew, path, path + ".keys");
-    wallet._fs.renameSync(pathNew + ".address.txt", path + ".address.txt", path + ".keys");
-  }
-}
-
-/**
- * Implements a MoneroWallet by proxying requests to a worker which runs a full wallet.
- * 
- * TODO: sort these methods according to master sort in MoneroWallet.js
- * TODO: probably only allow one listener to worker then propogate to registered listeners for performance
- * TODO: ability to recycle worker for use in another wallet
- * TODO: using LibraryUtils.WORKER_OBJECTS directly breaks encapsulation
- * 
- * @private
- */
-class MoneroWalletFullProxy extends MoneroWallet {
-  
-  // -------------------------- WALLET STATIC UTILS ---------------------------
-  
-  static async openWalletData(path, password, networkType, keysData, cacheData, daemonUriOrConnection, fs) {
-    let walletId = GenUtils.getUUID();
-    if (password === undefined) password = "";
-    let daemonUriOrConfig = daemonUriOrConnection instanceof MoneroRpcConnection ? daemonUriOrConnection.getConfig() : daemonUriOrConnection;
-    await LibraryUtils.invokeWorker(walletId, "openWalletData", [path, password, networkType, keysData, cacheData, daemonUriOrConfig]);
-    let wallet = new MoneroWalletFullProxy(walletId, await LibraryUtils.getWorker(), path, fs);
-    if (path) await wallet.save();
-    return wallet;
-  }
-  
-  static async _createWallet(config) {
-    if (config.getPath() && MoneroWalletFull.walletExists(config.getPath(), config.getFs())) throw new MoneroError("Wallet already exists: " + path);
-    let walletId = GenUtils.getUUID();
-    await LibraryUtils.invokeWorker(walletId, "_createWallet", [config.toJson()]);
-    let wallet = new MoneroWalletFullProxy(walletId, await LibraryUtils.getWorker(), config.getPath(), config.getFs());
-    if (config.getPath()) await wallet.save();
-    return wallet;
-  }
-  
-  // --------------------------- INSTANCE METHODS ----------------------------
-  
-  /**
-   * Internal constructor which is given a worker to communicate with via messages.
-   * 
-   * This method should not be called externally but should be called through
-   * static wallet creation utilities in this class.
-   * 
-   * @param {string} walletId - identifies the wallet with the worker
-   * @param {Worker} worker - worker to communicate with via messages
-   */
-  constructor(walletId, worker, path, fs) {
-    super();
-    this._walletId = walletId;
-    this._worker = worker;
-    this._path = path;
-    this._fs = fs ? fs : (path ? MoneroWalletFull._getFs() : undefined);
-    this._wrappedListeners = [];
-  }
-  
-  async isViewOnly() {
-    return this._invokeWorker("isViewOnly");
-  }
-  
-  async getNetworkType() {
-    return this._invokeWorker("getNetworkType");
-  }
-  
-  async getVersion() {
-    throw new MoneroError("Not implemented");
-  }
-  
-  getPath() {
-    return this._path;
-  }
-  
-  async getSeed() {
-    return this._invokeWorker("getSeed");
-  }
-  
-  async getSeedLanguage() {
-    return this._invokeWorker("getSeedLanguage");
-  }
-  
-  async getSeedLanguages() {
-    return this._invokeWorker("getSeedLanguages");
-  }
-  
-  async getPrivateSpendKey() {
-    return this._invokeWorker("getPrivateSpendKey");
-  }
-  
-  async getPrivateViewKey() {
-    return this._invokeWorker("getPrivateViewKey");
-  }
-  
-  async getPublicViewKey() {
-    return this._invokeWorker("getPublicViewKey");
-  }
-  
-  async getPublicSpendKey() {
-    return this._invokeWorker("getPublicSpendKey");
-  }
-  
-  async getAddress(accountIdx, subaddressIdx) {
-    return this._invokeWorker("getAddress", Array.from(arguments));
-  }
-  
-  async getAddressIndex(address) {
-    let subaddressJson = await this._invokeWorker("getAddressIndex", Array.from(arguments));
-    return MoneroWalletFull._sanitizeSubaddress(new MoneroSubaddress(subaddressJson));
-  }
-
-  async setSubaddressLabel(accountIdx, subaddressIdx, label) {
-    return this._invokeWorker("setSubaddressLabel", Array.from(arguments));
-  }
-  
-  async getIntegratedAddress(standardAddress, paymentId) {
-    return new MoneroIntegratedAddress(await this._invokeWorker("getIntegratedAddress", Array.from(arguments)));
-  }
-  
-  async decodeIntegratedAddress(integratedAddress) {
-    return new MoneroIntegratedAddress(await this._invokeWorker("decodeIntegratedAddress", Array.from(arguments)));
-  }
-  
-  async setDaemonConnection(uriOrRpcConnection) {
-    if (!uriOrRpcConnection) await this._invokeWorker("setDaemonConnection");
-    else {
-      let connection = !uriOrRpcConnection ? undefined : uriOrRpcConnection instanceof MoneroRpcConnection ? uriOrRpcConnection : new MoneroRpcConnection(uriOrRpcConnection);
-      await this._invokeWorker("setDaemonConnection", connection ? connection.getConfig() : undefined);
-    }
-  }
-  
-  async getDaemonConnection() {
-    let rpcConfig = await this._invokeWorker("getDaemonConnection");
-    return rpcConfig ? new MoneroRpcConnection(rpcConfig) : undefined;
-  }
-  
-  async isConnectedToDaemon() {
-    return this._invokeWorker("isConnectedToDaemon");
-  }
-  
-  async getRestoreHeight() {
-    return this._invokeWorker("getRestoreHeight");
-  }
-  
-  async setRestoreHeight(restoreHeight) {
-    return this._invokeWorker("setRestoreHeight", [restoreHeight]);
-  }
-  
-  async getDaemonHeight() {
-    return this._invokeWorker("getDaemonHeight");
-  }
-  
-  async getDaemonMaxPeerHeight() {
-    return this._invokeWorker("getDaemonMaxPeerHeight");
-  }
-  
-  async getHeightByDate(year, month, day) {
-    return this._invokeWorker("getHeightByDate", [year, month, day]);
-  }
-  
-  async isDaemonSynced() {
-    return this._invokeWorker("isDaemonSynced");
-  }
-  
-  async getHeight() {
-    return this._invokeWorker("getHeight");
-  }
-  
-  async addListener(listener) {
-    let wrappedListener = new WalletWorkerListener(listener);
-    let listenerId = wrappedListener.getId();
-    LibraryUtils.WORKER_OBJECTS[this._walletId].callbacks["onSyncProgress_" + listenerId] = [wrappedListener.onSyncProgress, wrappedListener];
-    LibraryUtils.WORKER_OBJECTS[this._walletId].callbacks["onNewBlock_" + listenerId] = [wrappedListener.onNewBlock, wrappedListener];
-    LibraryUtils.WORKER_OBJECTS[this._walletId].callbacks["onBalancesChanged_" + listenerId] = [wrappedListener.onBalancesChanged, wrappedListener];
-    LibraryUtils.WORKER_OBJECTS[this._walletId].callbacks["onOutputReceived_" + listenerId] = [wrappedListener.onOutputReceived, wrappedListener];
-    LibraryUtils.WORKER_OBJECTS[this._walletId].callbacks["onOutputSpent_" + listenerId] = [wrappedListener.onOutputSpent, wrappedListener];
-    this._wrappedListeners.push(wrappedListener);
-    return this._invokeWorker("addListener", [listenerId]);
-  }
-  
-  async removeListener(listener) {
-    for (let i = 0; i < this._wrappedListeners.length; i++) {
-      if (this._wrappedListeners[i].getListener() === listener) {
-        let listenerId = this._wrappedListeners[i].getId();
-        await this._invokeWorker("removeListener", [listenerId]);
-        delete LibraryUtils.WORKER_OBJECTS[this._walletId].callbacks["onSyncProgress_" + listenerId];
-        delete LibraryUtils.WORKER_OBJECTS[this._walletId].callbacks["onNewBlock_" + listenerId];
-        delete LibraryUtils.WORKER_OBJECTS[this._walletId].callbacks["onBalancesChanged_" + listenerId];
-        delete LibraryUtils.WORKER_OBJECTS[this._walletId].callbacks["onOutputReceived_" + listenerId];
-        delete LibraryUtils.WORKER_OBJECTS[this._walletId].callbacks["onOutputSpent_" + listenerId];
-        this._wrappedListeners.splice(i, 1);
-        return;
-      }
-    }
-    throw new MoneroError("Listener is not registered with wallet");
-  }
-  
-  getListeners() {
-    let listeners = [];
-    for (let wrappedListener of this._wrappedListeners) listeners.push(wrappedListener.getListener());
-    return listeners;
-  }
-  
-  async isSynced() {
-    return this._invokeWorker("isSynced");
-  }
-  
-  async sync(listenerOrStartHeight, startHeight, allowConcurrentCalls) {
-    
-    // normalize params
-    startHeight = listenerOrStartHeight instanceof MoneroWalletListener ? startHeight : listenerOrStartHeight;
-    let listener = listenerOrStartHeight instanceof MoneroWalletListener ? listenerOrStartHeight : undefined;
-    if (startHeight === undefined) startHeight = Math.max(await this.getHeight(), await this.getRestoreHeight());
-    
-    // register listener if given
-    if (listener) await this.addListener(listener);
-    
-    // sync wallet in worker 
-    let err;
-    let result;
-    try {
-      let resultJson = await this._invokeWorker("sync", [startHeight, allowConcurrentCalls]);
-      result = new MoneroSyncResult(resultJson.numBlocksFetched, resultJson.receivedMoney);
-    } catch (e) {
-      err = e;
-    }
-    
-    // unregister listener
-    if (listener) await this.removeListener(listener);
-    
-    // throw error or return
-    if (err) throw err;
-    return result;
-  }
-  
-  async startSyncing(syncPeriodInMs) {
-    return this._invokeWorker("startSyncing", Array.from(arguments));
-  }
-    
-  async stopSyncing() {
-    return this._invokeWorker("stopSyncing");
-  }
-  
-  async scanTxs(txHashes) {
-    assert(Array.isArray(txHashes), "Must provide an array of txs hashes to scan");
-    return this._invokeWorker("scanTxs", [txHashes]);
-  }
-  
-  async rescanSpent() {
-    return this._invokeWorker("rescanSpent");
-  }
-    
-  async rescanBlockchain() {
-    return this._invokeWorker("rescanBlockchain");
-  }
-  
-  async getBalance(accountIdx, subaddressIdx) {
-    return BigInteger.parse(await this._invokeWorker("getBalance", Array.from(arguments)));
-  }
-  
-  async getUnlockedBalance(accountIdx, subaddressIdx) {
-    let unlockedBalanceStr = await this._invokeWorker("getUnlockedBalance", Array.from(arguments));
-    return BigInteger.parse(unlockedBalanceStr);
-  }
-  
-  async getAccounts(includeSubaddresses, tag) {
-    let accounts = [];
-    for (let accountJson of (await this._invokeWorker("getAccounts", Array.from(arguments)))) {
-      accounts.push(MoneroWalletFull._sanitizeAccount(new MoneroAccount(accountJson)));
-    }
-    return accounts;
-  }
-  
-  async getAccount(accountIdx, includeSubaddresses) {
-    let accountJson = await this._invokeWorker("getAccount", Array.from(arguments));
-    return MoneroWalletFull._sanitizeAccount(new MoneroAccount(accountJson));
-  }
-  
-  async createAccount(label) {
-    let accountJson = await this._invokeWorker("createAccount", Array.from(arguments));
-    return MoneroWalletFull._sanitizeAccount(new MoneroAccount(accountJson));
-  }
-  
-  async getSubaddresses(accountIdx, subaddressIndices) {
-    let subaddresses = [];
-    for (let subaddressJson of (await this._invokeWorker("getSubaddresses", Array.from(arguments)))) {
-      subaddresses.push(MoneroWalletFull._sanitizeSubaddress(new MoneroSubaddress(subaddressJson)));
-    }
-    return subaddresses;
-  }
-  
-  async createSubaddress(accountIdx, label) {
-    let subaddressJson = await this._invokeWorker("createSubaddress", Array.from(arguments));
-    return MoneroWalletFull._sanitizeSubaddress(new MoneroSubaddress(subaddressJson));
-  }
-  
-  async getTxs(query) {
-    query = MoneroWallet._normalizeTxQuery(query);
-    let respJson = await this._invokeWorker("getTxs", [query.getBlock().toJson()]);
-    return MoneroWalletFull._deserializeTxs(query, JSON.stringify({blocks: respJson.blocks})); // initialize txs from blocks json string TODO: this stringifies then utility parses, avoid
-  }
-  
-  async getTransfers(query) {
-    query = MoneroWallet._normalizeTransferQuery(query);
-    let blockJsons = await this._invokeWorker("getTransfers", [query.getTxQuery().getBlock().toJson()]);
-    return MoneroWalletFull._deserializeTransfers(query, JSON.stringify({blocks: blockJsons})); // initialize transfers from blocks json string TODO: this stringifies then utility parses, avoid
-  }
-  
-  async getOutputs(query) {
-    query = MoneroWallet._normalizeOutputQuery(query);
-    let blockJsons = await this._invokeWorker("getOutputs", [query.getTxQuery().getBlock().toJson()]);
-    return MoneroWalletFull._deserializeOutputs(query, JSON.stringify({blocks: blockJsons})); // initialize transfers from blocks json string TODO: this stringifies then utility parses, avoid
-  }
-  
-  async exportOutputs(all) {
-    return this._invokeWorker("exportOutputs", [all]);
-  }
-  
-  async importOutputs(outputsHex) {
-    return this._invokeWorker("importOutputs", [outputsHex]);
-  }
-  
-  async exportKeyImages(all) {
-    let keyImages = [];
-    for (let keyImageJson of await this._invokeWorker("getKeyImages", [all])) keyImages.push(new MoneroKeyImage(keyImageJson));
-    return keyImages;
-  }
-  
-  async importKeyImages(keyImages) {
-    let keyImagesJson = [];
-    for (let keyImage of keyImages) keyImagesJson.push(keyImage.toJson());
-    return new MoneroKeyImageImportResult(await this._invokeWorker("importKeyImages", [keyImagesJson]));
-  }
-  
-  async getNewKeyImagesFromLastImport() {
-    throw new MoneroError("MoneroWalletFull.getNewKeyImagesFromLastImport() not implemented");
-  }
-  
-  async freezeOutput(keyImage) {
-    return this._invokeWorker("freezeOutput", [keyImage]);
-  }
-  
-  async thawOutput(keyImage) {
-    return this._invokeWorker("thawOutput", [keyImage]);
-  }
-  
-  async isOutputFrozen(keyImage) {
-    return this._invokeWorker("isOutputFrozen", [keyImage]);
-  }
-  
-  async createTxs(config) {
-    config = MoneroWallet._normalizeCreateTxsConfig(config);
-    let txSetJson = await this._invokeWorker("createTxs", [config.toJson()]);
-    return new MoneroTxSet(txSetJson).getTxs();
-  }
-  
-  async sweepOutput(config) {
-    config = MoneroWallet._normalizeSweepOutputConfig(config);
-    let txSetJson = await this._invokeWorker("sweepOutput", [config.toJson()]);
-    return new MoneroTxSet(txSetJson).getTxs()[0];
-  }
-
-  async sweepUnlocked(config) {
-    config = MoneroWallet._normalizeSweepUnlockedConfig(config);
-    let txSetsJson = await this._invokeWorker("sweepUnlocked", [config.toJson()]);
-    let txs = [];
-    for (let txSetJson of txSetsJson) for (let tx of new MoneroTxSet(txSetJson).getTxs()) txs.push(tx);
-    return txs;
-  }
-  
-  async sweepDust(relay) {
-    return new MoneroTxSet(await this._invokeWorker("sweepDust", [relay])).getTxs() || [];
-  }
-  
-  async relayTxs(txsOrMetadatas) {
-    assert(Array.isArray(txsOrMetadatas), "Must provide an array of txs or their metadata to relay");
-    let txMetadatas = [];
-    for (let txOrMetadata of txsOrMetadatas) txMetadatas.push(txOrMetadata instanceof MoneroTxWallet ? txOrMetadata.getMetadata() : txOrMetadata);
-    return this._invokeWorker("relayTxs", [txMetadatas]);
-  }
-  
-  async describeTxSet(txSet) {
-    return new MoneroTxSet(await this._invokeWorker("describeTxSet", [txSet.toJson()]));
-  }
-  
-  async signTxs(unsignedTxHex) {
-    return this._invokeWorker("signTxs", Array.from(arguments));
-  }
-  
-  async submitTxs(signedTxHex) {
-    return this._invokeWorker("submitTxs", Array.from(arguments));
-  }
-  
-  async signMessage(message, signatureType, accountIdx, subaddressIdx) {
-    return this._invokeWorker("signMessage", Array.from(arguments));
-  }
-  
-  async verifyMessage(message, address, signature) {
-    return new MoneroMessageSignatureResult(await this._invokeWorker("verifyMessage", Array.from(arguments)));
-  }
-  
-  async getTxKey(txHash) {
-    return this._invokeWorker("getTxKey", Array.from(arguments));
-  }
-  
-  async checkTxKey(txHash, txKey, address) {
-    return new MoneroCheckTx(await this._invokeWorker("checkTxKey", Array.from(arguments)));
-  }
-  
-  async getTxProof(txHash, address, message) {
-    return this._invokeWorker("getTxProof", Array.from(arguments));
-  }
-  
-  async checkTxProof(txHash, address, message, signature) {
-    return new MoneroCheckTx(await this._invokeWorker("checkTxProof", Array.from(arguments)));
-  }
-  
-  async getSpendProof(txHash, message) {
-    return this._invokeWorker("getSpendProof", Array.from(arguments));
-  }
-  
-  async checkSpendProof(txHash, message, signature) {
-    return this._invokeWorker("checkSpendProof", Array.from(arguments));
-  }
-  
-  async getReserveProofWallet(message) {
-    return this._invokeWorker("getReserveProofWallet", Array.from(arguments));
-  }
-  
-  async getReserveProofAccount(accountIdx, amount, message) {
-    try { return await this._invokeWorker("getReserveProofAccount", [accountIdx, amount.toString(), message]); }
-    catch (e) { throw new MoneroError(e.message, -1); }
-  }
-
-  async checkReserveProof(address, message, signature) {
-    try { return new MoneroCheckReserve(await this._invokeWorker("checkReserveProof", Array.from(arguments))); }
-    catch (e) { throw new MoneroError(e.message, -1); }
-  }
-  
-  async getTxNotes(txHashes) {
-    return this._invokeWorker("getTxNotes", Array.from(arguments));
-  }
-  
-  async setTxNotes(txHashes, notes) {
-    return this._invokeWorker("setTxNotes", Array.from(arguments));
-  }
-  
-  async getAddressBookEntries(entryIndices) {
-    if (!entryIndices) entryIndices = [];
-    let entries = [];
-    for (let entryJson of await this._invokeWorker("getAddressBookEntries", Array.from(arguments))) {
-      entries.push(new MoneroAddressBookEntry(entryJson));
-    }
-    return entries;
-  }
-  
-  async addAddressBookEntry(address, description) {
-    return this._invokeWorker("addAddressBookEntry", Array.from(arguments));
-  }
-  
-  async editAddressBookEntry(index, setAddress, address, setDescription, description) {
-    return this._invokeWorker("editAddressBookEntry", Array.from(arguments));
-  }
-  
-  async deleteAddressBookEntry(entryIdx) {
-    return this._invokeWorker("deleteAddressBookEntry", Array.from(arguments));
-  }
-  
-  async tagAccounts(tag, accountIndices) {
-    return this._invokeWorker("tagAccounts", Array.from(arguments));
-  }
-
-  async untagAccounts(accountIndices) {
-    return this._invokeWorker("untagAccounts", Array.from(arguments));
-  }
-  
-  async getAccountTags() {
-    return this._invokeWorker("getAccountTags", Array.from(arguments));
-  }
-
-  async setAccountTagLabel(tag, label) {
-    return this._invokeWorker("setAccountTagLabel", Array.from(arguments));
-  }
-  
-  async getPaymentUri(config) {
-    config = MoneroWallet._normalizeCreateTxsConfig(config);
-    return this._invokeWorker("getPaymentUri", [config.toJson()]);
-  }
-  
-  async parsePaymentUri(uri) {
-    return new MoneroTxConfig(await this._invokeWorker("parsePaymentUri", Array.from(arguments)));
-  }
-  
-  async getAttribute(key) {
-    return this._invokeWorker("getAttribute", Array.from(arguments));
-  }
-  
-  async setAttribute(key, val) {
-    return this._invokeWorker("setAttribute", Array.from(arguments));
-  }
-  
-  async startMining(numThreads, backgroundMining, ignoreBattery) {
-    return this._invokeWorker("startMining", Array.from(arguments));
-  }
-  
-  async stopMining() {
-    return this._invokeWorker("stopMining", Array.from(arguments));
-  }
-  
-  async isMultisigImportNeeded() {
-    return this._invokeWorker("isMultisigImportNeeded");
-  }
-  
-  async isMultisig() {
-    return this._invokeWorker("isMultisig");
-  }
-  
-  async getMultisigInfo() {
-    return new MoneroMultisigInfo(await this._invokeWorker("getMultisigInfo"));
-  }
-  
-  async prepareMultisig() {
-    return this._invokeWorker("prepareMultisig");
-  }
-  
-  async makeMultisig(multisigHexes, threshold, password) {
-    return await this._invokeWorker("makeMultisig", Array.from(arguments));
-  }
-  
-  async exchangeMultisigKeys(multisigHexes, password) {
-    return new MoneroMultisigInitResult(await this._invokeWorker("exchangeMultisigKeys", Array.from(arguments)));
-  }
-  
-  async exportMultisigHex() {
-    return this._invokeWorker("exportMultisigHex");
-  }
-  
-  async importMultisigHex(multisigHexes) {
-    return this._invokeWorker("importMultisigHex", Array.from(arguments));
-  }
-  
-  async signMultisigTxHex(multisigTxHex) {
-    return new MoneroMultisigSignResult(await this._invokeWorker("signMultisigTxHex", Array.from(arguments)));
-  }
-  
-  async submitMultisigTxHex(signedMultisigTxHex) {
-    return this._invokeWorker("submitMultisigTxHex", Array.from(arguments));
-  }
-  
-  async getData() {
-    return this._invokeWorker("getData");
-  }
-  
-  async moveTo(path) {
-    return MoneroWalletFull._moveTo(path, this);
-  }
-  
-  async changePassword(oldPassword, newPassword) {
-    await this._invokeWorker("changePassword", Array.from(arguments));
-    if (this._path) await this.save(); // auto save
-  }
-  
-  async save() {
-    return MoneroWalletFull._save(this);
-  }
-  
-  async close(save) {
-    if (save) await this.save();
-    while (this._wrappedListeners.length) await this.removeListener(this._wrappedListeners[0].getListener());
-    await this._invokeWorker("close");
-    delete LibraryUtils.WORKER_OBJECTS[this._walletId];
-  }
-  
-  async isClosed() {
-    return this._invokeWorker("isClosed");
-  }
-  
-  // --------------------------- PRIVATE HELPERS ------------------------------
-  
-  async _invokeWorker(fnName, args) {
-    return await LibraryUtils.invokeWorker(this._walletId, fnName, args);
-  }
-}
-
-// -------------------------------- LISTENING ---------------------------------
-
-/**
- * Receives notifications directly from wasm c++.
- * 
- * @private
- */
-class WalletFullListener {
-  
-  constructor(wallet) {
-    this._wallet = wallet;
-  }
-  
-  async onSyncProgress(height, startHeight, endHeight, percentDone, message) {
-    for (let listener of this._wallet.getListeners()) await listener.onSyncProgress(height, startHeight, endHeight, percentDone, message);
-  }
-  
-  async onNewBlock(height) {
-    for (let listener of this._wallet.getListeners()) await listener.onNewBlock(height);
-  }
-  
-  async onBalancesChanged(newBalanceStr, newUnlockedBalanceStr) {
-    for (let listener of this._wallet.getListeners()) await listener.onBalancesChanged(BigInteger.parse(newBalanceStr), BigInteger.parse(newUnlockedBalanceStr));
-  }
-  
-  async onOutputReceived(height, txHash, amountStr, accountIdx, subaddressIdx, version, unlockTime, isLocked) {
-    
-    // build received output
-    let output = new MoneroOutputWallet();
-    output.setAmount(BigInteger.parse(amountStr));
-    output.setAccountIndex(accountIdx);
-    output.setSubaddressIndex(subaddressIdx);
-    let tx = new MoneroTxWallet();
-    tx.setHash(txHash);
-    tx.setVersion(version);
-    tx.setUnlockTime(unlockTime);
-    output.setTx(tx);
-    tx.setOutputs([output]);
-    tx.setIsIncoming(true);
-    tx.setIsLocked(isLocked);
-    if (height > 0) {
-      let block = new MoneroBlock().setHeight(height);
-      block.setTxs([tx]);
-      tx.setBlock(block);
-      tx.setIsConfirmed(true);
-      tx.setInTxPool(false);
-      tx.setIsFailed(false);
-    } else {
-      tx.setIsConfirmed(false);
-      tx.setInTxPool(true);
-    }
-    
-    // announce output
-    for (let listener of this._wallet.getListeners()) await listener.onOutputReceived(tx.getOutputs()[0]);
-  }
-  
-  async onOutputSpent(height, txHash, amountStr, accountIdxStr, subaddressIdxStr, version, unlockTime, isLocked) {
-    
-    // build spent output
-    let output = new MoneroOutputWallet();
-    output.setAmount(BigInteger.parse(amountStr));
-    if (accountIdxStr) output.setAccountIndex(parseInt(accountIdxStr));
-    if (subaddressIdxStr) output.setSubaddressIndex(parseInt(subaddressIdxStr));
-    let tx = new MoneroTxWallet();
-    tx.setHash(txHash);
-    tx.setVersion(version);
-    tx.setUnlockTime(unlockTime);
-    tx.setIsLocked(isLocked);
-    output.setTx(tx);
-    tx.setInputs([output]);
-    if (height > 0) {
-      let block = new MoneroBlock().setHeight(height);
-      block.setTxs([tx]);
-      tx.setBlock(block);
-      tx.setIsConfirmed(true);
-      tx.setInTxPool(false);
-      tx.setIsFailed(false);
-    } else {
-      tx.setIsConfirmed(false);
-      tx.setInTxPool(true);
-    }
-    
-    // notify wallet listeners
-    for (let listener of this._wallet.getListeners()) await listener.onOutputSpent(tx.getInputs()[0]);
-  }
-}
-
-/**
- * Internal listener to bridge notifications to external listeners.
- * 
- * @private
- */
-class WalletWorkerListener {
-  
-  constructor(listener) {
-    this._id = GenUtils.getUUID();
-    this._listener = listener;
-  }
-  
-  getId() {
-    return this._id;
-  }
-  
-  getListener() {
-    return this._listener;
-  }
-  
-  onSyncProgress(height, startHeight, endHeight, percentDone, message) {
-    this._listener.onSyncProgress(height, startHeight, endHeight, percentDone, message);
-  }
-
-  async onNewBlock(height) {
-    await this._listener.onNewBlock(height);
-  }
-  
-  async onBalancesChanged(newBalanceStr, newUnlockedBalanceStr) {
-    await this._listener.onBalancesChanged(BigInteger.parse(newBalanceStr), BigInteger.parse(newUnlockedBalanceStr));
-  }
-
-  async onOutputReceived(blockJson) {
-    let block = new MoneroBlock(blockJson, MoneroBlock.DeserializationType.TX_WALLET);
-    await this._listener.onOutputReceived(block.getTxs()[0].getOutputs()[0]);
-  }
-  
-  async onOutputSpent(blockJson) {
-    let block = new MoneroBlock(blockJson, MoneroBlock.DeserializationType.TX_WALLET);
-    await this._listener.onOutputSpent(block.getTxs()[0].getInputs()[0]);
-  }
-}
-
-MoneroWalletFull.DEFAULT_SYNC_PERIOD_IN_MS = 10000; // 10 second sync period by default
-
-module.exports = MoneroWalletFull;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_wallet_MoneroWalletKeys.js.html b/docs/src_main_js_wallet_MoneroWalletKeys.js.html deleted file mode 100644 index 772e28671..000000000 --- a/docs/src_main_js_wallet_MoneroWalletKeys.js.html +++ /dev/null @@ -1,398 +0,0 @@ - - - - - JSDoc: Source: src/main/js/wallet/MoneroWalletKeys.js - - - - - - - - - - -
- -

Source: src/main/js/wallet/MoneroWalletKeys.js

- - - - - - -
-
-
const assert = require("assert");
-const LibraryUtils = require("../common/LibraryUtils");
-const MoneroError = require("../common/MoneroError");
-const MoneroNetworkType = require("../daemon/model/MoneroNetworkType");
-const MoneroSubaddress = require("./model/MoneroSubaddress");
-const MoneroUtils = require("../common/MoneroUtils");
-const MoneroVersion = require("../daemon/model/MoneroVersion");
-const MoneroWallet = require("./MoneroWallet");
-const MoneroWalletConfig = require("./model/MoneroWalletConfig");
-
-/**
- * Implements a MoneroWallet which only manages keys using WebAssembly.
- * 
- * @implements {MoneroWallet}
- * @hideconstructor
- */
-class MoneroWalletKeys extends MoneroWallet {
-  
-  // --------------------------- STATIC UTILITIES -----------------------------
-  
-  /**
-   * <p>Create a wallet using WebAssembly bindings to monero-project.</p>
-   * 
-   * <p>Example:</p>
-   * 
-   * <code>
-   * let wallet = await MoneroWalletKeys.createWallet({<br>
-   * &nbsp;&nbsp; password: "abc123",<br>
-   * &nbsp;&nbsp; networkType: MoneroNetworkType.STAGENET,<br>
-   * &nbsp;&nbsp; seed: "coexist igloo pamphlet lagoon..."<br>
-   * });
-   * </code>
-   * 
-   * @param {MoneroWalletConfig|object} config - MoneroWalletConfig or equivalent config object
-   * @param {string|number} config.networkType - network type of the wallet to create (one of "mainnet", "testnet", "stagenet" or MoneroNetworkType.MAINNET|TESTNET|STAGENET)
-   * @param {string} config.seed - seed of the wallet to create (optional, random wallet created if neither seed nor keys given)
-   * @param {string} config.seedOffset - the offset used to derive a new seed from the given seed to recover a secret wallet from the seed phrase
-   * @param {string} config.primaryAddress - primary address of the wallet to create (only provide if restoring from keys)
-   * @param {string} config.privateViewKey - private view key of the wallet to create (optional)
-   * @param {string} config.privateSpendKey - private spend key of the wallet to create (optional)
-   * @param {string} config.language - language of the wallet's seed (defaults to "English" or auto-detected)
-   * @return {MoneroWalletKeys} the created wallet
-   */
-  static async createWallet(config) {
-    
-    // normalize and validate config
-    if (config === undefined) throw new MoneroError("Must provide config to create wallet");
-    config = config instanceof MoneroWalletConfig ? config : new MoneroWalletConfig(config);
-    if (config.getSeed() !== undefined && (config.getPrimaryAddress() !== undefined || config.getPrivateViewKey() !== undefined || config.getPrivateSpendKey() !== undefined)) {
-      throw new MoneroError("Wallet may be initialized with a seed or keys but not both");
-    }
-    if (config.getNetworkType() === undefined) throw new MoneroError("Must provide a networkType: 'mainnet', 'testnet' or 'stagenet'");
-    if (config.getSaveCurrent() === true) throw new MoneroError("Cannot save current wallet when creating keys-only wallet");
-    
-    // create wallet
-    if (config.getSeed() !== undefined) return MoneroWalletKeys._createWalletFromSeed(config);
-    else if (config.getPrivateSpendKey() !== undefined || config.getPrimaryAddress() !== undefined) return MoneroWalletKeys._createWalletFromKeys(config);
-    else return MoneroWalletKeys._createWalletRandom(config);
-  }
-  
-  static async _createWalletRandom(config) {
-
-    // validate and sanitize params
-    config = config.copy();
-    if (config.getSeedOffset() !== undefined) throw new MoneroError("Cannot provide seedOffset when creating random wallet");
-    if (config.getRestoreHeight() !== undefined) throw new MoneroError("Cannot provide restoreHeight when creating random wallet");
-    MoneroNetworkType.validate(config.getNetworkType());
-    if (config.getLanguage() === undefined) config.setLanguage("English");
-    
-    // load wasm module
-    let module = await LibraryUtils.loadKeysModule();
-    
-    // queue call to wasm module
-    return module.queueTask(async function() {
-      return new Promise(function(resolve, reject) {
-        
-        // define callback for wasm
-        let callbackFn = async function(cppAddress) {
-          if (typeof cppAddress === "string") reject(new MoneroError(cppAddress));
-          else resolve(new MoneroWalletKeys(cppAddress));
-        };
-        
-        // create wallet in wasm and invoke callback when done
-        module.create_keys_wallet_random(JSON.stringify(config.toJson()), callbackFn);
-      });
-    });
-  }
-  
-  static async _createWalletFromSeed(config) {
-    
-    // validate and sanitize params
-    MoneroNetworkType.validate(config.getNetworkType());
-    if (config.getSeed() === undefined) throw Error("Must define seed to create wallet from");
-    if (config.getSeedOffset() === undefined) config.setSeedOffset("");
-    if (config.getLanguage() !== undefined) throw new MoneroError("Cannot provide language when creating wallet from seed");
-    
-    // load wasm module
-    let module = await LibraryUtils.loadKeysModule();
-    
-    // queue call to wasm module
-    return module.queueTask(async function() {
-      return new Promise(function(resolve, reject) {
-        
-        // define callback for wasm
-        let callbackFn = async function(cppAddress) {
-          if (typeof cppAddress === "string") reject(new MoneroError(cppAddress));
-          else resolve(new MoneroWalletKeys(cppAddress));
-        };
-        
-        // create wallet in wasm and invoke callback when done
-        module.create_keys_wallet_from_seed(JSON.stringify(config.toJson()), callbackFn);
-      });
-    });
-  }
-  
-  static async _createWalletFromKeys(config) {
-    
-    // validate and sanitize params
-    if (config.getSeedOffset() !== undefined) throw new MoneroError("Cannot provide seedOffset when creating wallet from keys");
-    MoneroNetworkType.validate(config.getNetworkType());
-    if (config.getPrimaryAddress() === undefined) config.setPrimaryAddress("");
-    if (config.getPrivateViewKey() === undefined) config.setPrivateViewKey("");
-    if (config.getPrivateSpendKey() === undefined) config.setPrivateSpendKey("");
-    if (config.getLanguage() === undefined) config.setLanguage("English");
-    
-    // load wasm module
-    let module = await LibraryUtils.loadKeysModule();
-    
-    // queue call to wasm module
-    return module.queueTask(async function() {
-      return new Promise(function(resolve, reject) {
-        
-        // define callback for wasm
-        let callbackFn = async function(cppAddress) {
-          if (typeof cppAddress === "string") reject(new MoneroError(cppAddress));
-          else resolve(new MoneroWalletKeys(cppAddress));
-        };
-        
-        // create wallet in wasm and invoke callback when done
-        module.create_keys_wallet_from_keys(JSON.stringify(config.toJson()), callbackFn);
-      });
-    });
-  }
-  
-  static async getSeedLanguages() {
-    let module = await LibraryUtils.loadKeysModule();
-    return module.queueTask(async function() {
-      return JSON.parse(module.get_keys_wallet_seed_languages()).languages;
-    });
-  }
-  
-  // --------------------------- INSTANCE METHODS -----------------------------
-  
-  /**
-   * Internal constructor which is given the memory address of a C++ wallet
-   * instance.
-   * 
-   * This method should not be called externally but should be called through
-   * static wallet creation utilities in this class.
-   * 
-   * @param {int} cppAddress - address of the wallet instance in C++
-   */
-  constructor(cppAddress) {
-    super();
-    this._cppAddress = cppAddress;
-    this._module = LibraryUtils.getWasmModule();
-    if (!this._module.create_full_wallet) throw new MoneroError("WASM module not loaded - create wallet instance using static utilities");  // static utilites pre-load wasm module
-  }
-  
-  async addListener(listener) {
-    throw new MoneroError("MoneroWalletKeys does not support adding listeners");
-  }
-  
-  async removeListener(listener) {
-    throw new MoneroError("MoneroWalletKeys does not support removing listeners");
-  }
-  
-  async isViewOnly() {
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      return that._module.is_view_only(that._cppAddress);
-    });
-  }
-  
-  async isConnectedToDaemon() {
-    return false;
-  }
-  
-  async getVersion() {
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      let versionStr = that._module.get_version(that._cppAddress);
-      let versionJson = JSON.parse(versionStr);
-      return new MoneroVersion(versionJson.number, versionJson.isRelease);
-    });
-  }
-  
-  /**
-   * @ignore
-   */
-  getPath() {
-    this._assertNotClosed();
-    throw new MoneroError("MoneroWalletKeys does not support a persisted path");
-  }
-  
-  async getSeed() {
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      let resp = that._module.get_seed(that._cppAddress);
-      const errorStr = "error: ";
-      if (resp.indexOf(errorStr) === 0) throw new MoneroError(resp.substring(errorStr.length));
-      return resp ? resp : undefined;
-    });
-  }
-  
-  async getSeedLanguage() {
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      let resp = that._module.get_seed_language(that._cppAddress);
-      let errorKey = "error: ";
-      if (resp.indexOf(errorKey) === 0) throw new MoneroError(resp.substring(errorStr.length));
-      return resp ? resp : undefined;
-    });
-  }
-
-  async getPrivateSpendKey() {
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      let resp = that._module.get_private_spend_key(that._cppAddress);
-      let errorKey = "error: ";
-      if (resp.indexOf(errorKey) === 0) throw new MoneroError(resp.substring(errorStr.length));
-      return resp ? resp : undefined;
-    });
-  }
-  
-  async getPrivateViewKey() {
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      let resp = that._module.get_private_view_key(that._cppAddress);
-      let errorKey = "error: ";
-      if (resp.indexOf(errorKey) === 0) throw new MoneroError(resp.substring(errorStr.length));
-      return resp ? resp : undefined;
-    });
-  }
-  
-  async getPublicViewKey() {
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      let resp = that._module.get_public_view_key(that._cppAddress);
-      let errorKey = "error: ";
-      if (resp.indexOf(errorKey) === 0) throw new MoneroError(resp.substring(errorStr.length));
-      return resp ? resp : undefined;
-    });
-  }
-  
-  async getPublicSpendKey() {
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      let resp = that._module.get_public_spend_key(that._cppAddress);
-      let errorKey = "error: ";
-      if (resp.indexOf(errorKey) === 0) throw new MoneroError(resp.substring(errorStr.length));
-      return resp ? resp : undefined;
-    });
-  }
-  
-  async getAddress(accountIdx, subaddressIdx) {
-    this._assertNotClosed();
-    assert(typeof accountIdx === "number");
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      return that._module.get_address(that._cppAddress, accountIdx, subaddressIdx);
-    });
-  }
-  
-  async getAddressIndex(address) {
-    this._assertNotClosed();
-    let that = this;
-    return that._module.queueTask(async function() {
-      that._assertNotClosed();
-      let resp = that._module.get_address_index(that._cppAddress, address);
-      if (resp.charAt(0) !== '{') throw new MoneroError(resp);
-      return new MoneroSubaddress(JSON.parse(resp));
-    });
-  }
-  
-  getAccounts() {
-    this._assertNotClosed();
-    throw new MoneroError("MoneroWalletKeys does not support getting an enumerable set of accounts; query specific accounts");
-  }
-  
-  // getIntegratedAddress(paymentId)  // TODO
-  // decodeIntegratedAddress
-  
-  async close(save) {
-    await super.close(save);
-    if (this._isClosed) return; // closing a closed wallet has no effect
-    
-    // save wallet if requested
-    if (save) await this.save();
-
-    // queue task to use wasm module
-    let that = this;
-    return that._module.queueTask(async function() {
-      return new Promise(function(resolve, reject) {
-        if (that._isClosed) {
-          resolve();
-          return;
-        }
-        
-        // define callback for wasm
-        let callbackFn = async function() {
-          delete that._cppAddress;
-          that._isClosed = true;
-          resolve();
-        };
-        
-        // close wallet in wasm and invoke callback when done
-        that._module.close(that._cppAddress, false, callbackFn);  // saving handled external to webassembly
-      });
-    });
-  }
-  
-  async isClosed() {
-    return this._isClosed;
-  }
-  
-  // ----------- ADD JSDOC FOR SUPPORTED DEFAULT IMPLEMENTATIONS --------------
-  
-  async getPrimaryAddress() { return super.getPrimaryAddress(...arguments); }
-  async getSubaddress() { return super.getSubaddress(...arguments); }
-  
-  // ----------------------------- PRIVATE HELPERS ----------------------------
-  
-  _assertNotClosed() {
-    if (this._isClosed) throw new MoneroError("Wallet is closed");
-  }
-}
-
-module.exports = MoneroWalletKeys;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_wallet_MoneroWalletRpc.js.html b/docs/src_main_js_wallet_MoneroWalletRpc.js.html deleted file mode 100644 index 8e241e7ae..000000000 --- a/docs/src_main_js_wallet_MoneroWalletRpc.js.html +++ /dev/null @@ -1,2630 +0,0 @@ - - - - - JSDoc: Source: src/main/js/wallet/MoneroWalletRpc.js - - - - - - - - - - -
- -

Source: src/main/js/wallet/MoneroWalletRpc.js

- - - - - - -
-
-
const assert = require("assert");
-const BigInteger = require("../common/biginteger").BigInteger;
-const GenUtils = require("../common/GenUtils");
-const LibraryUtils = require("../common/LibraryUtils");
-const TaskLooper = require("../common/TaskLooper");
-const MoneroAccount = require("./model/MoneroAccount");
-const MoneroAccountTag = require("./model/MoneroAccountTag");
-const MoneroAddressBookEntry = require("./model/MoneroAddressBookEntry");
-const MoneroBlock = require("../daemon/model/MoneroBlock");
-const MoneroBlockHeader = require("../daemon/model/MoneroBlockHeader");
-const MoneroCheckReserve = require("./model/MoneroCheckReserve");
-const MoneroCheckTx = require("./model/MoneroCheckTx");
-const MoneroDestination = require("./model/MoneroDestination");
-const MoneroError = require("../common/MoneroError");
-const MoneroIncomingTransfer = require("./model/MoneroIncomingTransfer");
-const MoneroIntegratedAddress = require("./model/MoneroIntegratedAddress");
-const MoneroKeyImage = require("../daemon/model/MoneroKeyImage");
-const MoneroKeyImageImportResult = require("./model/MoneroKeyImageImportResult");
-const MoneroMultisigInfo = require("./model/MoneroMultisigInfo");
-const MoneroMultisigInitResult = require("./model/MoneroMultisigInitResult");
-const MoneroMultisigSignResult = require("./model/MoneroMultisigSignResult");
-const MoneroOutgoingTransfer = require("./model/MoneroOutgoingTransfer");
-const MoneroOutputQuery = require("./model/MoneroOutputQuery");
-const MoneroOutputWallet = require("./model/MoneroOutputWallet");
-const MoneroRpcConnection = require("../common/MoneroRpcConnection");
-const MoneroRpcError = require("../common/MoneroRpcError");
-const MoneroSubaddress = require("./model/MoneroSubaddress");
-const MoneroSyncResult = require("./model/MoneroSyncResult");
-const MoneroTransferQuery = require("./model/MoneroTransferQuery");
-const MoneroTxConfig = require("./model/MoneroTxConfig");
-const MoneroTxQuery = require("./model/MoneroTxQuery");
-const MoneroTxSet = require("./model/MoneroTxSet");
-const MoneroTxWallet = require("./model/MoneroTxWallet");
-const MoneroUtils = require("../common/MoneroUtils");
-const MoneroVersion = require("../daemon/model/MoneroVersion");
-const MoneroWallet = require("./MoneroWallet");
-const MoneroWalletConfig = require("./model/MoneroWalletConfig");
-const MoneroWalletListener = require("./model/MoneroWalletListener");
-const MoneroMessageSignatureType = require("./model/MoneroMessageSignatureType");
-const MoneroMessageSignatureResult = require("./model/MoneroMessageSignatureResult");
-const ThreadPool = require("../common/ThreadPool");
-const SslOptions = require("../common/SslOptions");
-
-/**
- * Copyright (c) woodser
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-/**
- * Implements a MoneroWallet as a client of monero-wallet-rpc.
- * 
- * @implements {MoneroWallet}
- * @hideconstructor
- */
-class MoneroWalletRpc extends MoneroWallet {
-  
-  /**
-   * <p>Construct a wallet RPC client (for internal use).</p>
-   * 
-   * @param {string|object|MoneroRpcConnection|string[]} uriOrConfig - uri of monero-wallet-rpc or JS config object or MoneroRpcConnection or command line parameters to run a monero-wallet-rpc process internally
-   * @param {string} uriOrConfig.uri - uri of monero-wallet-rpc
-   * @param {string} uriOrConfig.username - username to authenticate with monero-wallet-rpc (optional)
-   * @param {string} uriOrConfig.password - password to authenticate with monero-wallet-rpc (optional)
-   * @param {boolean} uriOrConfig.rejectUnauthorized - rejects self-signed certificates if true (default true)
-   * @param {string} username - username to authenticate with monero-wallet-rpc (optional)
-   * @param {string} password - password to authenticate with monero-wallet-rpc (optional)
-   * @param {boolean} rejectUnauthorized - rejects self-signed certificates if true (default true)
-   */
-  constructor(uriOrConfig, username, password, rejectUnauthorized) {
-    super();
-    if (GenUtils.isArray(uriOrConfig)) throw new MoneroError("Array with command parameters is invalid first parameter, use `await monerojs.connectToWalletRpc(...)`");
-    this.config = MoneroWalletRpc._normalizeConfig(uriOrConfig, username, password, rejectUnauthorized);
-    this.rpc = new MoneroRpcConnection(this.config);
-    this.addressCache = {}; // avoid unecessary requests for addresses
-    this.syncPeriodInMs = MoneroWalletRpc.DEFAULT_SYNC_PERIOD_IN_MS;
-    this.listeners = [];
-  }
-  
-  /**
-   * <p>Create a client connected to monero-wallet-rpc (for internal use).</p>
-   * 
-   * @param {string|string[]|object|MoneroRpcConnection} uriOrConfig - uri of monero-wallet-rpc or terminal parameters or JS config object or MoneroRpcConnection
-   * @param {string} uriOrConfig.uri - uri of monero-wallet-rpc
-   * @param {string} uriOrConfig.username - username to authenticate with monero-wallet-rpc (optional)
-   * @param {string} uriOrConfig.password - password to authenticate with monero-wallet-rpc (optional)
-   * @param {boolean} uriOrConfig.rejectUnauthorized - rejects self-signed certificates if true (default true)
-   * @param {string} username - username to authenticate with monero-wallet-rpc (optional)
-   * @param {string} password - password to authenticate with monero-wallet-rpc (optional)
-   * @param {boolean} rejectUnauthorized - rejects self-signed certificates if true (default true)
-   * @return {MoneroWalletRpc} the wallet RPC client
-   */
-  static async _connectToWalletRpc(uriOrConfig, username, password, rejectUnauthorized) {
-    if (GenUtils.isArray(uriOrConfig)) return MoneroWalletRpc._startWalletRpcProcess(uriOrConfig); // handle array as terminal command
-    else return new MoneroWalletRpc(...arguments); // otherwise connect to server
-  }
-  
-  static async _startWalletRpcProcess(cmd) {
-    assert(GenUtils.isArray(cmd), "Must provide string array with command line parameters");
-    
-    // start process
-    this.process = require('child_process').spawn(cmd[0], cmd.slice(1), {});
-    this.process.stdout.setEncoding('utf8');
-    this.process.stderr.setEncoding('utf8');
-    
-    // return promise which resolves after starting monero-wallet-rpc
-    let uri;
-    let that = this;
-    let output = "";
-    return new Promise(function(resolve, reject) {
-      
-      // handle stdout
-      that.process.stdout.on('data', function(data) {
-        let line = data.toString();
-        LibraryUtils.log(2, line);
-        output += line + '\n'; // capture output in case of error
-        
-        // extract uri from e.g. "I Binding on 127.0.0.1 (IPv4):38085"
-        let uriLineContains = "Binding on ";
-        let uriLineContainsIdx = line.indexOf(uriLineContains);
-        if (uriLineContainsIdx >= 0) {
-          let host = line.substring(uriLineContainsIdx + uriLineContains.length, line.lastIndexOf(' '));
-          let unformattedLine = line.replace(/\u001b\[.*?m/g, '').trim(); // remove color formatting
-          let port = unformattedLine.substring(unformattedLine.lastIndexOf(':') + 1);
-          let sslIdx = cmd.indexOf("--rpc-ssl");
-          let sslEnabled = sslIdx >= 0 ? "enabled" == cmd[sslIdx + 1].toLowerCase() : false;
-          uri = (sslEnabled ? "https" : "http") + "://" + host + ":" + port;
-        }
-        
-        // read success message
-        if (line.indexOf("Starting wallet RPC server") >= 0) {
-          
-          // get username and password from params
-          let userPassIdx = cmd.indexOf("--rpc-login");
-          let userPass = userPassIdx >= 0 ? cmd[userPassIdx + 1] : undefined;
-          let username = userPass === undefined ? undefined : userPass.substring(0, userPass.indexOf(':'));
-          let password = userPass === undefined ? undefined : userPass.substring(userPass.indexOf(':') + 1);
-          
-          // create client connected to internal process
-          let wallet = new MoneroWalletRpc(uri, username, password);
-          wallet.process = that.process;
-          
-          // resolve promise with client connected to internal process 
-          this.isResolved = true;
-          resolve(wallet);
-        }
-      });
-      
-      // handle stderr
-      that.process.stderr.on('data', function(data) {
-        if (LibraryUtils.getLogLevel() >= 2) console.error(data);
-      });
-      
-      // handle exit
-      that.process.on("exit", function(code) {
-        if (!this.isResolved) reject(new MoneroError("monero-wallet-rpc process terminated with exit code " + code + (output ? ":\n\n" + output : "")));
-      });
-      
-      // handle error
-      that.process.on("error", function(err) {
-        if (err.message.indexOf("ENOENT") >= 0) reject(new MoneroError("monero-wallet-rpc does not exist at path '" + cmd[0] + "'"));
-        if (!this.isResolved) reject(err);
-      });
-      
-      // handle uncaught exception
-      that.process.on("uncaughtException", function(err, origin) {
-        console.error("Uncaught exception in monero-wallet-rpc process: " + err.message);
-        console.error(origin);
-        reject(err);
-      });
-    });
-  }
-  
-  // --------------------------- RPC WALLET METHODS ---------------------------
-  
-  /**
-   * Get the internal process running monero-wallet-rpc.
-   * 
-   * @return the process running monero-wallet-rpc, undefined if not created from new process
-   */
-  getProcess() {
-    return this.process;
-  }
-  
-  /**
-   * Stop the internal process running monero-wallet-rpc, if applicable.
-   * 
-   * @param {boolean} force specifies if the process should be destroyed forcibly
-   * @return {Promise<number|undefined>} the exit code from stopping the process
-   */
-  async stopProcess(force) {
-    if (this.process === undefined) throw new MoneroError("MoneroWalletRpc instance not created from new process");
-    let listenersCopy = GenUtils.copyArray(this.getListeners());
-    for (let listener of listenersCopy) await this.removeListener(listener);
-    return GenUtils.killProcess(this.process, force ? "sigkill" : undefined);
-  }
-  
-  /**
-   * Get the wallet's RPC connection.
-   * 
-   * @return {MoneroWalletRpc} the wallet's rpc connection
-   */
-  getRpcConnection() {
-    return this.rpc;
-  }
-  
-  /**
-   * <p>Open an existing wallet on the monero-wallet-rpc server.</p>
-   * 
-   * <p>Example:<p>
-   * 
-   * <code>
-   * let wallet = new MoneroWalletRpc("http://localhost:38084", "rpc_user", "abc123");<br>
-   * await wallet.openWallet("mywallet1", "supersecretpassword");<br>
-   * await wallet.openWallet({<br>
-   * &nbsp;&nbsp; path: "mywallet2",<br>
-   * &nbsp;&nbsp; password: "supersecretpassword",<br>
-   * &nbsp;&nbsp; serverUri: "http://locahost:38081",<br>
-   * &nbsp;&nbsp; rejectUnauthorized: false<br>
-   * });<br>
-   * </code>
-   * 
-   * @param {string|object|MoneroWalletConfig} pathOrConfig  - the wallet's name or configuration to open
-   * @param {string} pathOrConfig.path - path of the wallet to create (optional, in-memory wallet if not given)
-   * @param {string} pathOrConfig.password - password of the wallet to create
-   * @param {string} pathOrConfig.serverUri - uri of a daemon to use (optional, monero-wallet-rpc usually started with daemon config)
-   * @param {string} pathOrConfig.serverUsername - username to authenticate with the daemon (optional)
-   * @param {string} pathOrConfig.serverPassword - password to authenticate with the daemon (optional)
-   * @param {boolean} pathOrConfig.rejectUnauthorized - reject self-signed server certificates if true (defaults to true)
-   * @param {MoneroRpcConnection|object} pathOrConfig.server - MoneroRpcConnection or equivalent JS object providing daemon configuration (optional)
-   * @param {string} password is the wallet's password
-   * @return {MoneroWalletRpc} this wallet client
-   */
-  async openWallet(pathOrConfig, password) {
-    
-    // normalize and validate config
-    let config = new MoneroWalletConfig(typeof pathOrConfig === "string" ? {path: pathOrConfig, password: password ? password : ""} : pathOrConfig);
-    // TODO: ensure other fields are uninitialized?
-    
-    // open wallet on rpc server
-    if (!config.getPath()) throw new MoneroError("Must provide name of wallet to open");
-    await this.rpc.sendJsonRequest("open_wallet", {filename: config.getPath(), password: config.getPassword()});
-    await this._clear();
-    this.path = config.getPath();
-    
-    // set daemon if provided
-    if (config.getServer()) return this.setDaemonConnection(config.getServer());
-    return this;
-  }
-  
-  /**
-   * <p>Create and open a wallet on the monero-wallet-rpc server.<p>
-   * 
-   * <p>Example:<p>
-   * 
-   * <code>
-   * &sol;&sol; construct client to monero-wallet-rpc<br>
-   * let walletRpc = new MoneroWalletRpc("http://localhost:38084", "rpc_user", "abc123");<br><br>
-   * 
-   * &sol;&sol; create and open wallet on monero-wallet-rpc<br>
-   * await walletRpc.createWallet({<br>
-   * &nbsp;&nbsp; path: "mywallet",<br>
-   * &nbsp;&nbsp; password: "abc123",<br>
-   * &nbsp;&nbsp; seed: "coexist igloo pamphlet lagoon...",<br>
-   * &nbsp;&nbsp; restoreHeight: 1543218l<br>
-   * });
-   *  </code>
-   * 
-   * @param {object|MoneroWalletConfig} config - MoneroWalletConfig or equivalent JS object
-   * @param {string} config.path - path of the wallet to create (optional, in-memory wallet if not given)
-   * @param {string} config.password - password of the wallet to create
-   * @param {string} config.seed - seed of the wallet to create (optional, random wallet created if neither seed nor keys given)
-   * @param {string} config.seedOffset - the offset used to derive a new seed from the given seed to recover a secret wallet from the seed
-   * @param {boolean} config.isMultisig - restore multisig wallet from seed
-   * @param {string} config.primaryAddress - primary address of the wallet to create (only provide if restoring from keys)
-   * @param {string} config.privateViewKey - private view key of the wallet to create (optional)
-   * @param {string} config.privateSpendKey - private spend key of the wallet to create (optional)
-   * @param {number} config.restoreHeight - block height to start scanning from (defaults to 0 unless generating random wallet)
-   * @param {string} config.language - language of the wallet's mnemonic phrase or seed (defaults to "English" or auto-detected)
-   * @param {MoneroRpcConnection} config.server - MoneroRpcConnection to a monero daemon (optional)<br>
-   * @param {string} config.serverUri - uri of a daemon to use (optional, monero-wallet-rpc usually started with daemon config)
-   * @param {string} config.serverUsername - username to authenticate with the daemon (optional)
-   * @param {string} config.serverPassword - password to authenticate with the daemon (optional)
-   * @param {MoneroConnectionManager} config.connectionManager - manage connections to monerod (optional)
-   * @param {boolean} config.rejectUnauthorized - reject self-signed server certificates if true (defaults to true)
-   * @param {MoneroRpcConnection|object} config.server - MoneroRpcConnection or equivalent JS object providing daemon configuration (optional)
-   * @param {boolean} config.saveCurrent - specifies if the current RPC wallet should be saved before being closed (default true)
-   * @return {MoneroWalletRpc} this wallet client
-   */
-  async createWallet(config) {
-    
-    // normalize and validate config
-    if (config === undefined) throw new MoneroError("Must provide config to create wallet");
-    config = new MoneroWalletConfig(config);
-    if (config.getSeed() !== undefined && (config.getPrimaryAddress() !== undefined || config.getPrivateViewKey() !== undefined || config.getPrivateSpendKey() !== undefined)) {
-      throw new MoneroError("Wallet can be initialized with a seed or keys but not both");
-    }
-    if (config.getNetworkType() !== undefined) throw new MoneroError("Cannot provide networkType when creating RPC wallet because server's network type is already set");
-    if (config.getAccountLookahead() !== undefined || config.getSubaddressLookahead() !== undefined) throw new MoneroError("monero-wallet-rpc does not support creating wallets with subaddress lookahead over rpc");
-    if (config.getPassword() === undefined) config.setPassword("");
-
-    // create wallet
-    if (config.getSeed() !== undefined) await this._createWalletFromSeed(config);
-    else if (config.getPrivateSpendKey() !== undefined || config.getPrimaryAddress() !== undefined) await this._createWalletFromKeys(config);
-    else await this._createWalletRandom(config);
-
-    // set daemon or connection manager
-    if (config.getConnectionManager()) {
-      if (config.getServer()) throw new MoneroError("Wallet can be initialized with a server or connection manager but not both");
-      await this.setConnectionManager(config.getConnectionManager());
-    } else if (config.getServer()) {
-      await this.setDaemonConnection(config.getServer());
-    }
-    
-    return this;
-  }
-  
-  /**
-   * Create and open a new wallet with a randomly generated seed on the RPC server.
-   * 
-   * @param {MoneroWalletConfig} config - the wallet configuration
-   * @return {MoneroWalletRpc} this wallet client
-   */
-  async _createWalletRandom(config) {
-    if (config.getSeedOffset() !== undefined) throw new MoneroError("Cannot provide seedOffset when creating random wallet");
-    if (config.getRestoreHeight() !== undefined) throw new MoneroError("Cannot provide restoreHeight when creating random wallet");
-    if (config.getSaveCurrent() === false) throw new MoneroError("Current wallet is saved automatically when creating random wallet");
-    if (!config.getPath()) throw new MoneroError("Name is not initialized");
-    if (!config.getLanguage()) config.setLanguage(MoneroWallet.DEFAULT_LANGUAGE);
-    let params = { filename: config.getPath(), password: config.getPassword(), language: config.getLanguage() };
-    try {
-      await this.rpc.sendJsonRequest("create_wallet", params);
-    } catch (err) {
-      this._handleCreateWalletError(config.getPath(), err);
-    }
-    await this._clear();
-    this.path = config.getPath();
-    return this;
-  }
-  
-  /**
-   * Create and open a wallet from an existing seed on the RPC server,
-   * closing the currently open wallet if applicable.
-   * 
-   * @param {MoneroWalletConfig} config - the wallet configuration
-   * @return {MoneroWalletRpc} this wallet client
-   */
-  async _createWalletFromSeed(config) {
-    try {
-      await this.rpc.sendJsonRequest("restore_deterministic_wallet", {
-        filename: config.getPath(),
-        password: config.getPassword(),
-        seed: config.getSeed(),
-        seed_offset: config.getSeedOffset(),
-        enable_multisig_experimental: config.isMultisig(),
-        restore_height: config.getRestoreHeight(),
-        language: config.getLanguage(),
-        autosave_current: config.getSaveCurrent()
-      });
-    } catch (err) {
-      this._handleCreateWalletError(config.getPath(), err);
-    }
-    await this._clear();
-    this.path = config.getPath();
-    return this;
-  }
-  
-  /**
-   * Create a wallet on the RPC server from an address, view key, and (optionally) spend key.
-   * 
-   * @param {MoneroWalletConfig} config - the wallet configuration
-   * @return {MoneroWalletRpc} this wallet client
-   */
-  async _createWalletFromKeys(config) {
-    if (config.getSeedOffset() !== undefined) throw new MoneroError("Cannot provide seedOffset when creating wallet from keys");
-    if (config.getRestoreHeight() === undefined) config.setRestoreHeight(0);
-    if (config.getLanguage() === undefined) config.setLanguage(MoneroWallet.DEFAULT_LANGUAGE);
-    try {
-      await this.rpc.sendJsonRequest("generate_from_keys", {
-        filename: config.getPath(),
-        password: config.getPassword(),
-        address: config.getPrimaryAddress(),
-        viewkey: config.getPrivateViewKey(),
-        spendkey: config.getPrivateSpendKey(),
-        restore_height: config.getRestoreHeight(),
-        autosave_current: config.getSaveCurrent()
-      });
-    } catch (err) {
-      this._handleCreateWalletError(config.getPath(), err);
-    }
-    await this._clear();
-    this.path = config.getPath();
-    return this;
-  }
-  
-  _handleCreateWalletError(name, err) {
-    if (err.message === "Cannot create wallet. Already exists.") throw new MoneroRpcError("Wallet already exists: " + name, err.getCode(), err.getRpcMethod(), err.getRpcParams());
-    if (err.message === "Electrum-style word list failed verification") throw new MoneroRpcError("Invalid mnemonic", err.getCode(), err.getRpcMethod(), err.getRpcParams());
-    throw err;
-  }
-  
-  async isViewOnly() {
-    try {
-      await this.rpc.sendJsonRequest("query_key", {key_type: "mnemonic"});
-      return false; // key retrieval succeeds if not view only
-    } catch (e) {
-      if (e.getCode() === -29) return true;  // wallet is view only
-      if (e.getCode() === -1) return false;  // wallet is offline but not view only
-      throw e;
-    }
-  }
-  
-  /**
-   * Set the wallet's daemon connection.
-   * 
-   * @param {string|MoneroRpcConnection} uriOrConnection - the daemon's URI or connection (defaults to offline)
-   * @param {boolean} isTrusted - indicates if the daemon in trusted
-   * @param {SslOptions} sslOptions - custom SSL configuration
-   */
-  async setDaemonConnection(uriOrRpcConnection, isTrusted, sslOptions) {
-    let connection = !uriOrRpcConnection ? undefined : uriOrRpcConnection instanceof MoneroRpcConnection ? uriOrRpcConnection : new MoneroRpcConnection(uriOrRpcConnection);
-    if (connection) connection.setProxyToWorker(false);
-    if (!sslOptions) sslOptions = new SslOptions();
-    let params = {};
-    params.address = connection ? connection.getUri() : "bad_uri"; // TODO monero-wallet-rpc: bad daemon uri necessary for offline?
-    params.username = connection ? connection.getUsername() : "";
-    params.password = connection ? connection.getPassword() : "";
-    params.trusted = isTrusted;
-    params.ssl_support = "autodetect";
-    params.ssl_private_key_path = sslOptions.getPrivateKeyPath();
-    params.ssl_certificate_path  = sslOptions.getCertificatePath();
-    params.ssl_ca_file = sslOptions.getCertificateAuthorityFile();
-    params.ssl_allowed_fingerprints = sslOptions.getAllowedFingerprints();
-    params.ssl_allow_any_cert = sslOptions.getAllowAnyCert();
-    await this.rpc.sendJsonRequest("set_daemon", params);
-    this.daemonConnection = connection;
-  }
-  
-  async getDaemonConnection() {
-    return this.daemonConnection;
-  }
-  
-  // -------------------------- COMMON WALLET METHODS -------------------------
-  
-  async addListener(listener) {
-    assert(listener instanceof MoneroWalletListener, "Listener must be instance of MoneroWalletListener");
-    this.listeners.push(listener);
-    this._refreshListening();
-  }
-  
-  async removeListener(listener) {
-    let idx = this.listeners.indexOf(listener);
-    if (idx > -1) this.listeners.splice(idx, 1);
-    else throw new MoneroError("Listener is not registered with wallet");
-    this._refreshListening();
-  }
-  
-  getListeners() {
-    return this.listeners;
-  }
-  
-  async isConnectedToDaemon() {
-    try {
-      await this.checkReserveProof(await this.getPrimaryAddress(), "", ""); // TODO (monero-project): provide better way to know if wallet rpc is connected to daemon
-      throw new MoneroError("check reserve expected to fail");
-    } catch (e) {
-      return e.message.indexOf("Failed to connect to daemon") < 0;
-    }
-  }
-  
-  async getVersion() {
-    let resp = await this.rpc.sendJsonRequest("get_version");
-    return new MoneroVersion(resp.result.version, resp.result.release);
-  }
-  
-  async getPath() {
-    return this.path;
-  }
-  
-  async getSeed() {
-    let resp = await this.rpc.sendJsonRequest("query_key", { key_type: "mnemonic" });
-    return resp.result.key;
-  }
-  
-  async getSeedLanguage() {
-    if (await this.getSeed() === undefined) return undefined;
-    throw new MoneroError("MoneroWalletRpc.getSeedLanguage() not supported");
-  }
-
-  /**
-   * Get a list of available languages for the wallet's seed.
-   * 
-   * @return {string[]} the available languages for the wallet's seed.
-   */
-  async getSeedLanguages() {
-    return (await this.rpc.sendJsonRequest("get_languages")).result.languages;
-  }
-  
-  async getPrivateViewKey() {
-    let resp = await this.rpc.sendJsonRequest("query_key", { key_type: "view_key" });
-    return resp.result.key;
-  }
-  
-  async getPrivateSpendKey() {
-    let resp = await this.rpc.sendJsonRequest("query_key", { key_type: "spend_key" });
-    return resp.result.key;
-  }
-  
-  async getAddress(accountIdx, subaddressIdx) {
-    let subaddressMap = this.addressCache[accountIdx];
-    if (!subaddressMap) {
-      await this.getSubaddresses(accountIdx, undefined, true);  // cache's all addresses at this account
-      return this.getAddress(accountIdx, subaddressIdx);        // recursive call uses cache
-    }
-    let address = subaddressMap[subaddressIdx];
-    if (!address) {
-      await this.getSubaddresses(accountIdx, undefined, true);  // cache's all addresses at this account
-      return this.addressCache[accountIdx][subaddressIdx];
-    }
-    return address;
-  }
-  
-  // TODO: use cache
-  async getAddressIndex(address) {
-    
-    // fetch result and normalize error if address does not belong to the wallet
-    let resp;
-    try {
-      resp = await this.rpc.sendJsonRequest("get_address_index", {address: address});
-    } catch (e) {
-      if (e.getCode() === -2) throw new MoneroError(e.message);
-      throw e;
-    }
-    
-    // convert rpc response
-    let subaddress = new MoneroSubaddress(address);
-    subaddress.setAccountIndex(resp.result.index.major);
-    subaddress.setIndex(resp.result.index.minor);
-    return subaddress;
-  }
-  
-  async getIntegratedAddress(standardAddress, paymentId) {
-    try {
-      let integratedAddressStr = (await this.rpc.sendJsonRequest("make_integrated_address", {standard_address: standardAddress, payment_id: paymentId})).result.integrated_address;
-      return await this.decodeIntegratedAddress(integratedAddressStr);
-    } catch (e) {
-      if (e.message.includes("Invalid payment ID")) throw new MoneroError("Invalid payment ID: " + paymentId);
-      throw e;
-    }
-  }
-  
-  async decodeIntegratedAddress(integratedAddress) {
-    let resp = await this.rpc.sendJsonRequest("split_integrated_address", {integrated_address: integratedAddress});
-    return new MoneroIntegratedAddress().setStandardAddress(resp.result.standard_address).setPaymentId(resp.result.payment_id).setIntegratedAddress(integratedAddress);
-  }
-  
-  async getHeight() {
-    return (await this.rpc.sendJsonRequest("get_height")).result.height;
-  }
-  
-  async getDaemonHeight() {
-    throw new MoneroError("monero-wallet-rpc does not support getting the chain height");
-  }
-  
-  async getHeightByDate(year, month, day) {
-    throw new MoneroError("monero-wallet-rpc does not support getting a height by date");
-  }
-  
-  async sync(startHeight, onProgress) {
-    assert(onProgress === undefined, "Monero Wallet RPC does not support reporting sync progress");
-    try {
-      let resp = await this.rpc.sendJsonRequest("refresh", {start_height: startHeight}, 0);
-      await this._poll();
-      return new MoneroSyncResult(resp.result.blocks_fetched, resp.result.received_money);
-    } catch (err) {
-      if (err.message === "no connection to daemon") throw new MoneroError("Wallet is not connected to daemon");
-      throw err;
-    }
-  }
-  
-  async startSyncing(syncPeriodInMs) {
-    
-    // convert ms to seconds for rpc parameter
-    let syncPeriodInSeconds = Math.round((syncPeriodInMs === undefined ? MoneroWalletRpc.DEFAULT_SYNC_PERIOD_IN_MS : syncPeriodInMs) / 1000);
-    
-    // send rpc request
-    await this.rpc.sendJsonRequest("auto_refresh", {
-      enable: true,
-      period: syncPeriodInSeconds
-    });
-    
-    // update sync period for poller
-    this.syncPeriodInMs = syncPeriodInSeconds * 1000;
-    if (this.walletPoller !== undefined) this.walletPoller.setPeriodInMs(syncPeriodInMs);
-    
-    // poll if listening
-    await this._poll();
-  }
-  
-  async stopSyncing() {
-    return this.rpc.sendJsonRequest("auto_refresh", { enable: false });
-  }
-  
-  async scanTxs(txHashes) {
-    if (!txHashes || !txHashes.length) throw new MoneroError("No tx hashes given to scan");
-    await this.rpc.sendJsonRequest("scan_tx", {txids: txHashes});
-    await this._poll();
-  }
-  
-  async rescanSpent() {
-    await this.rpc.sendJsonRequest("rescan_spent", undefined, 0);
-  }
-  
-  async rescanBlockchain() {
-    await this.rpc.sendJsonRequest("rescan_blockchain", undefined, 0);
-  }
-  
-  async getBalance(accountIdx, subaddressIdx) {
-    return (await this._getBalances(accountIdx, subaddressIdx))[0];
-  }
-  
-  async getUnlockedBalance(accountIdx, subaddressIdx) {
-    return (await this._getBalances(accountIdx, subaddressIdx))[1];
-  }
-  
-  async getAccounts(includeSubaddresses, tag, skipBalances) {
-    
-    // fetch accounts from rpc
-    let resp = await this.rpc.sendJsonRequest("get_accounts", {tag: tag});
-    
-    // build account objects and fetch subaddresses per account using get_address
-    // TODO monero-wallet-rpc: get_address should support all_accounts so not called once per account
-    let accounts = [];
-    for (let rpcAccount of resp.result.subaddress_accounts) {
-      let account = MoneroWalletRpc._convertRpcAccount(rpcAccount);
-      if (includeSubaddresses) account.setSubaddresses(await this.getSubaddresses(account.getIndex(), undefined, true));
-      accounts.push(account);
-    }
-    
-    // fetch and merge fields from get_balance across all accounts
-    if (includeSubaddresses && !skipBalances) {
-      
-      // these fields are not initialized if subaddress is unused and therefore not returned from `get_balance`
-      for (let account of accounts) {
-        for (let subaddress of account.getSubaddresses()) {
-          subaddress.setBalance(new BigInteger(0));
-          subaddress.setUnlockedBalance(new BigInteger(0));
-          subaddress.setNumUnspentOutputs(0);
-          subaddress.setNumBlocksToUnlock(0);
-        }
-      }
-      
-      // fetch and merge info from get_balance
-      resp = await this.rpc.sendJsonRequest("get_balance", {all_accounts: true});
-      if (resp.result.per_subaddress) {
-        for (let rpcSubaddress of resp.result.per_subaddress) {
-          let subaddress = MoneroWalletRpc._convertRpcSubaddress(rpcSubaddress);
-          
-          // merge info
-          let account = accounts[subaddress.getAccountIndex()];
-          assert.equal(subaddress.getAccountIndex(), account.getIndex(), "RPC accounts are out of order");  // would need to switch lookup to loop
-          let tgtSubaddress = account.getSubaddresses()[subaddress.getIndex()];
-          assert.equal(subaddress.getIndex(), tgtSubaddress.getIndex(), "RPC subaddresses are out of order");
-          if (subaddress.getBalance() !== undefined) tgtSubaddress.setBalance(subaddress.getBalance());
-          if (subaddress.getUnlockedBalance() !== undefined) tgtSubaddress.setUnlockedBalance(subaddress.getUnlockedBalance());
-          if (subaddress.getNumUnspentOutputs() !== undefined) tgtSubaddress.setNumUnspentOutputs(subaddress.getNumUnspentOutputs());
-        }
-      }
-    }
-    
-    // return accounts
-    return accounts;
-  }
-  
-  // TODO: getAccountByIndex(), getAccountByTag()
-  async getAccount(accountIdx, includeSubaddresses, skipBalances) {
-    assert(accountIdx >= 0);
-    for (let account of await this.getAccounts()) {
-      if (account.getIndex() === accountIdx) {
-        if (includeSubaddresses) account.setSubaddresses(await this.getSubaddresses(accountIdx, undefined, skipBalances));
-        return account;
-      }
-    }
-    throw new Exception("Account with index " + accountIdx + " does not exist");
-  }
-
-  async createAccount(label) {
-    label = label ? label : undefined;
-    let resp = await this.rpc.sendJsonRequest("create_account", {label: label});
-    return new MoneroAccount(resp.result.account_index, resp.result.address, new BigInteger(0), new BigInteger(0));
-  }
-
-  async getSubaddresses(accountIdx, subaddressIndices, skipBalances) {
-    
-    // fetch subaddresses
-    let params = {};
-    params.account_index = accountIdx;
-    if (subaddressIndices) params.address_index = GenUtils.listify(subaddressIndices);
-    let resp = await this.rpc.sendJsonRequest("get_address", params);
-    
-    // initialize subaddresses
-    let subaddresses = [];
-    for (let rpcSubaddress of resp.result.addresses) {
-      let subaddress = MoneroWalletRpc._convertRpcSubaddress(rpcSubaddress);
-      subaddress.setAccountIndex(accountIdx);
-      subaddresses.push(subaddress);
-    }
-    
-    // fetch and initialize subaddress balances
-    if (!skipBalances) {
-      
-      // these fields are not initialized if subaddress is unused and therefore not returned from `get_balance`
-      for (let subaddress of subaddresses) {
-        subaddress.setBalance(new BigInteger(0));
-        subaddress.setUnlockedBalance(new BigInteger(0));
-        subaddress.setNumUnspentOutputs(0);
-        subaddress.setNumBlocksToUnlock(0);
-      }
-
-      // fetch and initialize balances
-      resp = await this.rpc.sendJsonRequest("get_balance", params);
-      if (resp.result.per_subaddress) {
-        for (let rpcSubaddress of resp.result.per_subaddress) {
-          let subaddress = MoneroWalletRpc._convertRpcSubaddress(rpcSubaddress);
-          
-          // transfer info to existing subaddress object
-          for (let tgtSubaddress of subaddresses) {
-            if (tgtSubaddress.getIndex() !== subaddress.getIndex()) continue; // skip to subaddress with same index
-            if (subaddress.getBalance() !== undefined) tgtSubaddress.setBalance(subaddress.getBalance());
-            if (subaddress.getUnlockedBalance() !== undefined) tgtSubaddress.setUnlockedBalance(subaddress.getUnlockedBalance());
-            if (subaddress.getNumUnspentOutputs() !== undefined) tgtSubaddress.setNumUnspentOutputs(subaddress.getNumUnspentOutputs());
-            if (subaddress.getNumBlocksToUnlock() !== undefined) tgtSubaddress.setNumBlocksToUnlock(subaddress.getNumBlocksToUnlock());
-          }
-        }
-      }
-    }
-    
-    // cache addresses
-    let subaddressMap = this.addressCache[accountIdx];
-    if (!subaddressMap) {
-      subaddressMap = {};
-      this.addressCache[accountIdx] = subaddressMap;
-    }
-    for (let subaddress of subaddresses) {
-      subaddressMap[subaddress.getIndex()] = subaddress.getAddress();
-    }
-    
-    // return results
-    return subaddresses;
-  }
-
-  async getSubaddress(accountIdx, subaddressIdx, skipBalances) {
-    assert(accountIdx >= 0);
-    assert(subaddressIdx >= 0);
-    return (await this.getSubaddresses(accountIdx, subaddressIdx, skipBalances))[0];
-  }
-
-  async createSubaddress(accountIdx, label) {
-    
-    // send request
-    let resp = await this.rpc.sendJsonRequest("create_address", {account_index: accountIdx, label: label});
-    
-    // build subaddress object
-    let subaddress = new MoneroSubaddress();
-    subaddress.setAccountIndex(accountIdx);
-    subaddress.setIndex(resp.result.address_index);
-    subaddress.setAddress(resp.result.address);
-    subaddress.setLabel(label ? label : undefined);
-    subaddress.setBalance(new BigInteger(0));
-    subaddress.setUnlockedBalance(new BigInteger(0));
-    subaddress.setNumUnspentOutputs(0);
-    subaddress.setIsUsed(false);
-    subaddress.setNumBlocksToUnlock(0);
-    return subaddress;
-  }
-
-  async setSubaddressLabel(accountIdx, subaddressIdx, label) {
-    await this.rpc.sendJsonRequest("label_address", {index: {major: accountIdx, minor: subaddressIdx}, label: label});
-  }
-  
-  async getTxs(query) {
-    
-    // copy query
-    query = MoneroWallet._normalizeTxQuery(query);
-    
-    // temporarily disable transfer and output queries in order to collect all tx information
-    let transferQuery = query.getTransferQuery();
-    let inputQuery = query.getInputQuery();
-    let outputQuery = query.getOutputQuery();
-    query.setTransferQuery(undefined);
-    query.setInputQuery(undefined);
-    query.setOutputQuery(undefined);
-    
-    // fetch all transfers that meet tx query
-    let transfers = await this._getTransfersAux(new MoneroTransferQuery().setTxQuery(MoneroWalletRpc._decontextualize(query.copy())));
-    
-    // collect unique txs from transfers while retaining order
-    let txs = [];
-    let txsSet = new Set();
-    for (let transfer of transfers) {
-      if (!txsSet.has(transfer.getTx())) {
-        txs.push(transfer.getTx());
-        txsSet.add(transfer.getTx());
-      }
-    }
-    
-    // cache types into maps for merging and lookup
-    let txMap = {};
-    let blockMap = {};
-    for (let tx of txs) {
-      MoneroWalletRpc._mergeTx(tx, txMap, blockMap);
-    }
-    
-    // fetch and merge outputs if requested
-    if (query.getIncludeOutputs() || outputQuery) {
-        
-      // fetch outputs
-      let outputQueryAux = (outputQuery ? outputQuery.copy() : new MoneroOutputQuery()).setTxQuery(MoneroWalletRpc._decontextualize(query.copy()));
-      let outputs = await this._getOutputsAux(outputQueryAux);
-      
-      // merge output txs one time while retaining order
-      let outputTxs = [];
-      for (let output of outputs) {
-        if (!outputTxs.includes(output.getTx())) {
-          MoneroWalletRpc._mergeTx(output.getTx(), txMap, blockMap);
-          outputTxs.push(output.getTx());
-        }
-      }
-    }
-    
-    // restore transfer and output queries
-    query.setTransferQuery(transferQuery);
-    query.setInputQuery(inputQuery);
-    query.setOutputQuery(outputQuery);
-    
-    // filter txs that don't meet transfer query
-    let txsQueried = [];
-    for (let tx of txs) {
-      if (query.meetsCriteria(tx)) txsQueried.push(tx);
-      else if (tx.getBlock() !== undefined) tx.getBlock().getTxs().splice(tx.getBlock().getTxs().indexOf(tx), 1);
-    }
-    txs = txsQueried;
-    
-    // special case: re-fetch txs if inconsistency caused by needing to make multiple rpc calls
-    for (let tx of txs) {
-      if (tx.isConfirmed() && tx.getBlock() === undefined || !tx.isConfirmed() && tx.getBlock() !== undefined) {
-        console.error("Inconsistency detected building txs from multiple rpc calls, re-fetching txs");
-        return this.getTxs(query);
-      }
-    }
-    
-    // order txs if tx hashes given then return
-    if (query.getHashes() && query.getHashes().length > 0) {
-      let txsById = new Map()  // store txs in temporary map for sorting
-      for (let tx of txs) txsById.set(tx.getHash(), tx);
-      let orderedTxs = [];
-      for (let hash of query.getHashes()) if (txsById.get(hash)) orderedTxs.push(txsById.get(hash));
-      txs = orderedTxs;
-    }
-    return txs;
-  }
-  
-  async getTransfers(query) {
-    
-    // copy and normalize query up to block
-    query = MoneroWallet._normalizeTransferQuery(query);
-    
-    // get transfers directly if query does not require tx context (other transfers, outputs)
-    if (!MoneroWalletRpc._isContextual(query)) return this._getTransfersAux(query);
-    
-    // otherwise get txs with full models to fulfill query
-    let transfers = [];
-    for (let tx of await this.getTxs(query.getTxQuery())) {
-      for (let transfer of tx.filterTransfers(query)) {
-        transfers.push(transfer);
-      }
-    }
-    
-    return transfers;
-  }
-  
-  async getOutputs(query) {
-    
-    // copy and normalize query up to block
-    query = MoneroWallet._normalizeOutputQuery(query);
-    
-    // get outputs directly if query does not require tx context (other outputs, transfers)
-    if (!MoneroWalletRpc._isContextual(query)) return this._getOutputsAux(query);
-    
-    // otherwise get txs with full models to fulfill query
-    let outputs = [];
-    for (let tx of await this.getTxs(query.getTxQuery())) {
-      for (let output of tx.filterOutputs(query)) {
-        outputs.push(output);
-      }
-    }
-    
-    return outputs;
-  }
-  
-  async exportOutputs(all) {
-    return (await this.rpc.sendJsonRequest("export_outputs", {all: all})).result.outputs_data_hex;
-  }
-  
-  async importOutputs(outputsHex) {
-    let resp = await this.rpc.sendJsonRequest("import_outputs", {outputs_data_hex: outputsHex});
-    return resp.result.num_imported;
-  }
-  
-  async exportKeyImages(all) {
-    return await this._rpcExportKeyImages(all);
-  }
-  
-  async importKeyImages(keyImages) {
-    
-    // convert key images to rpc parameter
-    let rpcKeyImages = keyImages.map(keyImage => ({key_image: keyImage.getHex(), signature: keyImage.getSignature()}));
-    
-    // send request
-    let resp = await this.rpc.sendJsonRequest("import_key_images", {signed_key_images: rpcKeyImages});
-    
-    // build and return result
-    let importResult = new MoneroKeyImageImportResult();
-    importResult.setHeight(resp.result.height);
-    importResult.setSpentAmount(new BigInteger(resp.result.spent));
-    importResult.setUnspentAmount(new BigInteger(resp.result.unspent));
-    return importResult;
-  }
-  
-  async getNewKeyImagesFromLastImport() {
-    return await this._rpcExportKeyImages(false);
-  }
-  
-  async freezeOutput(keyImage) {
-    return this.rpc.sendJsonRequest("freeze", {key_image: keyImage});
-  }
-  
-  async thawOutput(keyImage) {
-    return this.rpc.sendJsonRequest("thaw", {key_image: keyImage});
-  }
-  
-  async isOutputFrozen(keyImage) {
-    let resp = await this.rpc.sendJsonRequest("frozen", {key_image: keyImage});
-    return resp.result.frozen === true;
-  }
-  
-  async createTxs(config) {
-    
-    // validate, copy, and normalize config
-    config = MoneroWallet._normalizeCreateTxsConfig(config);
-    if (config.getCanSplit() === undefined) config.setCanSplit(true);
-    if (config.getRelay() === true && await this.isMultisig()) throw new MoneroError("Cannot relay multisig transaction until co-signed");
-
-    // determine account and subaddresses to send from
-    let accountIdx = config.getAccountIndex();
-    if (accountIdx === undefined) throw new MoneroError("Must provide the account index to send from");
-    let subaddressIndices = config.getSubaddressIndices() === undefined ? undefined : config.getSubaddressIndices().slice(0); // fetch all or copy given indices
-    
-    // build config parameters
-    let params = {};
-    params.destinations = [];
-    for (let destination of config.getDestinations()) {
-      assert(destination.getAddress(), "Destination address is not defined");
-      assert(destination.getAmount(), "Destination amount is not defined");
-      params.destinations.push({ address: destination.getAddress(), amount: destination.getAmount().toString() });
-    }
-    if (config.getSubtractFeeFrom()) params.subtract_fee_from_outputs = config.getSubtractFeeFrom();
-    params.account_index = accountIdx;
-    params.subaddr_indices = subaddressIndices;
-    params.payment_id = config.getPaymentId();
-    if (config.getUnlockTime() !== undefined) params.unlock_time = config.getUnlockTime().toString()
-    params.do_not_relay = config.getRelay() !== true;
-    assert(config.getPriority() === undefined || config.getPriority() >= 0 && config.getPriority() <= 3);
-    params.priority = config.getPriority();
-    params.get_tx_hex = true;
-    params.get_tx_metadata = true;
-    if (config.getCanSplit()) params.get_tx_keys = true; // param to get tx key(s) depends if split
-    else params.get_tx_key = true;
-
-    // cannot apply subtractFeeFrom with `transfer_split` call
-    if (config.getCanSplit() && config.getSubtractFeeFrom() && config.getSubtractFeeFrom().length > 0) {
-      throw new MoneroError("subtractfeefrom transfers cannot be split over multiple transactions yet");
-    }
-    
-    // send request
-    let result;
-    try {
-      let resp = await this.rpc.sendJsonRequest(config.getCanSplit() ? "transfer_split" : "transfer", params);
-      result = resp.result;
-    } catch (err) {
-      if (err.message.indexOf("WALLET_RPC_ERROR_CODE_WRONG_ADDRESS") > -1) throw new MoneroError("Invalid destination address");
-      throw err;
-    }
-    
-    // pre-initialize txs iff present. multisig and view-only wallets will have tx set without transactions
-    let txs;
-    let numTxs = config.getCanSplit() ? (result.fee_list !== undefined ? result.fee_list.length : 0) : (result.fee !== undefined ? 1 : 0);
-    if (numTxs > 0) txs = [];
-    let copyDestinations = numTxs === 1;
-    for (let i = 0; i < numTxs; i++) {
-      let tx = new MoneroTxWallet();
-      MoneroWalletRpc._initSentTxWallet(config, tx, copyDestinations);
-      tx.getOutgoingTransfer().setAccountIndex(accountIdx);
-      if (subaddressIndices !== undefined && subaddressIndices.length === 1) tx.getOutgoingTransfer().setSubaddressIndices(subaddressIndices);
-      txs.push(tx);
-    }
-    
-    // notify of changes
-    if (config.getRelay()) await this._poll();
-    
-    // initialize tx set from rpc response with pre-initialized txs
-    if (config.getCanSplit()) return MoneroWalletRpc._convertRpcSentTxsToTxSet(result, txs, config).getTxs();
-    else return MoneroWalletRpc._convertRpcTxToTxSet(result, txs === undefined ? undefined : txs[0], true, config).getTxs();
-  }
-  
-  async sweepOutput(config) {
-    
-    // normalize and validate config
-    config = MoneroWallet._normalizeSweepOutputConfig(config);
-    
-    // build request parameters
-    let params = {};
-    params.address = config.getDestinations()[0].getAddress();
-    params.account_index = config.getAccountIndex();
-    params.subaddr_indices = config.getSubaddressIndices();
-    params.key_image = config.getKeyImage();
-    if (config.getUnlockTime() !== undefined) params.unlock_time = config.getUnlockTime();
-    params.do_not_relay = config.getRelay() !== true;
-    assert(config.getPriority() === undefined || config.getPriority() >= 0 && config.getPriority() <= 3);
-    params.priority = config.getPriority();
-    params.payment_id = config.getPaymentId();
-    params.get_tx_key = true;
-    params.get_tx_hex = true;
-    params.get_tx_metadata = true;
-    
-    // send request
-    let resp = await this.rpc.sendJsonRequest("sweep_single", params);
-    let result = resp.result;
-    
-    // notify of changes
-    if (config.getRelay()) await this._poll();
-    
-    // build and return tx
-    let tx = MoneroWalletRpc._initSentTxWallet(config, undefined, true);
-    MoneroWalletRpc._convertRpcTxToTxSet(result, tx, true, config);
-    tx.getOutgoingTransfer().getDestinations()[0].setAmount(tx.getOutgoingTransfer().getAmount()); // initialize destination amount
-    return tx;
-  }
-  
-  async sweepUnlocked(config) {
-    
-    // validate and normalize config
-    config = MoneroWallet._normalizeSweepUnlockedConfig(config);
-    
-    // determine account and subaddress indices to sweep; default to all with unlocked balance if not specified
-    let indices = new Map();  // maps each account index to subaddress indices to sweep
-    if (config.getAccountIndex() !== undefined) {
-      if (config.getSubaddressIndices() !== undefined) {
-        indices.set(config.getAccountIndex(), config.getSubaddressIndices());
-      } else {
-        let subaddressIndices = [];
-        indices.set(config.getAccountIndex(), subaddressIndices);
-        for (let subaddress of await this.getSubaddresses(config.getAccountIndex())) {
-          if (subaddress.getUnlockedBalance().compare(new BigInteger(0)) > 0) subaddressIndices.push(subaddress.getIndex());
-        }
-      }
-    } else {
-      let accounts = await this.getAccounts(true);
-      for (let account of accounts) {
-        if (account.getUnlockedBalance().compare(new BigInteger(0)) > 0) {
-          let subaddressIndices = [];
-          indices.set(account.getIndex(), subaddressIndices);
-          for (let subaddress of account.getSubaddresses()) {
-            if (subaddress.getUnlockedBalance().compare(new BigInteger(0)) > 0) subaddressIndices.push(subaddress.getIndex());
-          }
-        }
-      }
-    }
-    
-    // sweep from each account and collect resulting tx sets
-    let txs = [];
-    for (let accountIdx of indices.keys()) {
-      
-      // copy and modify the original config
-      let copy = config.copy();
-      copy.setAccountIndex(accountIdx);
-      copy.setSweepEachSubaddress(false);
-      
-      // sweep all subaddresses together  // TODO monero-project: can this reveal outputs belong to the same wallet?
-      if (copy.getSweepEachSubaddress() !== true) {
-        copy.setSubaddressIndices(indices.get(accountIdx));
-        for (let tx of await this._rpcSweepAccount(copy)) txs.push(tx);
-      }
-      
-      // otherwise sweep each subaddress individually
-      else {
-        for (let subaddressIdx of indices.get(accountIdx)) {
-          copy.setSubaddressIndices([subaddressIdx]);
-          for (let tx of await this._rpcSweepAccount(copy)) txs.push(tx);
-        }
-      }
-    }
-    
-    // notify of changes
-    if (config.getRelay()) await this._poll();
-    return txs;
-  }
-  
-  async sweepDust(relay) {
-    if (relay === undefined) relay = false;
-    let resp = await this.rpc.sendJsonRequest("sweep_dust", {do_not_relay: !relay});
-    if (relay) await this._poll();
-    let result = resp.result;
-    let txSet = MoneroWalletRpc._convertRpcSentTxsToTxSet(result);
-    if (txSet.getTxs() === undefined) return [];
-    for (let tx of txSet.getTxs()) {
-      tx.setIsRelayed(!relay);
-      tx.setInTxPool(tx.isRelayed());
-    }
-    return txSet.getTxs();
-  }
-  
-  async relayTxs(txsOrMetadatas) {
-    assert(Array.isArray(txsOrMetadatas), "Must provide an array of txs or their metadata to relay");
-    let txHashes = [];
-    for (let txOrMetadata of txsOrMetadatas) {
-      let metadata = txOrMetadata instanceof MoneroTxWallet ? txOrMetadata.getMetadata() : txOrMetadata;
-      let resp = await this.rpc.sendJsonRequest("relay_tx", { hex: metadata });
-      txHashes.push(resp.result.tx_hash);
-    }
-    await this._poll(); // notify of changes
-    return txHashes;
-  }
-  
-  async describeTxSet(txSet) {
-    let resp = await this.rpc.sendJsonRequest("describe_transfer", {
-      unsigned_txset: txSet.getUnsignedTxHex(),
-      multisig_txset: txSet.getMultisigTxHex()
-    });
-    return MoneroWalletRpc._convertRpcDescribeTransfer(resp.result);
-  }
-  
-  async signTxs(unsignedTxHex) {
-    let resp = await this.rpc.sendJsonRequest("sign_transfer", {
-      unsigned_txset: unsignedTxHex,
-      export_raw: false
-    });
-    await this._poll();
-    return resp.result.signed_txset
-  }
-  
-  async submitTxs(signedTxHex) {
-    let resp = await this.rpc.sendJsonRequest("submit_transfer", {
-      tx_data_hex: signedTxHex
-    });
-    await this._poll();
-    return resp.result.tx_hash_list;
-  }
-  
-  async signMessage(message, signatureType, accountIdx, subaddressIdx) {
-    let resp = await this.rpc.sendJsonRequest("sign", {
-        data: message,
-        signature_type: signatureType === MoneroMessageSignatureType.SIGN_WITH_SPEND_KEY ? "spend" : "view",
-        account_index: accountIdx,
-        address_index: subaddressIdx
-    });
-    return resp.result.signature;
-  }
-  
-  async verifyMessage(message, address, signature) {
-    try {
-      let resp = await this.rpc.sendJsonRequest("verify", {data: message, address: address, signature: signature});
-      let result = new MoneroMessageSignatureResult(
-        resp.result.good,
-        !resp.result.good ? undefined : resp.result.old,
-        !resp.result.good ? undefined : !resp.result.signature_type ? undefined : resp.result.signature_type === "view" ? MoneroMessageSignatureType.SIGN_WITH_VIEW_KEY : MoneroMessageSignatureType.SIGN_WITH_SPEND_KEY,
-        !resp.result.good ? undefined : resp.result.version);
-      return result;
-    } catch (e) {
-      if (e.getCode() === -2) return new MoneroMessageSignatureResult(false);
-      throw e;
-    }
-  }
-  
-  async getTxKey(txHash) {
-    try {
-      return (await this.rpc.sendJsonRequest("get_tx_key", {txid: txHash})).result.tx_key;
-    } catch (e) {
-      if (e instanceof MoneroRpcError && e.getCode() === -8 && e.message.includes("TX ID has invalid format")) e = new MoneroRpcError("TX hash has invalid format", e.getCode(), e.getRpcMethod(), e.getRpcParams());  // normalize error message
-      throw e;
-    }
-  }
-  
-  async checkTxKey(txHash, txKey, address) {
-    try {
-      
-      // send request
-      let resp = await this.rpc.sendJsonRequest("check_tx_key", {txid: txHash, tx_key: txKey, address: address});
-      
-      // interpret result
-      let check = new MoneroCheckTx();
-      check.setIsGood(true);
-      check.setNumConfirmations(resp.result.confirmations);
-      check.setInTxPool(resp.result.in_pool);
-      check.setReceivedAmount(new BigInteger(resp.result.received));
-      return check;
-    } catch (e) {
-      if (e instanceof MoneroRpcError && e.getCode() === -8 && e.message.includes("TX ID has invalid format")) e = new MoneroRpcError("TX hash has invalid format", e.getCode(), e.getRpcMethod(), e.getRpcParams());  // normalize error message
-      throw e;
-    }
-  }
-  
-  async getTxProof(txHash, address, message) {
-    try {
-      let resp = await this.rpc.sendJsonRequest("get_tx_proof", {txid: txHash, address: address, message: message});
-      return resp.result.signature;
-    } catch (e) {
-      if (e instanceof MoneroRpcError && e.getCode() === -8 && e.message.includes("TX ID has invalid format")) e = new MoneroRpcError("TX hash has invalid format", e.getCode(), e.getRpcMethod(), e.getRpcParams());  // normalize error message
-      throw e;
-    }
-  }
-  
-  async checkTxProof(txHash, address, message, signature) {
-    try {
-      
-      // send request
-      let resp = await this.rpc.sendJsonRequest("check_tx_proof", {
-        txid: txHash,
-        address: address,
-        message: message,
-        signature: signature
-      });
-      
-      // interpret response
-      let isGood = resp.result.good;
-      let check = new MoneroCheckTx();
-      check.setIsGood(isGood);
-      if (isGood) {
-        check.setNumConfirmations(resp.result.confirmations);
-        check.setInTxPool(resp.result.in_pool);
-        check.setReceivedAmount(new BigInteger(resp.result.received));
-      }
-      return check;
-    } catch (e) {
-      if (e instanceof MoneroRpcError && e.getCode() === -1 && e.message === "basic_string") e = new MoneroRpcError("Must provide signature to check tx proof", -1);
-      if (e instanceof MoneroRpcError && e.getCode() === -8 && e.message.includes("TX ID has invalid format")) e = new MoneroRpcError("TX hash has invalid format", e.getCode(), e.getRpcMethod(), e.getRpcParams());
-      throw e;
-    }
-  }
-  
-  async getSpendProof(txHash, message) {
-    try {
-      let resp = await this.rpc.sendJsonRequest("get_spend_proof", {txid: txHash, message: message});
-      return resp.result.signature;
-    } catch (e) {
-      if (e instanceof MoneroRpcError && e.getCode() === -8 && e.message.includes("TX ID has invalid format")) e = new MoneroRpcError("TX hash has invalid format", e.getCode(), e.getRpcMethod(), e.getRpcParams());  // normalize error message
-      throw e;
-    }
-  }
-  
-  async checkSpendProof(txHash, message, signature) {
-    try {
-      let resp = await this.rpc.sendJsonRequest("check_spend_proof", {
-        txid: txHash,
-        message: message,
-        signature: signature
-      });
-      return resp.result.good;
-    } catch (e) {
-      if (e instanceof MoneroRpcError && e.getCode() === -8 && e.message.includes("TX ID has invalid format")) e = new MoneroRpcError("TX hash has invalid format", e.getCode(), e.getRpcMethod(), e.getRpcParams());  // normalize error message
-      throw e;
-    }
-  }
-  
-  async getReserveProofWallet(message) {
-    let resp = await this.rpc.sendJsonRequest("get_reserve_proof", {
-      all: true,
-      message: message
-    });
-    return resp.result.signature;
-  }
-  
-  async getReserveProofAccount(accountIdx, amount, message) {
-    let resp = await this.rpc.sendJsonRequest("get_reserve_proof", {
-      account_index: accountIdx,
-      amount: amount.toString(),
-      message: message
-    });
-    return resp.result.signature;
-  }
-
-  async checkReserveProof(address, message, signature) {
-    
-    // send request
-    let resp = await this.rpc.sendJsonRequest("check_reserve_proof", {
-      address: address,
-      message: message,
-      signature: signature
-    });
-    
-    // interpret results
-    let isGood = resp.result.good;
-    let check = new MoneroCheckReserve();
-    check.setIsGood(isGood);
-    if (isGood) {
-      check.setUnconfirmedSpentAmount(new BigInteger(resp.result.spent));
-      check.setTotalAmount(new BigInteger(resp.result.total));
-    }
-    return check;
-  }
-  
-  async getTxNotes(txHashes) {
-    return (await this.rpc.sendJsonRequest("get_tx_notes", {txids: txHashes})).result.notes;
-  }
-  
-  async setTxNotes(txHashes, notes) {
-    await this.rpc.sendJsonRequest("set_tx_notes", {txids: txHashes, notes: notes});
-  }
-  
-  async getAddressBookEntries(entryIndices) {
-    let resp = await this.rpc.sendJsonRequest("get_address_book", {entries: entryIndices});
-    if (!resp.result.entries) return [];
-    let entries = [];
-    for (let rpcEntry of resp.result.entries) {
-      entries.push(new MoneroAddressBookEntry().setIndex(rpcEntry.index).setAddress(rpcEntry.address).setDescription(rpcEntry.description).setPaymentId(rpcEntry.payment_id));
-    }
-    return entries;
-  }
-  
-  async addAddressBookEntry(address, description) {
-    let resp = await this.rpc.sendJsonRequest("add_address_book", {address: address, description: description});
-    return resp.result.index;
-  }
-  
-  async editAddressBookEntry(index, setAddress, address, setDescription, description) {
-    let resp = await this.rpc.sendJsonRequest("edit_address_book", {
-      index: index,
-      set_address: setAddress,
-      address: address,
-      set_description: setDescription,
-      description: description
-    });
-  }
-  
-  async deleteAddressBookEntry(entryIdx) {
-    await this.rpc.sendJsonRequest("delete_address_book", {index: entryIdx});
-  }
-  
-  async tagAccounts(tag, accountIndices) {
-    await this.rpc.sendJsonRequest("tag_accounts", {tag: tag, accounts: accountIndices});
-  }
-
-  async untagAccounts(accountIndices) {
-    await this.rpc.sendJsonRequest("untag_accounts", {accounts: accountIndices});
-  }
-
-  async getAccountTags() {
-    let tags = [];
-    let resp = await this.rpc.sendJsonRequest("get_account_tags");
-    if (resp.result.account_tags) {
-      for (let rpcAccountTag of resp.result.account_tags) {
-        tags.push(new MoneroAccountTag(rpcAccountTag.tag ? rpcAccountTag.tag : undefined, rpcAccountTag.label ? rpcAccountTag.label : undefined, rpcAccountTag.accounts));
-      }
-    }
-    return tags;
-  }
-
-  async setAccountTagLabel(tag, label) {
-    await this.rpc.sendJsonRequest("set_account_tag_description", {tag: tag, description: label});
-  }
-  
-  async getPaymentUri(config) {
-    config = MoneroWallet._normalizeCreateTxsConfig(config);
-    let resp = await this.rpc.sendJsonRequest("make_uri", {
-      address: config.getDestinations()[0].getAddress(),
-      amount: config.getDestinations()[0].getAmount() ? config.getDestinations()[0].getAmount().toString() : undefined,
-      payment_id: config.getPaymentId(),
-      recipient_name: config.getRecipientName(),
-      tx_description: config.getNote()
-    });
-    return resp.result.uri;
-  }
-  
-  async parsePaymentUri(uri) {
-    assert(uri, "Must provide URI to parse");
-    let resp = await this.rpc.sendJsonRequest("parse_uri", {uri: uri});
-    let config = new MoneroTxConfig({address: resp.result.uri.address, amount: new BigInteger(resp.result.uri.amount)});
-    config.setPaymentId(resp.result.uri.payment_id);
-    config.setRecipientName(resp.result.uri.recipient_name);
-    config.setNote(resp.result.uri.tx_description);
-    if ("" === config.getDestinations()[0].getAddress()) config.getDestinations()[0].setAddress(undefined);
-    if ("" === config.getPaymentId()) config.setPaymentId(undefined);
-    if ("" === config.getRecipientName()) config.setRecipientName(undefined);
-    if ("" === config.getNote()) config.setNote(undefined);
-    return config;
-  }
-  
-  async getAttribute(key) {
-    try {
-      let resp = await this.rpc.sendJsonRequest("get_attribute", {key: key});
-      return resp.result.value === "" ? undefined : resp.result.value;
-    } catch (e) {
-      if (e instanceof MoneroRpcError && e.getCode() === -45) return undefined;
-      throw e;
-    }
-  }
-  
-  async setAttribute(key, val) {
-    await this.rpc.sendJsonRequest("set_attribute", {key: key, value: val});
-  }
-  
-  async startMining(numThreads, backgroundMining, ignoreBattery) {
-    await this.rpc.sendJsonRequest("start_mining", {
-      threads_count: numThreads,
-      do_background_mining: backgroundMining,
-      ignore_battery: ignoreBattery
-    });
-  }
-  
-  async stopMining() {
-    await this.rpc.sendJsonRequest("stop_mining");
-  }
-  
-  async isMultisigImportNeeded() {
-    let resp = await this.rpc.sendJsonRequest("get_balance");
-    return resp.result.multisig_import_needed === true;
-  }
-  
-  async getMultisigInfo() {
-    let resp = await this.rpc.sendJsonRequest("is_multisig");
-    let result = resp.result;
-    let info = new MoneroMultisigInfo();
-    info.setIsMultisig(result.multisig);
-    info.setIsReady(result.ready);
-    info.setThreshold(result.threshold);
-    info.setNumParticipants(result.total);
-    return info;
-  }
-  
-  async prepareMultisig() {
-    let resp = await this.rpc.sendJsonRequest("prepare_multisig", {enable_multisig_experimental: true});
-    this.addressCache = {};
-    let result = resp.result;
-    return result.multisig_info;
-  }
-  
-  async makeMultisig(multisigHexes, threshold, password) {
-    let resp = await this.rpc.sendJsonRequest("make_multisig", {
-      multisig_info: multisigHexes,
-      threshold: threshold,
-      password: password
-    });
-    this.addressCache = {};
-    return resp.result.multisig_info;
-  }
-  
-  async exchangeMultisigKeys(multisigHexes, password) {
-    let resp = await this.rpc.sendJsonRequest("exchange_multisig_keys", {multisig_info: multisigHexes, password: password});
-    this.addressCache = {};
-    let msResult = new MoneroMultisigInitResult();
-    msResult.setAddress(resp.result.address);
-    msResult.setMultisigHex(resp.result.multisig_info);
-    if (msResult.getAddress().length === 0) msResult.setAddress(undefined);
-    if (msResult.getMultisigHex().length === 0) msResult.setMultisigHex(undefined);
-    return msResult;
-  }
-  
-  async exportMultisigHex() {
-    let resp = await this.rpc.sendJsonRequest("export_multisig_info");
-    return resp.result.info;
-  }
-
-  async importMultisigHex(multisigHexes) {
-    if (!GenUtils.isArray(multisigHexes)) throw new MoneroError("Must provide string[] to importMultisigHex()")
-    let resp = await this.rpc.sendJsonRequest("import_multisig_info", {info: multisigHexes});
-    return resp.result.n_outputs;
-  }
-
-  async signMultisigTxHex(multisigTxHex) {
-    let resp = await this.rpc.sendJsonRequest("sign_multisig", {tx_data_hex: multisigTxHex});
-    let result = resp.result;
-    let signResult = new MoneroMultisigSignResult();
-    signResult.setSignedMultisigTxHex(result.tx_data_hex);
-    signResult.setTxHashes(result.tx_hash_list);
-    return signResult;
-  }
-
-  async submitMultisigTxHex(signedMultisigTxHex) {
-    let resp = await this.rpc.sendJsonRequest("submit_multisig", {tx_data_hex: signedMultisigTxHex});
-    return resp.result.tx_hash_list;
-  }
-  
-  async changePassword(oldPassword, newPassword) {
-    return this.rpc.sendJsonRequest("change_wallet_password", {old_password: oldPassword || "", new_password: newPassword || ""});
-  }
-  
-  async save() {
-    await this.rpc.sendJsonRequest("store");
-  }
-  
-  async close(save) {
-    await super.close(save);
-    if (save === undefined) save = false;
-    await this._clear();
-    await this.rpc.sendJsonRequest("close_wallet", {autosave_current: save});
-  }
-  
-  async isClosed() {
-    try {
-      await this.getPrimaryAddress();
-    } catch (e) {
-      return e instanceof MoneroRpcError && e.getCode() === -13 && e.message.indexOf("No wallet file") > -1;
-    }
-    return false;
-  }
-  
-  /**
-   * Save and close the current wallet and stop the RPC server.
-   */
-  async stop() {
-    await this._clear();
-    await this.rpc.sendJsonRequest("stop_wallet");
-  }
-  
-  // ----------- ADD JSDOC FOR SUPPORTED DEFAULT IMPLEMENTATIONS --------------
-  
-  async getNumBlocksToUnlock() { return super.getNumBlocksToUnlock(...arguments); }
-  async getTx() { return super.getTx(...arguments); }
-  async getIncomingTransfers() { return super.getIncomingTransfers(...arguments); }
-  async getOutgoingTransfers() { return super.getOutgoingTransfers(...arguments); }
-  async createTx() { return super.createTx(...arguments); }
-  async relayTx() { return super.relayTx(...arguments); }
-  async getTxNote() { return super.getTxNote(...arguments); }
-  async setTxNote() { return super.setTxNote(...arguments); }
-  
-  // -------------------------------- PRIVATE ---------------------------------
-  
-  async _clear() {
-    this.listeners.splice(0, this.listeners.length);
-    this._refreshListening();
-    delete this.addressCache;
-    this.addressCache = {};
-    this.path = undefined;
-  }
-  
-  async _getBalances(accountIdx, subaddressIdx) {
-    if (accountIdx === undefined) {
-      assert.equal(subaddressIdx, undefined, "Must provide account index with subaddress index");
-      let balance = new BigInteger(0);
-      let unlockedBalance = new BigInteger(0);
-      for (let account of await this.getAccounts()) {
-        balance = balance.add(account.getBalance());
-        unlockedBalance = unlockedBalance.add(account.getUnlockedBalance());
-      }
-      return [balance, unlockedBalance];
-    } else {
-      let params = {account_index: accountIdx, address_indices: subaddressIdx === undefined ? undefined : [subaddressIdx]};
-      let resp = await this.rpc.sendJsonRequest("get_balance", params);
-      if (subaddressIdx === undefined) return [new BigInteger(resp.result.balance), new BigInteger(resp.result.unlocked_balance)];
-      else return [new BigInteger(resp.result.per_subaddress[0].balance), new BigInteger(resp.result.per_subaddress[0].unlocked_balance)];
-    }
-  }
-  
-  async _getAccountIndices(getSubaddressIndices) {
-    let indices = new Map();
-    for (let account of await this.getAccounts()) {
-      indices.set(account.getIndex(), getSubaddressIndices ? await this._getSubaddressIndices(account.getIndex()) : undefined);
-    }
-    return indices;
-  }
-  
-  async _getSubaddressIndices(accountIdx) {
-    let subaddressIndices = [];
-    let resp = await this.rpc.sendJsonRequest("get_address", {account_index: accountIdx});
-    for (let address of resp.result.addresses) subaddressIndices.push(address.address_index);
-    return subaddressIndices;
-  }
-  
-  async _getTransfersAux(query) {
-    
-    // build params for get_transfers rpc call
-    let txQuery = query.getTxQuery();
-    let canBeConfirmed = txQuery.isConfirmed() !== false && txQuery.inTxPool() !== true && txQuery.isFailed() !== true && txQuery.isRelayed() !== false;
-    let canBeInTxPool = txQuery.isConfirmed() !== true && txQuery.inTxPool() !== false && txQuery.isFailed() !== true && txQuery.getHeight() === undefined && txQuery.getMaxHeight() === undefined && txQuery.isLocked() !== false;
-    let canBeIncoming = query.isIncoming() !== false && query.isOutgoing() !== true && query.hasDestinations() !== true;
-    let canBeOutgoing = query.isOutgoing() !== false && query.isIncoming() !== true;
-
-    // check if fetching pool txs contradicted by configuration
-    if (txQuery.inTxPool() === true && !canBeInTxPool) {
-      throw new MoneroError("Cannot fetch pool transactions because it contradicts configuration");
-    }
-
-    let params = {};
-    params.in = canBeIncoming && canBeConfirmed;
-    params.out = canBeOutgoing && canBeConfirmed;
-    params.pool = canBeIncoming && canBeInTxPool;
-    params.pending = canBeOutgoing && canBeInTxPool;
-    params.failed = txQuery.isFailed() !== false && txQuery.isConfirmed() !== true && txQuery.inTxPool() != true;
-    if (txQuery.getMinHeight() !== undefined) {
-      if (txQuery.getMinHeight() > 0) params.min_height = txQuery.getMinHeight() - 1; // TODO monero-project: wallet2::get_payments() min_height is exclusive, so manually offset to match intended range (issues #5751, #5598)
-      else params.min_height = txQuery.getMinHeight();
-    }
-    if (txQuery.getMaxHeight() !== undefined) params.max_height = txQuery.getMaxHeight();
-    params.filter_by_height = txQuery.getMinHeight() !== undefined || txQuery.getMaxHeight() !== undefined;
-    if (query.getAccountIndex() === undefined) {
-      assert(query.getSubaddressIndex() === undefined && query.getSubaddressIndices() === undefined, "Query specifies a subaddress index but not an account index");
-      params.all_accounts = true;
-    } else {
-      params.account_index = query.getAccountIndex();
-      
-      // set subaddress indices param
-      let subaddressIndices = new Set();
-      if (query.getSubaddressIndex() !== undefined) subaddressIndices.add(query.getSubaddressIndex());
-      if (query.getSubaddressIndices() !== undefined) query.getSubaddressIndices().map(subaddressIdx => subaddressIndices.add(subaddressIdx));
-      if (subaddressIndices.size) params.subaddr_indices = Array.from(subaddressIndices);
-    }
-    
-    // cache unique txs and blocks
-    let txMap = {};
-    let blockMap = {};
-    
-    // build txs using `get_transfers`
-    let resp = await this.rpc.sendJsonRequest("get_transfers", params);
-    for (let key of Object.keys(resp.result)) {
-      for (let rpcTx of resp.result[key]) {
-        //if (rpcTx.txid === query.debugTxId) console.log(rpcTx);
-        let tx = MoneroWalletRpc._convertRpcTxWithTransfer(rpcTx);
-        if (tx.isConfirmed()) assert(tx.getBlock().getTxs().indexOf(tx) > -1);
-        
-        // replace transfer amount with destination sum
-        // TODO monero-wallet-rpc: confirmed tx from/to same account has amount 0 but cached transfers
-        if (tx.getOutgoingTransfer() !== undefined && tx.isRelayed() && !tx.isFailed() &&
-            tx.getOutgoingTransfer().getDestinations() && tx.getOutgoingAmount().compare(new BigInteger(0)) === 0) {
-          let outgoingTransfer = tx.getOutgoingTransfer();
-          let transferTotal = new BigInteger(0);
-          for (let destination of outgoingTransfer.getDestinations()) transferTotal = transferTotal.add(destination.getAmount());
-          tx.getOutgoingTransfer().setAmount(transferTotal);
-        }
-        
-        // merge tx
-        MoneroWalletRpc._mergeTx(tx, txMap, blockMap);
-      }
-    }
-    
-    // sort txs by block height
-    let txs = Object.values(txMap);
-    txs.sort(MoneroWalletRpc._compareTxsByHeight);
-    
-    // filter and return transfers
-    let transfers = [];
-    for (let tx of txs) {
-      
-      // tx is not incoming/outgoing unless already set
-      if (tx.isIncoming() === undefined) tx.setIsIncoming(false);
-      if (tx.isOutgoing() === undefined) tx.setIsOutgoing(false);
-      
-      // sort incoming transfers
-      if (tx.getIncomingTransfers() !== undefined) tx.getIncomingTransfers().sort(MoneroWalletRpc._compareIncomingTransfers);
-      
-      // collect queried transfers, erase if excluded
-      for (let transfer of tx.filterTransfers(query)) {
-        transfers.push(transfer);
-      }
-      
-      // remove txs without requested transfer
-      if (tx.getBlock() !== undefined && tx.getOutgoingTransfer() === undefined && tx.getIncomingTransfers() === undefined) {
-        tx.getBlock().getTxs().splice(tx.getBlock().getTxs().indexOf(tx), 1);
-      }
-    }
-    
-    return transfers;
-  }
-  
-  async _getOutputsAux(query) {
-    
-    // determine account and subaddress indices to be queried
-    let indices = new Map();
-    if (query.getAccountIndex() !== undefined) {
-      let subaddressIndices = new Set();
-      if (query.getSubaddressIndex() !== undefined) subaddressIndices.add(query.getSubaddressIndex());
-      if (query.getSubaddressIndices() !== undefined) query.getSubaddressIndices().map(subaddressIdx => subaddressIndices.add(subaddressIdx));
-      indices.set(query.getAccountIndex(), subaddressIndices.size ? Array.from(subaddressIndices) : undefined);  // undefined will fetch from all subaddresses
-    } else {
-      assert.equal(query.getSubaddressIndex(), undefined, "Query specifies a subaddress index but not an account index")
-      assert(query.getSubaddressIndices() === undefined || query.getSubaddressIndices().length === 0, "Query specifies subaddress indices but not an account index");
-      indices = await this._getAccountIndices();  // fetch all account indices without subaddresses
-    }
-    
-    // cache unique txs and blocks
-    let txMap = {};
-    let blockMap = {};
-    
-    // collect txs with outputs for each indicated account using `incoming_transfers` rpc call
-    let params = {};
-    params.transfer_type = query.isSpent() === true ? "unavailable" : query.isSpent() === false ? "available" : "all";
-    params.verbose = true;
-    for (let accountIdx of indices.keys()) {
-    
-      // send request
-      params.account_index = accountIdx;
-      params.subaddr_indices = indices.get(accountIdx);
-      let resp = await this.rpc.sendJsonRequest("incoming_transfers", params);
-      
-      // convert response to txs with outputs and merge
-      if (resp.result.transfers === undefined) continue;
-      for (let rpcOutput of resp.result.transfers) {
-        let tx = MoneroWalletRpc._convertRpcTxWalletWithOutput(rpcOutput);
-        MoneroWalletRpc._mergeTx(tx, txMap, blockMap);
-      }
-    }
-    
-    // sort txs by block height
-    let txs = Object.values(txMap);
-    txs.sort(MoneroWalletRpc._compareTxsByHeight);
-    
-    // collect queried outputs
-    let outputs = [];
-    for (let tx of txs) {
-      
-      // sort outputs
-      if (tx.getOutputs() !== undefined) tx.getOutputs().sort(MoneroWalletRpc._compareOutputs);
-      
-      // collect queried outputs, erase if excluded
-      for (let output of tx.filterOutputs(query)) outputs.push(output);
-      
-      // remove excluded txs from block
-      if (tx.getOutputs() === undefined && tx.getBlock() !== undefined) {
-        tx.getBlock().getTxs().splice(tx.getBlock().getTxs().indexOf(tx), 1);
-      }
-    }
-    return outputs;
-  }
-  
-  /**
-   * Common method to get key images.
-   * 
-   * @param all - pecifies to get all xor only new images from last import
-   * @return {MoneroKeyImage[]} are the key images
-   */
-  async _rpcExportKeyImages(all) {
-    let resp = await this.rpc.sendJsonRequest("export_key_images", {all: all});
-    if (!resp.result.signed_key_images) return [];
-    return resp.result.signed_key_images.map(rpcImage => new MoneroKeyImage(rpcImage.key_image, rpcImage.signature));
-  }
-  
-  async _rpcSweepAccount(config) {
-    
-    // validate config
-    if (config === undefined) throw new MoneroError("Must provide sweep config");
-    if (config.getAccountIndex() === undefined) throw new MoneroError("Must provide an account index to sweep from");
-    if (config.getDestinations() === undefined || config.getDestinations().length != 1) throw new MoneroError("Must provide exactly one destination to sweep to");
-    if (config.getDestinations()[0].getAddress() === undefined) throw new MoneroError("Must provide destination address to sweep to");
-    if (config.getDestinations()[0].getAmount() !== undefined) throw new MoneroError("Cannot specify amount in sweep config");
-    if (config.getKeyImage() !== undefined) throw new MoneroError("Key image defined; use sweepOutput() to sweep an output by its key image");
-    if (config.getSubaddressIndices() !== undefined && config.getSubaddressIndices().length === 0) throw new MoneroError("Empty list given for subaddresses indices to sweep");
-    if (config.getSweepEachSubaddress()) throw new MoneroError("Cannot sweep each subaddress with RPC `sweep_all`");
-    if (config.getSubtractFeeFrom() !== undefined && config.getSubtractFeeFrom().length > 0) throw new MoneroError("Sweeping output does not support subtracting fees from destinations");
-    
-    // sweep from all subaddresses if not otherwise defined
-    if (config.getSubaddressIndices() === undefined) {
-      config.setSubaddressIndices([]);
-      for (let subaddress of await this.getSubaddresses(config.getAccountIndex())) {
-        config.getSubaddressIndices().push(subaddress.getIndex());
-      }
-    }
-    if (config.getSubaddressIndices().length === 0) throw new MoneroError("No subaddresses to sweep from");
-    
-    // common config params
-    let params = {};
-    let relay = config.getRelay() === true;
-    params.account_index = config.getAccountIndex();
-    params.subaddr_indices = config.getSubaddressIndices();
-    params.address = config.getDestinations()[0].getAddress();
-    assert(config.getPriority() === undefined || config.getPriority() >= 0 && config.getPriority() <= 3);
-    params.priority = config.getPriority();
-    if (config.getUnlockTime() !== undefined) params.unlock_time = config.getUnlockTime();
-    params.payment_id = config.getPaymentId();
-    params.do_not_relay = !relay;
-    params.below_amount = config.getBelowAmount();
-    params.get_tx_keys = true;
-    params.get_tx_hex = true;
-    params.get_tx_metadata = true;
-    
-    // invoke wallet rpc `sweep_all`
-    let resp = await this.rpc.sendJsonRequest("sweep_all", params);
-    let result = resp.result;
-    
-    // initialize txs from response
-    let txSet = MoneroWalletRpc._convertRpcSentTxsToTxSet(result, undefined, config);
-    
-    // initialize remaining known fields
-    for (let tx of txSet.getTxs()) {
-      tx.setIsLocked(true);
-      tx.setIsConfirmed(false);
-      tx.setNumConfirmations(0);
-      tx.setRelay(relay);
-      tx.setInTxPool(relay);
-      tx.setIsRelayed(relay);
-      tx.setIsMinerTx(false);
-      tx.setIsFailed(false);
-      tx.setRingSize(MoneroUtils.RING_SIZE);
-      let transfer = tx.getOutgoingTransfer();
-      transfer.setAccountIndex(config.getAccountIndex());
-      if (config.getSubaddressIndices().length === 1) transfer.setSubaddressIndices(config.getSubaddressIndices());
-      let destination = new MoneroDestination(config.getDestinations()[0].getAddress(), new BigInteger(transfer.getAmount()));
-      transfer.setDestinations([destination]);
-      tx.setOutgoingTransfer(transfer);
-      tx.setPaymentId(config.getPaymentId());
-      if (tx.getUnlockTime() === undefined) tx.setUnlockTime(config.getUnlockTime() === undefined ? 0 : config.getUnlockTime());
-      if (tx.getRelay()) {
-        if (tx.getLastRelayedTimestamp() === undefined) tx.setLastRelayedTimestamp(+new Date().getTime());  // TODO (monero-wallet-rpc): provide timestamp on response; unconfirmed timestamps vary
-        if (tx.isDoubleSpendSeen() === undefined) tx.setIsDoubleSpend(false);
-      }
-    }
-    return txSet.getTxs();
-  }
-  
-  _refreshListening() {
-    if (this.walletPoller == undefined && this.listeners.length) this.walletPoller = new WalletPoller(this);
-    if (this.walletPoller !== undefined) this.walletPoller.setIsPolling(this.listeners.length > 0);
-  }
-  
-  /**
-   * Poll if listening.
-   */
-  async _poll() {
-    if (this.walletPoller !== undefined && this.walletPoller._isPolling) await this.walletPoller.poll();
-  }
-  
-  // ---------------------------- PRIVATE STATIC ------------------------------
-  
-  static _normalizeConfig(uriOrConfigOrConnection, username, password, rejectUnauthorized) {
-    let config;
-    if (typeof uriOrConfigOrConnection === "string") config = {uri: uriOrConfigOrConnection, username: username, password: password, rejectUnauthorized: rejectUnauthorized};
-    else {
-      if (typeof uriOrConfigOrConnection !== "object") throw new MoneroError("Invalid configuration to create rpc client; must be string, object, or MoneroRpcConnection");
-      if (username || password || rejectUnauthorized) throw new MoneroError("Can provide config object or params or new MoneroDaemonRpc(...) but not both");
-      if (uriOrConfigOrConnection instanceof MoneroRpcConnection) config = Object.assign({}, uriOrConfigOrConnection.getConfig());
-      else config = Object.assign({}, uriOrConfigOrConnection);
-    }
-    if (config.server) {
-      config = Object.assign(config, new MoneroRpcConnection(config.server).getConfig());
-      delete config.server;
-    }
-    return config;
-  }
-  
-  /**
-   * Remove criteria which requires looking up other transfers/outputs to
-   * fulfill query.
-   * 
-   * @param {MoneroTxQuery} query - the query to decontextualize
-   * @return {MoneroTxQuery} a reference to the query for convenience
-   */
-  static _decontextualize(query) {
-    query.setIsIncoming(undefined);
-    query.setIsOutgoing(undefined);
-    query.setTransferQuery(undefined);
-    query.setInputQuery(undefined);
-    query.setOutputQuery(undefined);
-    return query;
-  }
-  
-  static _isContextual(query) {
-    if (!query) return false;
-    if (!query.getTxQuery()) return false;
-    if (query.getTxQuery().isIncoming() !== undefined) return true; // requires getting other transfers
-    if (query.getTxQuery().isOutgoing() !== undefined) return true;
-    if (query instanceof MoneroTransferQuery) {
-      if (query.getTxQuery().getOutputQuery() !== undefined) return true; // requires getting other outputs
-    } else if (query instanceof MoneroOutputQuery) {
-      if (query.getTxQuery().getTransferQuery() !== undefined) return true; // requires getting other transfers
-    } else {
-      throw new MoneroError("query must be tx or transfer query");
-    }
-    return false;
-  }
-  
-  static _convertRpcAccount(rpcAccount) {
-    let account = new MoneroAccount();
-    for (let key of Object.keys(rpcAccount)) {
-      let val = rpcAccount[key];
-      if (key === "account_index") account.setIndex(val);
-      else if (key === "balance") account.setBalance(new BigInteger(val));
-      else if (key === "unlocked_balance") account.setUnlockedBalance(new BigInteger(val));
-      else if (key === "base_address") account.setPrimaryAddress(val);
-      else if (key === "tag") account.setTag(val);
-      else if (key === "label") { } // label belongs to first subaddress
-      else console.log("WARNING: ignoring unexpected account field: " + key + ": " + val);
-    }
-    if ("" === account.getTag()) account.setTag(undefined);
-    return account;
-  }
-  
-  static _convertRpcSubaddress(rpcSubaddress) {
-    let subaddress = new MoneroSubaddress();
-    for (let key of Object.keys(rpcSubaddress)) {
-      let val = rpcSubaddress[key];
-      if (key === "account_index") subaddress.setAccountIndex(val);
-      else if (key === "address_index") subaddress.setIndex(val);
-      else if (key === "address") subaddress.setAddress(val);
-      else if (key === "balance") subaddress.setBalance(new BigInteger(val));
-      else if (key === "unlocked_balance") subaddress.setUnlockedBalance(new BigInteger(val));
-      else if (key === "num_unspent_outputs") subaddress.setNumUnspentOutputs(val);
-      else if (key === "label") { if (val) subaddress.setLabel(val); }
-      else if (key === "used") subaddress.setIsUsed(val);
-      else if (key === "blocks_to_unlock") subaddress.setNumBlocksToUnlock(val);
-      else if (key == "time_to_unlock") {}  // ignoring
-      else console.log("WARNING: ignoring unexpected subaddress field: " + key + ": " + val);
-    }
-    return subaddress;
-  }
-  
-  /**
-   * Initializes a sent transaction.
-   * 
-   * TODO: remove copyDestinations after >18.2.2 when subtractFeeFrom fully supported
-   * 
-   * @param {MoneroTxConfig} config - send config
-   * @param {MoneroTxWallet} tx - existing transaction to initialize (optional)
-   * @param {boolean} copyDestinations - copies config destinations if true
-   * @return {MoneroTxWallet} is the initialized send tx
-   */
-  static _initSentTxWallet(config, tx, copyDestinations) {
-    if (!tx) tx = new MoneroTxWallet();
-    let relay = config.getRelay() === true;
-    tx.setIsOutgoing(true);
-    tx.setIsConfirmed(false);
-    tx.setNumConfirmations(0);
-    tx.setInTxPool(relay);
-    tx.setRelay(relay);
-    tx.setIsRelayed(relay);
-    tx.setIsMinerTx(false);
-    tx.setIsFailed(false);
-    tx.setIsLocked(true);
-    tx.setRingSize(MoneroUtils.RING_SIZE);
-    let transfer = new MoneroOutgoingTransfer().setTx(tx);
-    if (config.getSubaddressIndices() && config.getSubaddressIndices().length === 1) transfer.setSubaddressIndices(config.getSubaddressIndices().slice(0)); // we know src subaddress indices iff config specifies 1
-    if (copyDestinations) {
-      let destCopies = [];
-      for (let dest of config.getDestinations()) destCopies.push(dest.copy());
-      transfer.setDestinations(destCopies);
-    }
-    tx.setOutgoingTransfer(transfer);
-    tx.setPaymentId(config.getPaymentId());
-    if (tx.getUnlockTime() === undefined) tx.setUnlockTime(config.getUnlockTime() === undefined ? 0 : config.getUnlockTime());
-    if (config.getRelay()) {
-      if (tx.getLastRelayedTimestamp() === undefined) tx.setLastRelayedTimestamp(+new Date().getTime());  // TODO (monero-wallet-rpc): provide timestamp on response; unconfirmed timestamps vary
-      if (tx.isDoubleSpendSeen() === undefined) tx.setIsDoubleSpend(false);
-    }
-    return tx;
-  }
-  
-  /**
-   * Initializes a tx set from a RPC map excluding txs.
-   * 
-   * @param rpcMap - map to initialize the tx set from
-   * @return MoneroTxSet - initialized tx set
-   * @return the resulting tx set
-   */
-  static _convertRpcTxSet(rpcMap) {
-    let txSet = new MoneroTxSet();
-    txSet.setMultisigTxHex(rpcMap.multisig_txset);
-    txSet.setUnsignedTxHex(rpcMap.unsigned_txset);
-    txSet.setSignedTxHex(rpcMap.signed_txset);
-    if (txSet.getMultisigTxHex() !== undefined && txSet.getMultisigTxHex().length === 0) txSet.setMultisigTxHex(undefined);
-    if (txSet.getUnsignedTxHex() !== undefined && txSet.getUnsignedTxHex().length === 0) txSet.setUnsignedTxHex(undefined);
-    if (txSet.getSignedTxHex() !== undefined && txSet.getSignedTxHex().length === 0) txSet.setSignedTxHex(undefined);
-    return txSet;
-  }
-  
-  /**
-   * Initializes a MoneroTxSet from a list of rpc txs.
-   * 
-   * @param rpcTxs - rpc txs to initialize the set from
-   * @param txs - existing txs to further initialize (optional)
-   * @param config - tx config
-   * @return the converted tx set
-   */
-  static _convertRpcSentTxsToTxSet(rpcTxs, txs, config) {
-    
-    // build shared tx set
-    let txSet = MoneroWalletRpc._convertRpcTxSet(rpcTxs);
-    
-    // get number of txs
-    let numTxs = rpcTxs.fee_list ? rpcTxs.fee_list.length : 0;
-    
-    // done if rpc response contains no txs
-    if (numTxs === 0) {
-      assert.equal(txs, undefined);
-      return txSet;
-    }
-    
-    // pre-initialize txs if none given
-    if (txs) txSet.setTxs(txs);
-    else {
-      txs = [];
-      for (let i = 0; i < numTxs; i++) txs.push(new MoneroTxWallet());
-    }
-    for (let tx of txs) {
-      tx.setTxSet(txSet);
-      tx.setIsOutgoing(true);
-    }
-    txSet.setTxs(txs);
-    
-    // initialize txs from rpc lists
-    for (let key of Object.keys(rpcTxs)) {
-      let val = rpcTxs[key];
-      if (key === "tx_hash_list") for (let i = 0; i < val.length; i++) txs[i].setHash(val[i]);
-      else if (key === "tx_key_list") for (let i = 0; i < val.length; i++) txs[i].setKey(val[i]);
-      else if (key === "tx_blob_list") for (let i = 0; i < val.length; i++) txs[i].setFullHex(val[i]);
-      else if (key === "tx_metadata_list") for (let i = 0; i < val.length; i++) txs[i].setMetadata(val[i]);
-      else if (key === "fee_list") for (let i = 0; i < val.length; i++) txs[i].setFee(new BigInteger(val[i]));
-      else if (key === "weight_list") for (let i = 0; i < val.length; i++) txs[i].setWeight(val[i]);
-      else if (key === "amount_list") {
-        for (let i = 0; i < val.length; i++) {
-          if (txs[i].getOutgoingTransfer() == undefined) txs[i].setOutgoingTransfer(new MoneroOutgoingTransfer().setTx(txs[i]));
-          txs[i].getOutgoingTransfer().setAmount(new BigInteger(val[i]));
-        }
-      }
-      else if (key === "multisig_txset" || key === "unsigned_txset" || key === "signed_txset") {} // handled elsewhere
-      else if (key === "spent_key_images_list") {
-        let inputKeyImagesList = val;
-        for (let i = 0; i < inputKeyImagesList.length; i++) {
-          GenUtils.assertTrue(txs[i].getInputs() === undefined);
-          txs[i].setInputs([]);
-          for (let inputKeyImage of inputKeyImagesList[i]["key_images"]) {
-            txs[i].getInputs().push(new MoneroOutputWallet().setKeyImage(new MoneroKeyImage().setHex(inputKeyImage)).setTx(txs[i]));
-          }
-        }
-      }
-      else if (key === "amounts_by_dest_list") {
-        let amountsByDestList = val;
-        let destinationIdx = 0;
-        for (let txIdx = 0; txIdx < amountsByDestList.length; txIdx++) {
-          let amountsByDest = amountsByDestList[txIdx]["amounts"];
-          if (txs[txIdx].getOutgoingTransfer() === undefined) txs[txIdx].setOutgoingTransfer(new MoneroOutgoingTransfer().setTx(txs[txIdx]));
-          txs[txIdx].getOutgoingTransfer().setDestinations([]);
-          for (let amount of amountsByDest) {
-            if (config.getDestinations().length === 1) txs[txIdx].getOutgoingTransfer().getDestinations().push(new MoneroDestination(config.getDestinations()[0].getAddress(), new BigInteger(amount))); // sweeping can create multiple txs with one address
-            else txs[txIdx].getOutgoingTransfer().getDestinations().push(new MoneroDestination(config.getDestinations()[destinationIdx++].getAddress(), new BigInteger(amount)));
-          }
-        }
-      }
-      else console.log("WARNING: ignoring unexpected transaction field: " + key + ": " + val);
-    }
-    
-    return txSet;
-  }
-  
-  /**
-   * Converts a rpc tx with a transfer to a tx set with a tx and transfer.
-   * 
-   * @param rpcTx - rpc tx to build from
-   * @param tx - existing tx to continue initializing (optional)
-   * @param isOutgoing - specifies if the tx is outgoing if true, incoming if false, or decodes from type if undefined
-   * @param config - tx config
-   * @returns the initialized tx set with a tx
-   */
-  static _convertRpcTxToTxSet(rpcTx, tx, isOutgoing, config) {
-    let txSet = MoneroWalletRpc._convertRpcTxSet(rpcTx);
-    txSet.setTxs([MoneroWalletRpc._convertRpcTxWithTransfer(rpcTx, tx, isOutgoing, config).setTxSet(txSet)]);
-    return txSet;
-  }
-  
-  /**
-   * Builds a MoneroTxWallet from a RPC tx.
-   * 
-   * @param rpcTx - rpc tx to build from
-   * @param tx - existing tx to continue initializing (optional)
-   * @param isOutgoing - specifies if the tx is outgoing if true, incoming if false, or decodes from type if undefined
-   * @param config - tx config
-   * @returns {MoneroTxWallet} is the initialized tx
-   */
-  static _convertRpcTxWithTransfer(rpcTx, tx, isOutgoing, config) {  // TODO: change everything to safe set
-        
-    // initialize tx to return
-    if (!tx) tx = new MoneroTxWallet();
-    
-    // initialize tx state from rpc type
-    if (rpcTx.type !== undefined) isOutgoing = MoneroWalletRpc._decodeRpcType(rpcTx.type, tx);
-    else assert.equal(typeof isOutgoing, "boolean", "Must indicate if tx is outgoing (true) xor incoming (false) since unknown");
-    
-    // TODO: safe set
-    // initialize remaining fields  TODO: seems this should be part of common function with DaemonRpc._convertRpcTx
-    let header;
-    let transfer;
-    for (let key of Object.keys(rpcTx)) {
-      let val = rpcTx[key];
-      if (key === "txid") tx.setHash(val);
-      else if (key === "tx_hash") tx.setHash(val);
-      else if (key === "fee") tx.setFee(new BigInteger(val));
-      else if (key === "note") { if (val) tx.setNote(val); }
-      else if (key === "tx_key") tx.setKey(val);
-      else if (key === "type") { } // type already handled
-      else if (key === "tx_size") tx.setSize(val);
-      else if (key === "unlock_time") tx.setUnlockTime(val);
-      else if (key === "weight") tx.setWeight(val);
-      else if (key === "locked") tx.setIsLocked(val);
-      else if (key === "tx_blob") tx.setFullHex(val);
-      else if (key === "tx_metadata") tx.setMetadata(val);
-      else if (key === "double_spend_seen") tx.setIsDoubleSpend(val);
-      else if (key === "block_height" || key === "height") {
-        if (tx.isConfirmed()) {
-          if (!header) header = new MoneroBlockHeader();
-          header.setHeight(val);
-        }
-      }
-      else if (key === "timestamp") {
-        if (tx.isConfirmed()) {
-          if (!header) header = new MoneroBlockHeader();
-          header.setTimestamp(val);
-        } else {
-          // timestamp of unconfirmed tx is current request time
-        }
-      }
-      else if (key === "confirmations") tx.setNumConfirmations(val);
-      else if (key === "suggested_confirmations_threshold") {
-        if (transfer === undefined) transfer = (isOutgoing ? new MoneroOutgoingTransfer() : new MoneroIncomingTransfer()).setTx(tx);
-        if (!isOutgoing) transfer.setNumSuggestedConfirmations(val);
-      }
-      else if (key === "amount") {
-        if (transfer === undefined) transfer = (isOutgoing ? new MoneroOutgoingTransfer() : new MoneroIncomingTransfer()).setTx(tx);
-        transfer.setAmount(new BigInteger(val));
-      }
-      else if (key === "amounts") {}  // ignoring, amounts sum to amount
-      else if (key === "address") {
-        if (!isOutgoing) {
-          if (!transfer) transfer = new MoneroIncomingTransfer().setTx(tx);
-          transfer.setAddress(val);
-        }
-      }
-      else if (key === "payment_id") {
-        if ("" !== val && MoneroTxWallet.DEFAULT_PAYMENT_ID !== val) tx.setPaymentId(val);  // default is undefined
-      }
-      else if (key === "subaddr_index") assert(rpcTx.subaddr_indices);  // handled by subaddr_indices
-      else if (key === "subaddr_indices") {
-        if (!transfer) transfer = (isOutgoing ? new MoneroOutgoingTransfer() : new MoneroIncomingTransfer()).setTx(tx);
-        let rpcIndices = val;
-        transfer.setAccountIndex(rpcIndices[0].major);
-        if (isOutgoing) {
-          let subaddressIndices = [];
-          for (let rpcIndex of rpcIndices) subaddressIndices.push(rpcIndex.minor);
-          transfer.setSubaddressIndices(subaddressIndices);
-        } else {
-          assert.equal(rpcIndices.length, 1);
-          transfer.setSubaddressIndex(rpcIndices[0].minor);
-        }
-      }
-      else if (key === "destinations" || key == "recipients") {
-        assert(isOutgoing);
-        let destinations = [];
-        for (let rpcDestination of val) {
-          let destination = new MoneroDestination();
-          destinations.push(destination);
-          for (let destinationKey of Object.keys(rpcDestination)) {
-            if (destinationKey === "address") destination.setAddress(rpcDestination[destinationKey]);
-            else if (destinationKey === "amount") destination.setAmount(new BigInteger(rpcDestination[destinationKey]));
-            else throw new MoneroError("Unrecognized transaction destination field: " + destinationKey);
-          }
-        }
-        if (transfer === undefined) transfer = new MoneroOutgoingTransfer({tx: tx});
-        transfer.setDestinations(destinations);
-      }
-      else if (key === "multisig_txset" && val !== undefined) {} // handled elsewhere; this method only builds a tx wallet
-      else if (key === "unsigned_txset" && val !== undefined) {} // handled elsewhere; this method only builds a tx wallet
-      else if (key === "amount_in") tx.setInputSum(new BigInteger(val));
-      else if (key === "amount_out") tx.setOutputSum(new BigInteger(val));
-      else if (key === "change_address") tx.setChangeAddress(val === "" ? undefined : val);
-      else if (key === "change_amount") tx.setChangeAmount(new BigInteger(val));
-      else if (key === "dummy_outputs") tx.setNumDummyOutputs(val);
-      else if (key === "extra") tx.setExtraHex(val);
-      else if (key === "ring_size") tx.setRingSize(val);
-      else if (key === "spent_key_images") {
-        let inputKeyImages = val.key_images;
-        GenUtils.assertTrue(tx.getInputs() === undefined);
-        tx.setInputs([]);
-        for (let inputKeyImage of inputKeyImages) {
-          tx.getInputs().push(new MoneroOutputWallet().setKeyImage(new MoneroKeyImage().setHex(inputKeyImage)).setTx(tx));
-        }
-      }
-      else if (key === "amounts_by_dest") {
-        GenUtils.assertTrue(isOutgoing);
-        let amountsByDest = val.amounts;
-        assert.equal(config.getDestinations().length, amountsByDest.length);
-        if (transfer === undefined) transfer = new MoneroOutgoingTransfer().setTx(tx);
-        transfer.setDestinations([]);
-        for (let i = 0; i < config.getDestinations().length; i++) {
-          transfer.getDestinations().push(new MoneroDestination(config.getDestinations()[i].getAddress(), new BigInteger(amountsByDest[i])));
-        }
-      }
-      else console.log("WARNING: ignoring unexpected transaction field with transfer: " + key + ": " + val);
-    }
-    
-    // link block and tx
-    if (header) tx.setBlock(new MoneroBlock(header).setTxs([tx]));
-    
-    // initialize final fields
-    if (transfer) {
-      if (tx.isConfirmed() === undefined) tx.setIsConfirmed(false);
-      if (!transfer.getTx().isConfirmed()) tx.setNumConfirmations(0);
-      if (isOutgoing) {
-        tx.setIsOutgoing(true);
-        if (tx.getOutgoingTransfer()) {
-          if (transfer.getDestinations()) tx.getOutgoingTransfer().setDestinations(undefined); // overwrite to avoid reconcile error TODO: remove after >18.2.2 when amounts_by_dest supported
-          tx.getOutgoingTransfer().merge(transfer);
-        }
-        else tx.setOutgoingTransfer(transfer);
-      } else {
-        tx.setIsIncoming(true);
-        tx.setIncomingTransfers([transfer]);
-      }
-    }
-    
-    // return initialized transaction
-    return tx;
-  }
-  
-  static _convertRpcTxWalletWithOutput(rpcOutput) {
-    
-    // initialize tx
-    let tx = new MoneroTxWallet();
-    tx.setIsConfirmed(true);
-    tx.setIsRelayed(true);
-    tx.setIsFailed(false);
-    
-    // initialize output
-    let output = new MoneroOutputWallet({tx: tx});
-    for (let key of Object.keys(rpcOutput)) {
-      let val = rpcOutput[key];
-      if (key === "amount") output.setAmount(new BigInteger(val));
-      else if (key === "spent") output.setIsSpent(val);
-      else if (key === "key_image") { if ("" !== val) output.setKeyImage(new MoneroKeyImage(val)); }
-      else if (key === "global_index") output.setIndex(val);
-      else if (key === "tx_hash") tx.setHash(val);
-      else if (key === "unlocked") tx.setIsLocked(!val);
-      else if (key === "frozen") output.setIsFrozen(val);
-      else if (key === "pubkey") output.setStealthPublicKey(val);
-      else if (key === "subaddr_index") {
-        output.setAccountIndex(val.major);
-        output.setSubaddressIndex(val.minor);
-      }
-      else if (key === "block_height") tx.setBlock(new MoneroBlock().setHeight(val).setTxs([tx]));
-      else console.log("WARNING: ignoring unexpected transaction field: " + key + ": " + val);
-    }
-    
-    // initialize tx with output
-    tx.setOutputs([output]);
-    return tx;
-  }
-  
-  static _convertRpcDescribeTransfer(rpcDescribeTransferResult) {
-    let txSet = new MoneroTxSet();
-    for (let key of Object.keys(rpcDescribeTransferResult)) {
-      let val = rpcDescribeTransferResult[key];
-      if (key === "desc") {
-        txSet.setTxs([]);
-        for (let txMap of val) {
-          let tx = MoneroWalletRpc._convertRpcTxWithTransfer(txMap, undefined, true);
-          tx.setTxSet(txSet);
-          txSet.getTxs().push(tx);
-        }
-      }
-      else if (key === "summary") { } // TODO: support tx set summary fields?
-      else console.log("WARNING: ignoring unexpected descdribe transfer field: " + key + ": " + val);
-    }
-    return txSet;
-  }
-  
-  /**
-   * Decodes a "type" from monero-wallet-rpc to initialize type and state
-   * fields in the given transaction.
-   * 
-   * TODO: these should be safe set
-   * 
-   * @param rpcType is the type to decode
-   * @param tx is the transaction to decode known fields to
-   * @return {boolean} true if the rpc type indicates outgoing xor incoming
-   */
-  static _decodeRpcType(rpcType, tx) {
-    let isOutgoing;
-    if (rpcType === "in") {
-      isOutgoing = false;
-      tx.setIsConfirmed(true);
-      tx.setInTxPool(false);
-      tx.setIsRelayed(true);
-      tx.setRelay(true);
-      tx.setIsFailed(false);
-      tx.setIsMinerTx(false);
-    } else if (rpcType === "out") {
-      isOutgoing = true;
-      tx.setIsConfirmed(true);
-      tx.setInTxPool(false);
-      tx.setIsRelayed(true);
-      tx.setRelay(true);
-      tx.setIsFailed(false);
-      tx.setIsMinerTx(false);
-    } else if (rpcType === "pool") {
-      isOutgoing = false;
-      tx.setIsConfirmed(false);
-      tx.setInTxPool(true);
-      tx.setIsRelayed(true);
-      tx.setRelay(true);
-      tx.setIsFailed(false);
-      tx.setIsMinerTx(false);  // TODO: but could it be?
-    } else if (rpcType === "pending") {
-      isOutgoing = true;
-      tx.setIsConfirmed(false);
-      tx.setInTxPool(true);
-      tx.setIsRelayed(true);
-      tx.setRelay(true);
-      tx.setIsFailed(false);
-      tx.setIsMinerTx(false);
-    } else if (rpcType === "block") {
-      isOutgoing = false;
-      tx.setIsConfirmed(true);
-      tx.setInTxPool(false);
-      tx.setIsRelayed(true);
-      tx.setRelay(true);
-      tx.setIsFailed(false);
-      tx.setIsMinerTx(true);
-    } else if (rpcType === "failed") {
-      isOutgoing = true;
-      tx.setIsConfirmed(false);
-      tx.setInTxPool(false);
-      tx.setIsRelayed(true);
-      tx.setRelay(true);
-      tx.setIsFailed(true);
-      tx.setIsMinerTx(false);
-    } else {
-      throw new MoneroError("Unrecognized transfer type: " + rpcType);
-    }
-    return isOutgoing;
-  }
-  
-  /**
-   * Merges a transaction into a unique set of transactions.
-   *
-   * @param {MoneroTxWallet} tx - the transaction to merge into the existing txs
-   * @param {Object} txMap - maps tx hashes to txs
-   * @param {Object} blockMap - maps block heights to blocks
-   */
-  static _mergeTx(tx, txMap, blockMap) {
-    assert(tx.getHash() !== undefined);
-    
-    // merge tx
-    let aTx = txMap[tx.getHash()];
-    if (aTx === undefined) txMap[tx.getHash()] = tx; // cache new tx
-    else aTx.merge(tx); // merge with existing tx
-    
-    // merge tx's block if confirmed
-    if (tx.getHeight() !== undefined) {
-      let aBlock = blockMap[tx.getHeight()];
-      if (aBlock === undefined) blockMap[tx.getHeight()] = tx.getBlock(); // cache new block
-      else aBlock.merge(tx.getBlock()); // merge with existing block
-    }
-  }
-  
-  /**
-   * Compares two transactions by their height.
-   */
-  static _compareTxsByHeight(tx1, tx2) {
-    if (tx1.getHeight() === undefined && tx2.getHeight() === undefined) return 0; // both unconfirmed
-    else if (tx1.getHeight() === undefined) return 1;   // tx1 is unconfirmed
-    else if (tx2.getHeight() === undefined) return -1;  // tx2 is unconfirmed
-    let diff = tx1.getHeight() - tx2.getHeight();
-    if (diff !== 0) return diff;
-    return tx1.getBlock().getTxs().indexOf(tx1) - tx2.getBlock().getTxs().indexOf(tx2); // txs are in the same block so retain their original order
-  }
-  
-  /**
-   * Compares two transfers by ascending account and subaddress indices.
-   */
-  static _compareIncomingTransfers(t1, t2) {
-    if (t1.getAccountIndex() < t2.getAccountIndex()) return -1;
-    else if (t1.getAccountIndex() === t2.getAccountIndex()) return t1.getSubaddressIndex() - t2.getSubaddressIndex();
-    return 1;
-  }
-  
-  /**
-   * Compares two outputs by ascending account and subaddress indices.
-   */
-  static _compareOutputs(o1, o2) {
-    
-    // compare by height
-    let heightComparison = MoneroWalletRpc._compareTxsByHeight(o1.getTx(), o2.getTx());
-    if (heightComparison !== 0) return heightComparison;
-    
-    // compare by account index, subaddress index, output index, then key image hex
-    let compare = o1.getAccountIndex() - o2.getAccountIndex();
-    if (compare !== 0) return compare;
-    compare = o1.getSubaddressIndex() - o2.getSubaddressIndex();
-    if (compare !== 0) return compare;
-    compare = o1.getIndex() - o2.getIndex();
-    if (compare !== 0) return compare;
-    return o1.getKeyImage().getHex().localeCompare(o2.getKeyImage().getHex());
-  }
-}
-
-/**
- * Polls monero-wallet-rpc to provide listener notifications.
- * 
- * @class
- * @ignore
- */
-class WalletPoller {
-  
-  constructor(wallet) {
-    let that = this;
-    this._wallet = wallet;
-    this._looper = new TaskLooper(async function() { await that.poll(); });
-    this._prevLockedTxs = [];
-    this._prevUnconfirmedNotifications = new Set(); // tx hashes of previous notifications
-    this._prevConfirmedNotifications = new Set(); // tx hashes of previously confirmed but not yet unlocked notifications
-    this._threadPool = new ThreadPool(1); // synchronize polls
-    this._numPolling = 0;
-  }
-  
-  setIsPolling(isPolling) {
-    this._isPolling = isPolling;
-    if (isPolling) this._looper.start(this._wallet.syncPeriodInMs);
-    else this._looper.stop();
-  }
-  
-  setPeriodInMs(periodInMs) {
-    this._looper.setPeriodInMs(periodInMs);
-  }
-  
-  async poll() {
-
-    // skip if next poll is queued
-    if (this._numPolling > 1) return;
-    this._numPolling++;
-    
-    // synchronize polls
-    let that = this;
-    return this._threadPool.submit(async function() {
-      try {
-        
-        // skip if wallet is closed
-        if (await that._wallet.isClosed()) {
-          that._numPolling--;
-          return;
-        }
-        
-        // take initial snapshot
-        if (that._prevHeight === undefined) {
-          that._prevHeight = await that._wallet.getHeight();
-          that._prevLockedTxs = await that._wallet.getTxs(new MoneroTxQuery().setIsLocked(true));
-          that._prevBalances = await that._wallet._getBalances();
-          that._numPolling--;
-          return;
-        }
-        
-        // announce height changes
-        let height = await that._wallet.getHeight();
-        if (that._prevHeight !== height) {
-          for (let i = that._prevHeight; i < height; i++) await that._onNewBlock(i);
-          that._prevHeight = height;
-        }
-        
-        // get locked txs for comparison to previous
-        let minHeight = Math.max(0, height - 70); // only monitor recent txs
-        let lockedTxs = await that._wallet.getTxs(new MoneroTxQuery().setIsLocked(true).setMinHeight(minHeight).setIncludeOutputs(true));
-        
-        // collect hashes of txs no longer locked
-        let noLongerLockedHashes = [];
-        for (let prevLockedTx of that._prevLockedTxs) {
-          if (that._getTx(lockedTxs, prevLockedTx.getHash()) === undefined) {
-            noLongerLockedHashes.push(prevLockedTx.getHash());
-          }
-        }
-        
-        // save locked txs for next comparison
-        that._prevLockedTxs = lockedTxs;
-        
-        // fetch txs which are no longer locked
-        let unlockedTxs = noLongerLockedHashes.length === 0 ? [] : await that._wallet.getTxs(new MoneroTxQuery().setIsLocked(false).setMinHeight(minHeight).setHashes(noLongerLockedHashes).setIncludeOutputs(true));
-         
-        // announce new unconfirmed and confirmed outputs
-        for (let lockedTx of lockedTxs) {
-          let searchSet = lockedTx.isConfirmed() ? that._prevConfirmedNotifications : that._prevUnconfirmedNotifications;
-          let unannounced = !searchSet.has(lockedTx.getHash());
-          searchSet.add(lockedTx.getHash());
-          if (unannounced) await that._notifyOutputs(lockedTx);
-        }
-        
-        // announce new unlocked outputs
-        for (let unlockedTx of unlockedTxs) {
-          that._prevUnconfirmedNotifications.delete(unlockedTx.getHash());
-          that._prevConfirmedNotifications.delete(unlockedTx.getHash());
-          await that._notifyOutputs(unlockedTx);
-        }
-        
-        // announce balance changes
-        await that._checkForChangedBalances();
-        that._numPolling--;
-      } catch (err) {
-        that._numPolling--;
-        console.error("Failed to background poll " + await that._wallet.getPath());
-      }
-    });
-  }
-  
-  async _onNewBlock(height) {
-    for (let listener of this._wallet.getListeners()) await listener.onNewBlock(height);
-  }
-  
-  async _notifyOutputs(tx) {
-  
-    // notify spent outputs // TODO (monero-project): monero-wallet-rpc does not allow scrape of tx inputs so providing one input with outgoing amount
-    if (tx.getOutgoingTransfer() !== undefined) {
-      assert(tx.getInputs() === undefined);
-      let output = new MoneroOutputWallet()
-          .setAmount(tx.getOutgoingTransfer().getAmount().add(tx.getFee()))
-          .setAccountIndex(tx.getOutgoingTransfer().getAccountIndex())
-          .setSubaddressIndex(tx.getOutgoingTransfer().getSubaddressIndices().length === 1 ? tx.getOutgoingTransfer().getSubaddressIndices()[0] : undefined) // initialize if transfer sourced from single subaddress
-          .setTx(tx);
-      tx.setInputs([output]);
-      for (let listener of this._wallet.getListeners()) await listener.onOutputSpent(output);
-    }
-    
-    // notify received outputs
-    if (tx.getIncomingTransfers() !== undefined) {
-      if (tx.getOutputs() !== undefined && tx.getOutputs().length > 0) { // TODO (monero-project): outputs only returned for confirmed txs
-        for (let output of tx.getOutputs()) {
-          for (let listener of this._wallet.getListeners()) await listener.onOutputReceived(output);
-        }
-      } else { // TODO (monero-project): monero-wallet-rpc does not allow scrape of unconfirmed received outputs so using incoming transfer values
-        let outputs = [];
-        for (let transfer of tx.getIncomingTransfers()) {
-          outputs.push(new MoneroOutputWallet()
-              .setAccountIndex(transfer.getAccountIndex())
-              .setSubaddressIndex(transfer.getSubaddressIndex())
-              .setAmount(transfer.getAmount())
-              .setTx(tx));
-        }
-        tx.setOutputs(outputs);
-        for (let listener of this._wallet.getListeners()) {
-          for (let output of tx.getOutputs()) await listener.onOutputReceived(output);
-        }
-      }
-    }
-  }
-  
-  _getTx(txs, txHash) {
-    for (let tx of txs) if (txHash === tx.getHash()) return tx;
-    return undefined;
-  }
-  
-  async _checkForChangedBalances() {
-    let balances = await this._wallet._getBalances();
-    if (balances[0].compare(this._prevBalances[0]) !== 0 || balances[1].compare(this._prevBalances[1]) !== 0) {
-      this._prevBalances = balances;
-      for (let listener of await this._wallet.getListeners()) await listener.onBalancesChanged(balances[0], balances[1]);
-      return true;
-    }
-    return false;
-  }
-}
-
-MoneroWalletRpc.DEFAULT_SYNC_PERIOD_IN_MS = 20000; // default period between syncs in ms (defined by DEFAULT_AUTO_REFRESH_PERIOD in wallet_rpc_server.cpp)
-
-module.exports = MoneroWalletRpc;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_wallet_model_MoneroAccount.js.html b/docs/src_main_js_wallet_model_MoneroAccount.js.html deleted file mode 100644 index 71fdc8d7d..000000000 --- a/docs/src_main_js_wallet_model_MoneroAccount.js.html +++ /dev/null @@ -1,181 +0,0 @@ - - - - - JSDoc: Source: src/main/js/wallet/model/MoneroAccount.js - - - - - - - - - - -
- -

Source: src/main/js/wallet/model/MoneroAccount.js

- - - - - - -
-
-
const assert = require("assert");
-const BigInteger = require("../../common/biginteger").BigInteger;
-const MoneroSubaddress = require("./MoneroSubaddress");
-
-/**
- * Monero account model.
- */
-class MoneroAccount {
-  
-  constructor(stateOrIndex, primaryAddress, balance, unlockedBalance, subaddresses) {
-    
-    // construct from json
-    if (typeof stateOrIndex === "object") {
-      this.state = stateOrIndex;
-      
-      // deserialize balances
-      if (this.state.balance !== undefined && !(this.state.balance instanceof BigInteger)) this.state.balance = BigInteger.parse(this.state.balance);
-      if (this.state.unlockedBalance !== undefined && !(this.state.unlockedBalance instanceof BigInteger)) this.state.unlockedBalance = BigInteger.parse(this.state.unlockedBalance);
-      
-      // deserialize subaddresses
-      if (this.state.subaddresses) {
-        for (let i = 0; i < this.state.subaddresses.length; i++) {
-          if (!(this.state.subaddresses[i] instanceof MoneroSubaddress)) {
-            this.state.subaddresses[i] = new MoneroSubaddress(this.state.subaddresses[i]);
-          }
-        }
-      }
-    }
-    
-    // construct from individual params
-    else {
-      this.state = {};
-      this.setIndex(stateOrIndex);
-      this.setPrimaryAddress(primaryAddress);
-      this.setBalance(balance);
-      this.setUnlockedBalance(unlockedBalance);
-      this.setSubaddresses(subaddresses);
-    }
-  }
-  
-  toJson() {
-    let json = Object.assign({}, this.state);
-    if (json.balance) json.balance = json.balance.toString();
-    if (json.unlockedBalance) json.unlockedBalance = json.unlockedBalance.toString();
-    if (json.subaddresses) {
-      for (let i = 0; i < json.subaddresses.length; i++) {
-        json.subaddresses[i] = json.subaddresses[i].toJson();
-      }
-    }
-    return json;
-  }
-  
-  getIndex() {
-    return this.state.index;
-  }
-  
-  setIndex(index) {
-    this.state.index = index;
-    return this;
-  }
-  
-  getPrimaryAddress() {
-    return this.state.primaryAddress;
-  }
-
-  setPrimaryAddress(primaryAddress) {
-    this.state.primaryAddress = primaryAddress;
-    return this;
-  }
-  
-  getBalance() {
-    return this.state.balance;
-  }
-  
-  setBalance(balance) {
-    this.state.balance = balance;
-    return this;
-  }
-  
-  getUnlockedBalance() {
-    return this.state.unlockedBalance;
-  }
-  
-  setUnlockedBalance(unlockedBalance) {
-    this.state.unlockedBalance = unlockedBalance;
-    return this;
-  }
-  
-  getTag() {
-    return this.state.tag;
-  }
-  
-  setTag(tag) {
-    this.state.tag = tag;
-    return this;
-  }
-  
-  getSubaddresses() {
-    return this.state.subaddresses;
-  }
-  
-  setSubaddresses(subaddresses) {
-    assert(subaddresses === undefined || Array.isArray(subaddresses), "Given subaddresses must be undefined or an array of subaddresses");
-    this.state.subaddresses = subaddresses;
-    if (subaddresses) {
-      for (let subaddress of subaddresses) {
-        subaddress.setAccountIndex(this.state.index);
-      }
-    }
-    return this;
-  }
-  
-  toString(indent = 0) {
-    let str = "";
-    str += GenUtils.kvLine("Index", this.getIndex(), indent);
-    str += GenUtils.kvLine("Primary address", this.getPrimaryAddress(), indent);
-    str += GenUtils.kvLine("Balance", this.getBalance(), indent);
-    str += GenUtils.kvLine("Unlocked balance", this.getUnlockedBalance(), indent);
-    str += GenUtils.kvLine("Tag", this.getTag(), indent);
-    if (this.getSubaddresses() != null) {
-      sb += GenUtils.kvLine("Subaddresses", "", indent)
-      for (let i = 0; i < this.getSubaddresses().size(); i++) {
-        str += GenUtils.kvLine(i + 1, "", indent + 1);
-        str += this.getSubaddresses()[i].toString(indent + 2) + "\n";
-      }
-    }
-    return str.slice(0, str.length - 1);  // strip last newline
-  }
-}
-
-module.exports = MoneroAccount;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_wallet_model_MoneroAccountTag.js.html b/docs/src_main_js_wallet_model_MoneroAccountTag.js.html deleted file mode 100644 index 2e54719d7..000000000 --- a/docs/src_main_js_wallet_model_MoneroAccountTag.js.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - JSDoc: Source: src/main/js/wallet/model/MoneroAccountTag.js - - - - - - - - - - -
- -

Source: src/main/js/wallet/model/MoneroAccountTag.js

- - - - - - -
-
-
/**
- * Represents an account tag.
- */
-class MoneroAccountTag {
-  
-  constructor(tag, label, accountIndices) {
-    this.tag = tag;
-    this.label = label;
-    this.accountIndices = accountIndices;
-  }
-  
-  getTag() {
-    return this.tag;
-  }
-  
-  setTag(tag) {
-    this.tag = tag;
-    return this;
-  }
-  
-  getLabel() {
-    return this.label;
-  }
-  
-  setLabel(label) {
-    this.label = label;
-    return this;
-  }
-  
-  getAccountIndices() {
-    return this.accountIndices;
-  }
-  
-  setAccountIndices(accountIndices) {
-    this.accoutIndices = accountIndices;
-    return this;
-  }
-}
-
-module.exports = MoneroAccountTag;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_wallet_model_MoneroAddressBookEntry.js.html b/docs/src_main_js_wallet_model_MoneroAddressBookEntry.js.html deleted file mode 100644 index d03135f19..000000000 --- a/docs/src_main_js_wallet_model_MoneroAddressBookEntry.js.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - JSDoc: Source: src/main/js/wallet/model/MoneroAddressBookEntry.js - - - - - - - - - - -
- -

Source: src/main/js/wallet/model/MoneroAddressBookEntry.js

- - - - - - -
-
-
/**
- * Monero address book entry model
- */
-class MoneroAddressBookEntry {
-  
-  constructor(state) {
-    this.state = Object.assign({}, state);
-  }
-  
-  toJson() {
-    return Object.assign({}, this.state);
-  }
-  
-  getIndex() {
-    return this.state.index;
-  }
-  
-  setIndex(index) {
-    this.state.index = index;
-    return this;
-  }
-  
-  getAddress() {
-    return this.state.address;
-  }
-  
-  setAddress(address) {
-    this.state.address = address;
-    return this;
-  }
-  
-  getDescription() {
-    return this.state.description;
-  }
-  
-  setDescription(description) {
-    this.state.description = description;
-    return this;
-  }
-  
-  getPaymentId() {
-    return this.state.paymentId;
-  }
-  
-  setPaymentId(paymentId) {
-    this.state.paymentId = paymentId;
-    return this;
-  }
-}
-
-module.exports = MoneroAddressBookEntry;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_wallet_model_MoneroCheck.js.html b/docs/src_main_js_wallet_model_MoneroCheck.js.html deleted file mode 100644 index e7e4c9112..000000000 --- a/docs/src_main_js_wallet_model_MoneroCheck.js.html +++ /dev/null @@ -1,72 +0,0 @@ - - - - - JSDoc: Source: src/main/js/wallet/model/MoneroCheck.js - - - - - - - - - - -
- -

Source: src/main/js/wallet/model/MoneroCheck.js

- - - - - - -
-
-
/**
- * Base class for results from checking a transaction or reserve proof.
- * 
- * @class
- */
-class MoneroCheck {
-  
-  constructor(state) {
-    this.state = Object.assign({}, state);
-  }
-
-  isGood() {
-    return this.state.isGood;
-  }
-
-  setIsGood(isGood) {
-    this.state.isGood = isGood;
-    return this;
-  }
-}
-
-module.exports = MoneroCheck;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_wallet_model_MoneroCheckReserve.js.html b/docs/src_main_js_wallet_model_MoneroCheckReserve.js.html deleted file mode 100644 index 72304ef80..000000000 --- a/docs/src_main_js_wallet_model_MoneroCheckReserve.js.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - JSDoc: Source: src/main/js/wallet/model/MoneroCheckReserve.js - - - - - - - - - - -
- -

Source: src/main/js/wallet/model/MoneroCheckReserve.js

- - - - - - -
-
-
const BigInteger = require("../../common/biginteger").BigInteger;
-const MoneroCheck = require("./MoneroCheck");
-
-/**
- * Results from checking a reserve proof.
- * 
- * @extends {MoneroCheck}
- */
-class MoneroCheckReserve extends MoneroCheck {
-  
-  constructor(state) {
-    super(state);
-    if (this.state.totalAmount !== undefined && !(this.state.totalAmount instanceof BigInteger)) this.state.totalAmount = BigInteger.parse(this.state.totalAmount);
-    if (this.state.unconfirmedSpentAmount !== undefined && !(this.state.unconfirmedSpentAmount instanceof BigInteger)) this.state.unconfirmedSpentAmount = BigInteger.parse(this.state.unconfirmedSpentAmount);
-  }
-  
-  toJson() {
-    let json = Object.assign({}, this.state);
-    if (this.getTotalAmount()) json.totalAmount = this.getTotalAmount().toString();
-    if (this.getUnconfirmedSpentAmount()) json.unconfirmedSpentAmount = this.getUnconfirmedSpentAmount().toString();
-    return json;
-  }
-  
-  getTotalAmount() {
-    return this.state.totalAmount;
-  }
-
-  setTotalAmount(totalAmount) {
-    this.state.totalAmount = totalAmount;
-    return this;
-  }
-  
-  getUnconfirmedSpentAmount() {
-    return this.state.unconfirmedSpentAmount;
-  }
-
-  setUnconfirmedSpentAmount(unconfirmedSpentAmount) {
-    this.state.unconfirmedSpentAmount = unconfirmedSpentAmount;
-    return this;
-  }
-}
-
-module.exports = MoneroCheckReserve;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_wallet_model_MoneroCheckTx.js.html b/docs/src_main_js_wallet_model_MoneroCheckTx.js.html deleted file mode 100644 index 75edb21fb..000000000 --- a/docs/src_main_js_wallet_model_MoneroCheckTx.js.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - JSDoc: Source: src/main/js/wallet/model/MoneroCheckTx.js - - - - - - - - - - -
- -

Source: src/main/js/wallet/model/MoneroCheckTx.js

- - - - - - -
-
-
const MoneroCheck = require("./MoneroCheck");
-const BigInteger = require("../../common/biginteger").BigInteger;
-
-/**
- * Results from checking a transaction key.
- * 
- * @extends {MoneroCheck}
- */
-class MoneroCheckTx extends MoneroCheck {
-  
-  constructor(state) {
-    super(state);
-    if (this.state.receivedAmount !== undefined && !(this.state.receivedAmount instanceof BigInteger)) this.state.receivedAmount = BigInteger.parse(this.state.receivedAmount);
-  }
-  
-  toJson() {
-    let json = Object.assign({}, this.state);
-    if (this.getReceivedAmount()) json.receivedAmount = this.getReceivedAmount().toString();
-    return json;
-  }
-
-  inTxPool() {
-    return this.state.inTxPool;
-  }
-  
-  setInTxPool(inTxPool) {
-    this.state.inTxPool = inTxPool;
-    return this;
-  }
-  
-  getNumConfirmations() {
-    return this.state.numConfirmations;
-  }
-  
-  setNumConfirmations(numConfirmations) {
-    this.state.numConfirmations = numConfirmations;
-    return this;
-  }
-  
-  getReceivedAmount() {
-    return this.state.receivedAmount;
-  }
-  
-  setReceivedAmount(receivedAmount) {
-    this.state.receivedAmount = receivedAmount;
-    return this;
-  }
-}
-
-module.exports = MoneroCheckTx;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_wallet_model_MoneroDestination.js.html b/docs/src_main_js_wallet_model_MoneroDestination.js.html deleted file mode 100644 index 6ffc96316..000000000 --- a/docs/src_main_js_wallet_model_MoneroDestination.js.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - JSDoc: Source: src/main/js/wallet/model/MoneroDestination.js - - - - - - - - - - -
- -

Source: src/main/js/wallet/model/MoneroDestination.js

- - - - - - -
-
-
const BigInteger = require("../../common/biginteger").BigInteger;
-const GenUtils = require("../../common/GenUtils");
-const MoneroError = require("../../common/MoneroError");
-
-/**
- * Models an outgoing transfer destination.
- */
-class MoneroDestination {
-  
-  /**
-   * Construct the model.
-   * 
-   * @param {MoneroDestination|object|string} stateOrAddress is a MoneroDestination, JS object, or hex string to initialize from (optional)
-   * @param {BigInteger|string} amount - the destination amount
-   */
-  constructor(stateOrAddress, amount) {
-    if (!stateOrAddress) this.state = {};
-    else if (stateOrAddress instanceof MoneroDestination) this.state = stateOrAddress.toJson();
-    else if (typeof stateOrAddress === "object") {
-      this.state = Object.assign({}, stateOrAddress);
-      if (typeof this.state.amount === "number") this.state.amount = BigInteger.parse(this.state.amount);
-    } else if (typeof stateOrAddress === "string")  {
-      this.state = {};
-      this.setAddress(stateOrAddress);
-    }
-    else throw new MoneroError("stateOrAddress must be a MoneroDestination, JavaScript object, or hex string");
-    if (amount) this.state.amount = amount;
-    this.setAmount(this.state.amount);
-  }
-  
-  getAddress() {
-    return this.state.address;
-  }
-
-  setAddress(address) {
-    this.state.address = address;
-    return this;
-  }
-  
-  getAmount() {
-    return this.state.amount;
-  }
-
-  setAmount(amount) {
-    if (amount !== undefined && !(this.state.amount instanceof BigInteger)) {
-      if (typeof amount === "number") throw new MoneroError("Destination amount must be BigInteger or string");
-      try { amount = BigInteger.parse(amount); }
-      catch (err) { throw new MoneroError("Invalid destination amount: " + amount); }
-    }
-    this.state.amount = amount;
-    return this;
-  }
-
-  copy() {
-    return new MoneroDestination(this);
-  }
-  
-  toJson() {
-    let json = Object.assign({}, this.state);
-    if (this.getAmount()) json.amount = this.getAmount().toString();
-    return json;
-  }
-  
-  toString(indent = 0) {
-    let str = GenUtils.kvLine("Address", this.getAddress(), indent);
-    str += GenUtils.kvLine("Amount", this.getAmount() ? this.getAmount().toString() : undefined, indent);
-    return str.slice(0, str.length - 1);  // strip last newline
-  }
-}
-
-module.exports = MoneroDestination;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_wallet_model_MoneroIncomingTransfer.js.html b/docs/src_main_js_wallet_model_MoneroIncomingTransfer.js.html deleted file mode 100644 index 86504b249..000000000 --- a/docs/src_main_js_wallet_model_MoneroIncomingTransfer.js.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - JSDoc: Source: src/main/js/wallet/model/MoneroIncomingTransfer.js - - - - - - - - - - -
- -

Source: src/main/js/wallet/model/MoneroIncomingTransfer.js

- - - - - - -
-
-
const assert = require("assert");
-const GenUtils = require("../../common/GenUtils");
-const MoneroTransfer = require("./MoneroTransfer");
-
-/**
- * Models an incoming transfer of funds to the wallet.
- * 
- * @extends {MoneroTransfer}
- */
-class MoneroIncomingTransfer extends MoneroTransfer {
-  
-  /**
-   * Construct the model.
-   * 
-   * @param {MoneroTransfer|object} state is existing state to initialize from (optional)
-   */
-  constructor(state) {
-    super(state);
-  }
-  
-  isIncoming() {
-    return true;
-  }
-  
-  getSubaddressIndex() {
-    return this.state.subaddressIndex;
-  }
-  
-  setSubaddressIndex(subaddressIndex) {
-    this.state.subaddressIndex = subaddressIndex;
-    return this;
-  }
-  
-  getAddress() {
-    return this.state.address;
-  }
-
-  setAddress(address) {
-    this.state.address = address;
-    return this;
-  }
-  
-  /**
-   * Return how many confirmations till it's not economically worth re-writing the chain.
-   * That is, the number of confirmations before the transaction is highly unlikely to be
-   * double spent or overwritten and may be considered settled, e.g. for a merchant to trust
-   * as finalized.
-   * 
-   * @return {number} is the number of confirmations before it's not worth rewriting the chain
-   */
-  getNumSuggestedConfirmations() {
-    return this.state.numSuggestedConfirmations;
-  }
-  
-  setNumSuggestedConfirmations(numSuggestedConfirmations) {
-    this.state.numSuggestedConfirmations = numSuggestedConfirmations;
-    return this;
-  }
-
-  copy() {
-    return new MoneroIncomingTransfer(this.toJson());
-  }
-  
-  /**
-   * Updates this transaction by merging the latest information from the given
-   * transaction.
-   * 
-   * Merging can modify or build references to the transfer given so it
-   * should not be re-used or it should be copied before calling this method.
-   * 
-   * @param {MoneroIncomingTransfer} transfer is the transfer to merge into this one
-   */
-  merge(transfer) {
-    super.merge(transfer);
-    assert(transfer instanceof MoneroIncomingTransfer);
-    if (this === transfer) return this;
-    this.setSubaddressIndex(GenUtils.reconcile(this.getSubaddressIndex(), transfer.getSubaddressIndex()));
-    this.setAddress(GenUtils.reconcile(this.getAddress(), transfer.getAddress()));
-    this.setNumSuggestedConfirmations(GenUtils.reconcile(this.getNumSuggestedConfirmations(), transfer.getNumSuggestedConfirmations(), {resolveMax: false}));
-    return this;
-  }
-  
-  toString() {
-    return this.toString(0);
-  }
-  
-  toString(indent) {
-    let str = super.toString(indent) + "\n";
-    str += GenUtils.kvLine("Subaddress index", this.getSubaddressIndex(), indent);
-    str += GenUtils.kvLine("Address", this.getAddress(), indent);
-    str += GenUtils.kvLine("Num suggested confirmations", this.getNumSuggestedConfirmations(), indent);
-    return str.slice(0, str.length - 1);  // strip last newline
-  }
-}
-
-module.exports = MoneroIncomingTransfer;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_wallet_model_MoneroIntegratedAddress.js.html b/docs/src_main_js_wallet_model_MoneroIntegratedAddress.js.html deleted file mode 100644 index 65553bad6..000000000 --- a/docs/src_main_js_wallet_model_MoneroIntegratedAddress.js.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - JSDoc: Source: src/main/js/wallet/model/MoneroIntegratedAddress.js - - - - - - - - - - -
- -

Source: src/main/js/wallet/model/MoneroIntegratedAddress.js

- - - - - - -
-
-
/**
- * Monero integrated address model.
- */
-class MoneroIntegratedAddress {
-  
-  constructor(state) {
-    this.state = Object.assign({}, state);
-  }
-  
-  toJson() {
-    return Object.assign({}, this.state);
-  }
-
-  getStandardAddress() {
-    return this.state.standardAddress;
-  }
-  
-  setStandardAddress(standardAddress) {
-    this.state.standardAddress = standardAddress;
-    return this;
-  }
-  
-  getPaymentId() {
-    return this.state.paymentId;
-  }
-  
-  setPaymentId(paymentId) {
-    this.state.paymentId = paymentId;
-    return this;
-  }
-  
-  getIntegratedAddress() {
-    return this.state.integratedAddress;
-  }
-  
-  setIntegratedAddress(integratedAddress) {
-    this.state.integratedAddress = integratedAddress;
-    return this;
-  }
-  
-  toString() {
-    return this.state.integratedAddress;
-  }
-}
-
-module.exports = MoneroIntegratedAddress;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_wallet_model_MoneroKeyImageImportResult.js.html b/docs/src_main_js_wallet_model_MoneroKeyImageImportResult.js.html deleted file mode 100644 index bd737a3a2..000000000 --- a/docs/src_main_js_wallet_model_MoneroKeyImageImportResult.js.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - JSDoc: Source: src/main/js/wallet/model/MoneroKeyImageImportResult.js - - - - - - - - - - -
- -

Source: src/main/js/wallet/model/MoneroKeyImageImportResult.js

- - - - - - -
-
-
const BigInteger = require("../../common/biginteger").BigInteger;
-
-/**
- * Models results from importing key images.
- */
-class MoneroKeyImageImportResult {
-  
-  constructor(state) {
-    state = Object.assign({}, state);
-    if (state.spentAmount !== undefined && !(state.spentAmount instanceof BigInteger)) state.spentAmount = BigInteger.parse(state.spentAmount);
-    if (state.unspentAmount !== undefined && !(state.unspentAmount instanceof BigInteger)) state.unspentAmount = BigInteger.parse(state.unspentAmount);
-    this.state = state;
-  }
-  
-  toJson() {
-    let json = Object.assign({}, this.state);
-    if (this.getSpentAmount()) json.spentAmount = this.getSpentAmount().toString();
-    if (this.getUnspentAmount()) json.unspentAmount = this.getUnspentAmount().toString();
-    return json;
-  }
-  
-  getHeight() {
-    return this.state.height;
-  }
-  
-  setHeight(height) {
-    this.state.height = height;
-    return this;
-  }
-  
-  getSpentAmount() {
-    return this.state.spentAmount;
-  }
-  
-  setSpentAmount(spentAmount) {
-    this.state.spentAmount = spentAmount;
-    return this;
-  }
-  
-  getUnspentAmount() {
-    return this.state.unspentAmount;
-  }
-  
-  setUnspentAmount(unspentAmount) {
-    this.state.unspentAmount = unspentAmount;
-    return this;
-  }
-}
-
-module.exports = MoneroKeyImageImportResult;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_wallet_model_MoneroMessageSignatureResult.js.html b/docs/src_main_js_wallet_model_MoneroMessageSignatureResult.js.html deleted file mode 100644 index 977646f4b..000000000 --- a/docs/src_main_js_wallet_model_MoneroMessageSignatureResult.js.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - JSDoc: Source: src/main/js/wallet/model/MoneroMessageSignatureResult.js - - - - - - - - - - -
- -

Source: src/main/js/wallet/model/MoneroMessageSignatureResult.js

- - - - - - -
-
-
/**
- * Message signature verification result.
- * 
- * @class
- */
-class MoneroMessageSignatureResult {
-  
-  constructor(stateOrIsGood, isOld, signatureType, version) {
-    if (typeof stateOrIsGood === "boolean") {
-      this.state = {};
-      this.state.isGood = stateOrIsGood;
-      this.state.isOld = isOld;
-      this.state.signatureType = signatureType;
-      this.state.version = version;
-    } else {
-      this.state = stateOrIsGood;
-    }
-  }
-  
-  toJson() {
-    return Object.assign({}, this.state);
-  }
-
-  isGood() {
-    return this.state.isGood;
-  }
-
-  setIsGood(isGood) {
-    this.state.isGood = isGood;
-    return this;
-  }
-  
-  isOld() {
-    return this.state.isOld;
-  }
-
-  setIsOld(isOld) {
-    this.state.isOld = isOld;
-    return this;
-  }
-  
-  getSignatureType() {
-    return this.state.signatureType;
-  }
-
-  setSignatureType(signatureType) {
-    this.state.signatureType = signatureType;
-    return this;
-  }
-  
-  getVersion() {
-    return this.state.version;
-  }
-
-  setVersion(version) {
-    this.state.version = version;
-    return this;
-  }
-}
-
-module.exports = MoneroMessageSignatureResult;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_wallet_model_MoneroMessageSignatureType.js.html b/docs/src_main_js_wallet_model_MoneroMessageSignatureType.js.html deleted file mode 100644 index 61b256d04..000000000 --- a/docs/src_main_js_wallet_model_MoneroMessageSignatureType.js.html +++ /dev/null @@ -1,68 +0,0 @@ - - - - - JSDoc: Source: src/main/js/wallet/model/MoneroMessageSignatureType.js - - - - - - - - - - -
- -

Source: src/main/js/wallet/model/MoneroMessageSignatureType.js

- - - - - - -
-
-
/**
- * Enumerate message signature types.
- * 
- * @hideconstructor
- */
-class MoneroMessageSignatureType {}
-
-/**
- * Sign with spend key (value=0).
- */
-MoneroMessageSignatureType.SIGN_WITH_SPEND_KEY = 0;
-
-/**
- * Sign with the view key (value=1).
- */
-MoneroMessageSignatureType.SIGN_WITH_VIEW_KEY = 1;
-
-module.exports = MoneroMessageSignatureType;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_wallet_model_MoneroMultisigInfo.js.html b/docs/src_main_js_wallet_model_MoneroMultisigInfo.js.html deleted file mode 100644 index 8356f485f..000000000 --- a/docs/src_main_js_wallet_model_MoneroMultisigInfo.js.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - - JSDoc: Source: src/main/js/wallet/model/MoneroMultisigInfo.js - - - - - - - - - - -
- -

Source: src/main/js/wallet/model/MoneroMultisigInfo.js

- - - - - - -
-
-
/**
- * Models information about a multisig wallet.
- */
-class MoneroMultisigInfo {
-  
-  constructor(state) {
-    this.state = Object.assign({}, state);
-  }
-  
-  toJson() {
-    return Object.assign({}, this.state);
-  }
-  
-  isMultisig() {
-    return this.state.isMultisig;
-  }
-  
-  setIsMultisig(isMultisig) {
-    this.state.isMultisig = isMultisig;
-    return this;
-  }
-  
-  isReady() {
-    return this.state.isReady;
-  }
-  
-  setIsReady(isReady) {
-    this.state.isReady = isReady;
-  }
-  
-  getThreshold() {
-    return this.state.threshold;
-  }
-  
-  setThreshold(threshold) {
-    this.state.threshold = threshold;
-  }
-  
-  getNumParticipants() {
-    return this.state.numParticipants;
-  }
-  
-  setNumParticipants(numParticipants) {
-    this.state.numParticipants = numParticipants;
-  }
-}
-
-module.exports = MoneroMultisigInfo;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_wallet_model_MoneroMultisigInitResult.js.html b/docs/src_main_js_wallet_model_MoneroMultisigInitResult.js.html deleted file mode 100644 index dd1891064..000000000 --- a/docs/src_main_js_wallet_model_MoneroMultisigInitResult.js.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - JSDoc: Source: src/main/js/wallet/model/MoneroMultisigInitResult.js - - - - - - - - - - -
- -

Source: src/main/js/wallet/model/MoneroMultisigInitResult.js

- - - - - - -
-
-
/**
- * Models the result of initializing a multisig wallet which results in the
- * multisig wallet's address xor another multisig hex to share with
- * participants to create the wallet.
- */
-class MoneroMultisigInitResult {
-
-  constructor(state) {
-    this.state = Object.assign({}, state);
-  }
-  
-  toJson() {
-    return Object.assign({}, this.state);
-  }
-  
-  getAddress() {
-    return this.state.address;
-  }
-  
-  setAddress(address) {
-    this.state.address = address;
-    return this;
-  }
-  
-  getMultisigHex() {
-    return this.state.multisigHex;
-  }
-  
-  setMultisigHex(multisigHex) {
-    this.state.multisigHex = multisigHex;
-    return this;
-  }
-}
-
-module.exports = MoneroMultisigInitResult;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_wallet_model_MoneroMultisigSignResult.js.html b/docs/src_main_js_wallet_model_MoneroMultisigSignResult.js.html deleted file mode 100644 index 179b1c133..000000000 --- a/docs/src_main_js_wallet_model_MoneroMultisigSignResult.js.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - - JSDoc: Source: src/main/js/wallet/model/MoneroMultisigSignResult.js - - - - - - - - - - -
- -

Source: src/main/js/wallet/model/MoneroMultisigSignResult.js

- - - - - - -
-
-
/**
- * Models the result of signing multisig tx hex.
- */
-class MoneroMultisigSignResult {
-  
-  constructor(state) {
-    this.state = Object.assign({}, state);
-  }
-  
-  toJson() {
-    return Object.assign({}, this.state);
-  }
-  
-  getSignedMultisigTxHex() {
-    return this.state.signedMultisigTxHex;
-  }
-
-  setSignedMultisigTxHex(signedTxMultisigHex) {
-    this.state.signedMultisigTxHex = signedTxMultisigHex;
-  }
-
-  getTxHashes() {
-    return this.state.txHashes;
-  }
-
-  setTxHashes(txHashes) {
-    this.state.txHashes = txHashes;
-  }
-}
-
-module.exports = MoneroMultisigSignResult;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_wallet_model_MoneroOutgoingTransfer.js.html b/docs/src_main_js_wallet_model_MoneroOutgoingTransfer.js.html deleted file mode 100644 index 9744aa717..000000000 --- a/docs/src_main_js_wallet_model_MoneroOutgoingTransfer.js.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - JSDoc: Source: src/main/js/wallet/model/MoneroOutgoingTransfer.js - - - - - - - - - - -
- -

Source: src/main/js/wallet/model/MoneroOutgoingTransfer.js

- - - - - - -
-
-
const assert = require("assert");
-const GenUtils = require("../../common/GenUtils");
-const MoneroDestination = require("./MoneroDestination");
-const MoneroTransfer = require("./MoneroTransfer");
-
-/**
- * Models an outgoing transfer of funds from the wallet.
- * 
- * @extends {MoneroTransfer}
- */
-class MoneroOutgoingTransfer extends MoneroTransfer {
-
-  /**
-   * Construct the model.
-   * 
-   * @param {MoneroOutgoingTranser|object} state is existing state to initialize from (optional)
-   */
-  constructor(state) {
-    super(state);
-    state = this.state;
-    
-    // deserialize destinations
-    if (state.destinations) {
-      for (let i = 0; i < state.destinations.length; i++) {
-        if (!(state.destinations[i] instanceof MoneroDestination)) state.destinations[i] = new MoneroDestination(state.destinations[i]);
-      }
-    }
-  }
-  
-  isIncoming() {
-    return false;
-  }
-  
-  getSubaddressIndices() {
-    return this.state.subaddressIndices;
-  }
-
-  setSubaddressIndices(subaddressIndices) {
-    this.state.subaddressIndices = subaddressIndices;
-    return this;
-  }
-  
-  getAddresses() {
-    return this.state.addresses;
-  }
-
-  setAddresses(addresses) {
-    this.state.addresses = addresses;
-    return this;
-  }
-
-  getDestinations() {
-    return this.state.destinations;
-  }
-  
-  setDestinations(destinations) {
-    this.state.destinations = destinations;
-    return this;
-  }
-  
-  copy() {
-    return new MoneroOutgoingTransfer(this);
-  }
-  
-  toJson() {
-    let json = Object.assign({}, this.state, super.toJson()); // merge json onto inherited state
-    if (this.getDestinations()) {
-      json.destinations = [];
-      for (let destination of this.getDestinations()) json.destinations.push(destination.toJson());
-    }
-    delete json.tx; // parent tx is not serialized
-    return json;
-  }
-  
-  /**
-   * Updates this transaction by merging the latest information from the given
-   * transaction.
-   * 
-   * Merging can modify or build references to the transfer given so it
-   * should not be re-used or it should be copied before calling this method.
-   * 
-   * @param transfer is the transfer to merge into this one
-   */
-  merge(transfer) {
-    super.merge(transfer);
-    assert(transfer instanceof MoneroOutgoingTransfer);
-    if (this === transfer) return this;
-    this.setSubaddressIndices(GenUtils.reconcile(this.getSubaddressIndices(), transfer.getSubaddressIndices()));
-    this.setAddresses(GenUtils.reconcile(this.getAddresses(), transfer.getAddresses()));
-    this.setDestinations(GenUtils.reconcile(this.getDestinations(), transfer.getDestinations()));
-    return this;
-  }
-
-  toString(indent = 0) {
-    let str = super.toString(indent) + "\n";
-    str += GenUtils.kvLine("Subaddress indices", this.getSubaddressIndices(), indent);
-    str += GenUtils.kvLine("Addresses", this.getAddresses(), indent);
-    if (this.getDestinations()) {
-      str += GenUtils.kvLine("Destinations", "", indent);
-      for (let i = 0; i < this.getDestinations().length; i++) {
-        str += GenUtils.kvLine(i + 1, "", indent + 1);
-        str += this.getDestinations()[i].toString(indent + 2) + "\n";
-      }
-    }
-    return str.slice(0, str.length - 1);  // strip last newline
-  }
-}
-
-module.exports = MoneroOutgoingTransfer;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_wallet_model_MoneroOutputQuery.js.html b/docs/src_main_js_wallet_model_MoneroOutputQuery.js.html deleted file mode 100644 index 27c2ec957..000000000 --- a/docs/src_main_js_wallet_model_MoneroOutputQuery.js.html +++ /dev/null @@ -1,189 +0,0 @@ - - - - - JSDoc: Source: src/main/js/wallet/model/MoneroOutputQuery.js - - - - - - - - - - -
- -

Source: src/main/js/wallet/model/MoneroOutputQuery.js

- - - - - - -
-
-
const BigInteger = require("../../common/biginteger").BigInteger;
-const MoneroError = require("../../common/MoneroError");
-const MoneroOutputWallet = require("./MoneroOutputWallet");
-
-/**
- * Configuration to query wallet outputs.
- * 
- * @extends {MoneroOutputWallet}
- */
-class MoneroOutputQuery extends MoneroOutputWallet {
-  
-  /**
-   * <p>Construct the output query.</p>
-   * 
-   * <p>Example:</p>
-   * 
-   * <code>
-   * &sol;&sol; get available outputs in account 0 with a minimum amount<br>
-   * let outputs = await wallet.getOutputs({<br>
-   * &nbsp;&nbsp; isSpent: false,<br>
-   * &nbsp;&nbsp; isLocked: false,<br>
-   * &nbsp;&nbsp; accountIndex: 0,<br>
-   * &nbsp;&nbsp; minAmount: new BigInteger("750000")<br>
-   * });
-   * </code>
-   * 
-   * <p>All configuration is optional.  All outputs are returned except those that don't meet criteria defined in this query.</p>
-   * 
-   * @param {object} config - output query configuration (optional)
-   * @param {int} config.accountIndex - get outputs in this account index
-   * @param {int} config.subaddressIndex - get outputs in this subaddress index
-   * @param {int[]} config.subaddressIndices - get outputs in these subaddress indices
-   * @param {BigInteger} config.amount - get outputs with this amount
-   * @param {BigInteger} config.minAmount - get outputs with amount greater than or equal to this amount
-   * @param {BigInteger} config.maxAmount - get outputs with amount less than or equal to this amount
-   * @param {boolean} config.isSpent - get spent xor unspent outputs
-   * @param {boolean} config.isFrozen - get frozen xor thawed outputs
-   * @param {object|MoneroKeyImage} config.keyImage - get outputs with a key image matching fields defined in this key image
-   * @param {string} config.keyImage.hex - get outputs with this key image hex
-   * @param {string} config.keyImage.signature - get outputs with this key image signature
-   * @param {object|MoneroTxQuery} config.txQuery - get outputs whose tx match this tx query
-   */
-  constructor(config) {
-    super(config);
-    
-    // deserialize if necessary
-    const MoneroTxQuery = require("./MoneroTxQuery");
-    if (this.state.minAmount !== undefined && !(this.state.minAmount instanceof BigInteger)) this.state.minAmount = BigInteger.parse(this.state.minAmount);
-    if (this.state.maxAmount !== undefined && !(this.state.maxAmount instanceof BigInteger)) this.state.maxAmount = BigInteger.parse(this.state.maxAmount);
-    if (this.state.txQuery && !(this.state.txQuery instanceof MoneroTxQuery)) this.state.txQuery = new MoneroTxQuery(this.state.txQuery);
-    if (this.state.txQuery) this.state.txQuery.setOutputQuery(this);
-    if (this.state.isLocked !== undefined) throw new MoneroError("isLocked must be part of tx query, not output query");
-  }
-  
-  copy() {
-    return new MoneroOutputQuery(this);
-  }
-  
-  toJson() {
-    let json = Object.assign({}, this.state, super.toJson());
-    if (this.getMinAmount()) json.minAmount = this.getMinAmount().toString();
-    if (this.getMaxAmount()) json.maxAmount = this.getMaxAmount().toString();
-    delete json.txQuery;
-    return json;
-  }
-  
-  getMinAmount() {
-    return this.state.minAmount;
-  }
-
-  setMinAmount(minAmount) {
-    this.state.minAmount = minAmount;
-    return this;
-  }
-
-  getMaxAmount() {
-    return this.state.maxAmount;
-  }
-
-  setMaxAmount(maxAmount) {
-    this.state.maxAmount = maxAmount;
-    return this;
-  }
-  
-  getTxQuery() {
-    return this.state.txQuery;
-  }
-  
-  setTxQuery(txQuery) {
-    this.state.txQuery = txQuery;
-    if (txQuery) txQuery.state.outputQuery = this;
-    return this;
-  }
-  
-  getSubaddressIndices() {
-    return this.state.subaddressIndices;
-  }
-  
-  setSubaddressIndices(subaddressIndices) {
-    this.state.subaddressIndices = subaddressIndices;
-    return this;
-  }
-  
-  meetsCriteria(output, queryParent) {
-    if (!(output instanceof MoneroOutputWallet)) throw new Error("Output not given to MoneroOutputQuery.meetsCriteria(output)");
-    if (queryParent === undefined) queryParent = true;
-    
-    // filter on output
-    if (this.getAccountIndex() !== undefined && this.getAccountIndex() !== output.getAccountIndex()) return false;
-    if (this.getSubaddressIndex() !== undefined && this.getSubaddressIndex() !== output.getSubaddressIndex()) return false;
-    if (this.getAmount() !== undefined && this.getAmount().compare(output.getAmount()) !== 0) return false;
-    if (this.isSpent() !== undefined && this.isSpent() !== output.isSpent()) return false;
-    if (this.isFrozen() !== undefined && this.isFrozen() !== output.isFrozen()) return false;
-    
-    // filter on output's key image
-    if (this.getKeyImage() !== undefined) {
-      if (output.getKeyImage() === undefined) return false;
-      if (this.getKeyImage().getHex() !== undefined && this.getKeyImage().getHex() !== output.getKeyImage().getHex()) return false;
-      if (this.getKeyImage().getSignature() !== undefined && this.getKeyImage().getSignature() !== output.getKeyImage().getSignature()) return false;
-    }
-    
-    // filter on extensions
-    if (this.getSubaddressIndices() !== undefined && !this.getSubaddressIndices().includes(output.getSubaddressIndex())) return false;
-    
-    // filter with tx query
-    if (this.getTxQuery() && !this.getTxQuery().meetsCriteria(output.getTx(), false)) return false;
-    
-    // filter on remaining fields
-    if (this.getMinAmount() !== undefined && (output.getAmount() === undefined || output.getAmount().compare(this.getMinAmount()) < 0)) return false;
-    if (this.getMaxAmount() !== undefined && (output.getAmount() === undefined || output.getAmount().compare(this.getMaxAmount()) > 0)) return false;
-    
-    // output meets query
-    return true;
-  }
-}
-
-MoneroOutputQuery._EMPTY_OUTPUT = new MoneroOutputWallet();
-
-module.exports = MoneroOutputQuery;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_wallet_model_MoneroOutputWallet.js.html b/docs/src_main_js_wallet_model_MoneroOutputWallet.js.html deleted file mode 100644 index b181b17a9..000000000 --- a/docs/src_main_js_wallet_model_MoneroOutputWallet.js.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - JSDoc: Source: src/main/js/wallet/model/MoneroOutputWallet.js - - - - - - - - - - -
- -

Source: src/main/js/wallet/model/MoneroOutputWallet.js

- - - - - - -
-
-
const assert = require("assert");
-const GenUtils = require("../../common/GenUtils");
-const MoneroOutput = require("../../daemon/model/MoneroOutput");
-
-/**
- * Models a Monero output with wallet extensions.
- * 
- * @class
- * @extends {MoneroOutput}
- */
-class MoneroOutputWallet extends MoneroOutput {
-  
-  /**
-   * Construct the model.
-   * 
-   * @param {MoneroOutputWallet|object} state is existing state to initialize from (optional)
-   */
-  constructor(state) {
-    super(state);
-  }
-  
-  getAccountIndex() {
-    return this.state.accountIndex;
-  }
-
-  setAccountIndex(accountIndex) {
-    this.state.accountIndex = accountIndex;
-    return this;
-  }
-
-  getSubaddressIndex() {
-    return this.state.subaddressIndex;
-  }
-
-  setSubaddressIndex(subaddressIndex) {
-    this.state.subaddressIndex = subaddressIndex;
-    return this;
-  }
-  
-  isSpent() {
-    return this.state.isSpent;
-  }
-
-  setIsSpent(isSpent) {
-    this.state.isSpent = isSpent;
-    return this;
-  }
-  
-  /**
-   * Indicates if this output has been deemed 'malicious' and will therefore
-   * not be spent by the wallet.
-   * 
-   * @return Boolean is whether or not this output is frozen
-   */
-  isFrozen() {
-    return this.state.isFrozen;
-  }
-
-  setIsFrozen(isFrozen) {
-    this.state.isFrozen = isFrozen;
-    return this;
-  }
-  
-  isLocked() {
-    if (this.getTx() === undefined) return undefined;
-    return this.getTx().isLocked();
-  }
-  
-  copy() {
-    return new MoneroOutputWallet(this.toJson());
-  }
-  
-  toJson() {
-    let json = Object.assign({}, this.state, super.toJson());
-    delete json.tx;
-    return json;
-  }
-  
-  /**
-   * Updates this output by merging the latest information from the given
-   * output.
-   * 
-   * Merging can modify or build references to the output given so it
-   * should not be re-used or it should be copied before calling this method.
-   * 
-   * @param output is the output to merge into this one
-   */
-  merge(output) {
-    assert(output instanceof MoneroOutputWallet);
-    if (this === output) return;
-    super.merge(output);
-    this.setAccountIndex(GenUtils.reconcile(this.getAccountIndex(), output.getAccountIndex()));
-    this.setSubaddressIndex(GenUtils.reconcile(this.getSubaddressIndex(), output.getSubaddressIndex()));
-    this.setIsSpent(GenUtils.reconcile(this.isSpent(), output.isSpent(), {resolveTrue: true})); // output can become spent
-    this.setIsFrozen(GenUtils.reconcile(this.isFrozen(), output.isFrozen()));
-    return this;
-  }
-  
-  toString(indent) {
-    let str = super.toString(indent) + "\n"
-    str += GenUtils.kvLine("Account index", this.getAccountIndex(), indent);
-    str += GenUtils.kvLine("Subaddress index", this.getSubaddressIndex(), indent);
-    str += GenUtils.kvLine("Is spent", this.isSpent(), indent);
-    str += GenUtils.kvLine("Is frozen", this.isFrozen(), indent);
-    return str.slice(0, str.length - 1);  // strip last newline
-  }
-}
-
-module.exports = MoneroOutputWallet;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_wallet_model_MoneroSubaddress.js.html b/docs/src_main_js_wallet_model_MoneroSubaddress.js.html deleted file mode 100644 index 74d528efc..000000000 --- a/docs/src_main_js_wallet_model_MoneroSubaddress.js.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - JSDoc: Source: src/main/js/wallet/model/MoneroSubaddress.js - - - - - - - - - - -
- -

Source: src/main/js/wallet/model/MoneroSubaddress.js

- - - - - - -
-
-
const BigInteger = require("../../common/biginteger").BigInteger;
-const GenUtils = require("../../common/GenUtils");
-const assert = require("assert");
-
-/**
- * Monero subaddress model.
- */
-class MoneroSubaddress {
-  
-  constructor(stateOrAddress, accountIndex, index) {
-    if (stateOrAddress === undefined || typeof stateOrAddress === "string") {
-      this.state = {};
-      this.setAddress(stateOrAddress);
-      this.setAccountIndex(accountIndex);
-      this.setIndex(index);
-    } else {
-      this.state = stateOrAddress;
-      assert(accountIndex === undefined && index === undefined, "Can construct MoneroSubaddress with object or params but not both");
-      if (this.state.balance !== undefined && !(this.state.balance instanceof BigInteger)) this.state.balance = BigInteger.parse(this.state.balance);
-      if (this.state.unlockedBalance !== undefined && !(this.state.unlockedBalance instanceof BigInteger)) this.state.unlockedBalance = BigInteger.parse(this.state.unlockedBalance);
-    }
-  }
-  
-  toJson() {
-    let json = Object.assign({}, this.state);
-    if (json.balance) json.balance = json.balance.toString();
-    if (json.unlockedBalance) json.unlockedBalance = json.unlockedBalance.toString();
-    return json;
-  }
-  
-  getAccountIndex() {
-    return this.state.accountIndex;
-  }
-
-  setAccountIndex(accountIndex) {
-    this.state.accountIndex = accountIndex;
-    return this;
-  }
-
-  getIndex() {
-    return this.state.index;
-  }
-
-  setIndex(index) {
-    this.state.index = index;
-    return this;
-  }
-  
-  getAddress() {
-    return this.state.address;
-  }
-
-  setAddress(address) {
-    this.state.address = address;
-    return this;
-  }
-
-  getLabel() {
-    return this.state.label;
-  }
-
-  setLabel(label) {
-    this.state.label = label;
-    return this;
-  }
-
-  getBalance() {
-    return this.state.balance;
-  }
-
-  setBalance(balance) {
-    this.state.balance = balance;
-    return this;
-  }
-
-  getUnlockedBalance() {
-    return this.state.unlockedBalance;
-  }
-
-  setUnlockedBalance(unlockedBalance) {
-    this.state.unlockedBalance = unlockedBalance;
-    return this;
-  }
-
-  getNumUnspentOutputs() {
-    return this.state.numUnspentOutputs;
-  }
-
-  setNumUnspentOutputs(numUnspentOutputs) {
-    this.state.numUnspentOutputs = numUnspentOutputs;
-    return this;
-  }
-
-  isUsed() {
-    return this.state.isUsed;
-  }
-
-  setIsUsed(isUsed) {
-    this.state.isUsed = isUsed;
-    return this;
-  }
-
-  getNumBlocksToUnlock() {
-    return this.state.numBlocksToUnlock;
-  }
-
-  setNumBlocksToUnlock(numBlocksToUnlock) {
-    this.state.numBlocksToUnlock = numBlocksToUnlock;
-    return this;
-  }
-  
-  toString(indent) {
-    let str = "";
-    str += GenUtils.kvLine("Account index", this.getAccountIndex(), indent);
-    str += GenUtils.kvLine("Subaddress index", this.getIndex(), indent);
-    str += GenUtils.kvLine("Address", this.getAddress(), indent);
-    str += GenUtils.kvLine("Label", this.getLabel(), indent);
-    str += GenUtils.kvLine("Balance", this.getBalance(), indent);
-    str += GenUtils.kvLine("Unlocked balance", this.getUnlockedBalance(), indent);
-    str += GenUtils.kvLine("Num unspent outputs", this.getNumUnspentOutputs(), indent);
-    str += GenUtils.kvLine("Is used", this.isUsed(), indent);
-    str += GenUtils.kvLine("Num blocks to unlock", this.getNumBlocksToUnlock(), indent);
-    return str.slice(0, str.length - 1);  // strip last newline
-  }
-}
-
-module.exports = MoneroSubaddress;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_wallet_model_MoneroSyncResult.js.html b/docs/src_main_js_wallet_model_MoneroSyncResult.js.html deleted file mode 100644 index 4cd08e1e1..000000000 --- a/docs/src_main_js_wallet_model_MoneroSyncResult.js.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - JSDoc: Source: src/main/js/wallet/model/MoneroSyncResult.js - - - - - - - - - - -
- -

Source: src/main/js/wallet/model/MoneroSyncResult.js

- - - - - - -
-
-
/**
- * Result from syncing a Monero wallet.
- */
-class MoneroSyncResult {
-  
-  constructor(numBlocksFetched, receivedMoney) {
-    this.setNumBlocksFetched(numBlocksFetched);
-    this.setReceivedMoney(receivedMoney);
-  }
-  
-  getNumBlocksFetched() {
-    return this.numBlocksFetched;
-  }
-  
-  setNumBlocksFetched(numBlocksFetched) {
-    this.numBlocksFetched = numBlocksFetched;
-    return this;
-  }
-  
-  getReceivedMoney() {
-    return this.receivedMoney;
-  }
-  
-  setReceivedMoney(receivedMoney) {
-    this.receivedMoney = receivedMoney;
-    return this;
-  }
-}
-
-module.exports = MoneroSyncResult;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_wallet_model_MoneroTransfer.js.html b/docs/src_main_js_wallet_model_MoneroTransfer.js.html deleted file mode 100644 index 92b32a3e6..000000000 --- a/docs/src_main_js_wallet_model_MoneroTransfer.js.html +++ /dev/null @@ -1,178 +0,0 @@ - - - - - JSDoc: Source: src/main/js/wallet/model/MoneroTransfer.js - - - - - - - - - - -
- -

Source: src/main/js/wallet/model/MoneroTransfer.js

- - - - - - -
-
-
const assert = require("assert");
-const BigInteger = require("../../common/biginteger").BigInteger;
-const GenUtils = require("../../common/GenUtils");
-
-/**
- * Models a base transfer of funds to or from the wallet.
- * 
- * @class
- */
-class MoneroTransfer {
-  
-  /**
-   * Construct the model.
-   * 
-   * @param {MoneroTransfer|object} state is existing state to initialize from (optional)
-   */
-  constructor(state) {
-    
-    // initialize internal state
-    if (!state) state = {};
-    else if (state instanceof MoneroTransfer) state = state.toJson();
-    else if (typeof state === "object") state = Object.assign({}, state);
-    else throw new MoneroError("state must be a MoneroTransfer or JavaScript object");
-    this.state = state;
-    
-    // deserialize fields if necessary
-    if (state.amount !== undefined && !(state.amount instanceof BigInteger)) state.amount = BigInteger.parse(state.amount);
-    
-    // validate state
-    this._validate();
-  }
-  
-  copy() {
-    return new MoneroTransfer(this);
-  }
-  
-  toJson() {
-    let json = Object.assign({}, this.state);
-    if (this.getAmount()) json.amount = this.getAmount().toString()
-    delete json.tx; // parent tx is not serialized
-    return json;
-  }
-  
-  getTx() {
-    return this.state.tx;
-  }
-  
-  setTx(tx) {
-    this.state.tx = tx;
-    return this;
-  }
-  
-  isOutgoing() {
-    let isIncoming = this.isIncoming();
-    assert(typeof isIncoming === "boolean");
-    return !isIncoming;
-  }
-  
-  isIncoming() {
-    throw new Error("Subclass must implement");
-  }
-
-  getAccountIndex() {
-    return this.state.accountIndex;
-  }
-
-  setAccountIndex(accountIndex) {
-    this.state.accountIndex = accountIndex;
-    this._validate();
-    return this;
-  }
-
-  getAmount() {
-    return this.state.amount;
-  }
-
-  setAmount(amount) {
-    this.state.amount = amount;
-    return this;
-  }
-  
-  /**
-   * Updates this transaction by merging the latest information from the given
-   * transaction.
-   * 
-   * Merging can modify or build references to the transfer given so it
-   * should not be re-used or it should be copied before calling this method.
-   * 
-   * @param transfer is the transfer to merge into this one
-   * @return {MoneroTransfer} the merged transfer
-   */
-  merge(transfer) {
-    assert(transfer instanceof MoneroTransfer);
-    if (this === transfer) return this;
-    
-    // merge transactions if they're different which comes back to merging transfers
-    if (this.getTx() !== transfer.getTx()) {
-      this.getTx().merge(transfer.getTx());
-      return this;
-    }
-    
-    // otherwise merge transfer fields
-    this.setAccountIndex(GenUtils.reconcile(this.getAccountIndex(), transfer.getAccountIndex()));
-    
-    // TODO monero-project: failed tx in pool (after testUpdateLockedDifferentAccounts()) causes non-originating saved wallets to return duplicate incoming transfers but one has amount of 0
-    if (this.getAmount() !== undefined && transfer.getAmount() !== undefined && this.getAmount().compare(transfer.getAmount()) !== 0 && (this.getAmount().compare(BigInteger.parse("0")) === 0 || transfer.getAmount().compare(BigInteger.parse("0")) === 0)) {
-      console.warn("monero-project returning transfers with 0 amount/numSuggestedConfirmations");
-    } else {
-      this.setAmount(GenUtils.reconcile(this.getAmount(), transfer.getAmount()));
-    }
-    
-    return this;
-  }
-  
-  toString(indent = 0) {
-    let str = "";
-    str += GenUtils.kvLine("Is incoming", this.isIncoming(), indent);
-    str += GenUtils.kvLine("Account index", this.getAccountIndex(), indent);
-    str += GenUtils.kvLine("Amount", this.getAmount() ? this.getAmount().toString() : undefined, indent);
-    return str === "" ? str :  str.slice(0, str.length - 1);  // strip last newline
-  }
-  
-  _validate() {
-    if (this.getAccountIndex() !== undefined && this.getAccountIndex() < 0) throw new MoneroError("Account index must be >= 0");
-  }
-}
-
-module.exports = MoneroTransfer;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_wallet_model_MoneroTransferQuery.js.html b/docs/src_main_js_wallet_model_MoneroTransferQuery.js.html deleted file mode 100644 index d1889c1df..000000000 --- a/docs/src_main_js_wallet_model_MoneroTransferQuery.js.html +++ /dev/null @@ -1,271 +0,0 @@ - - - - - JSDoc: Source: src/main/js/wallet/model/MoneroTransferQuery.js - - - - - - - - - - -
- -

Source: src/main/js/wallet/model/MoneroTransferQuery.js

- - - - - - -
-
-
const MoneroIncomingTransfer = require("./MoneroIncomingTransfer");
-const MoneroOutgoingTransfer = require("./MoneroOutgoingTransfer");
-const MoneroTransfer = require("./MoneroTransfer");
-const MoneroError = require("../../common/MoneroError")
-
-/**
- * Configuration to query wallet transfers.
- * 
- * @extends {MoneroTransfer}
- */
-class MoneroTransferQuery extends MoneroTransfer {
-  
-  /**
-   * <p>Construct the transfer query.</p>
-   * 
-   * <p>Example:</p>
-   * 
-   * <code>
-   * &sol;&sol; get incoming transfers to account 0, subaddress 1<br>
-   * let transfers = await wallet.getTransfers({<br>
-   * &nbsp;&nbsp; accountIndex: 0,<br>
-   * &nbsp;&nbsp; subaddressIndex: 0<br>
-   * });
-   * </code>
-   * 
-   * <p>All configuration is optional.  All transfers are returned except those that don't meet criteria defined in this query.</p>
-   * 
-   * @param {object} config - transfer query configuration (optional)
-   * @param {BigInteger} config.amount - get transfers with this amount
-   * @param {int} config.accountIndex - get transfers to/from this account index
-   * @param {int} config.subaddressIndex - get transfers to/from this subaddress index
-   * @param {int[]} config.subaddressIndices - get transfers to/from these subaddress indices
-   * @param {string} config.address - get transfers to/from this wallet address
-   * @param {string[]} config.addresses - get transfers to/from these wallet addresses
-   * @param {boolean} config.isIncoming - get transfers which are incoming if true
-   * @param {boolean} config.isOutgoing - get transfers which are outgoing if true
-   * @param {boolean} config.hasDestinations - get transfers with known destinations if true (destinations are only stored locally with the wallet)
-   * @param {object|MoneroTxQuery} config.txQuery - get transfers whose tx match this tx query
-   */
-  constructor(config) {
-    super(config);
-    
-    // deserialize if necessary
-    const MoneroTxQuery = require("./MoneroTxQuery");
-    if (this.state.txQuery && !(this.state.txQuery instanceof MoneroTxQuery)) this.state.txQuery = new MoneroTxQuery(this.state.txQuery);
-    if (this.state.txQuery) this.state.txQuery.setTransferQuery(this);
-    
-    // alias isOutgoing to isIncoming
-    if (this.state.isOutgoing !== undefined) this.state.isIncoming = !this.state.isOutgoing;
-    
-    // validate state
-    this._validate();
-  }
-  
-  copy() {
-    return new MoneroTransferQuery(this);
-  }
-  
-  toJson() {
-    let json = Object.assign({}, this.state, super.toJson());
-    delete json.txQuery;
-    return json;
-  }
-  
-  getTxQuery() {
-    return this.state.txQuery;
-  }
-  
-  setTxQuery(txQuery) {
-    this.state.txQuery = txQuery;
-    if (txQuery) txQuery.state.transferQuery = this;
-    return this;
-  }
-  
-  isIncoming() {
-    return this.state.isIncoming;
-  }
-
-  setIsIncoming(isIncoming) {
-    this.state.isIncoming = isIncoming;
-    return this;
-  }
-  
-  isOutgoing() {
-    return this.state.isIncoming === undefined ? undefined : !this.state.isIncoming;
-  }
-  
-  setIsOutgoing(isOutgoing) {
-    this.state.isIncoming = isOutgoing === undefined ? undefined : !isOutgoing;
-    return this;
-  }
-  
-  getAddress() {
-    return this.state.address;
-  }
-
-  setAddress(address) {
-    this.state.address = address;
-    return this;
-  }
-  
-  getAddresses() {
-    return this.state.addresses;
-  }
-
-  setAddresses(addresses) {
-    this.state.addresses = addresses;
-    return this;
-  }
-  
-  getSubaddressIndex() {
-    return this.state.subaddressIndex;
-  }
-  
-  setSubaddressIndex(subaddressIndex) {
-    this.state.subaddressIndex = subaddressIndex;
-    this._validate();
-    return this;
-  }
-  
-  getSubaddressIndices() {
-    return this.state.subaddressIndices;
-  }
-  
-  setSubaddressIndices(subaddressIndices) {
-    this.state.subaddressIndices = subaddressIndices;
-    this._validate();
-    return this;
-  }
-  
-  getDestinations() {
-    return this.state.destinations;
-  }
-  
-  setDestinations(destinations) {
-    this.state.destinations = destinations;
-    return this;
-  }
-  
-  hasDestinations() {
-    return this.state.hasDestinations;
-  }
-  
-  setHasDestinations(hasDestinations) {
-    this.state.hasDestinations = hasDestinations;
-    return this;
-  }
-  
-  /**
-   * Convenience method to query outputs by the locked state of their tx.
-   * 
-   * @param isLocked specifies if the output's tx must be locked or unlocked (optional)
-   * @return {MoneroOutputQuery} this query for chaining
-   */
-  setIsLocked(isLocked) {
-    if (this.state.txQuery === undefined) this.state.txQuery = new MoneroTxQuery();
-    this.state.txQuery.setIsLocked(isLocked);
-    return this;
-  }
-  
-  meetsCriteria(transfer, queryParent) {
-    if (!(transfer instanceof MoneroTransfer)) throw new Error("Transfer not given to MoneroTransferQuery.meetsCriteria(transfer)");
-    if (queryParent === undefined) queryParent = true;
-    
-    // filter on common fields
-    if (this.isIncoming() !== undefined && this.isIncoming() !== transfer.isIncoming()) return false;
-    if (this.isOutgoing() !== undefined && this.isOutgoing() !== transfer.isOutgoing()) return false;
-    if (this.getAmount() !== undefined && this.getAmount().compare(transfer.getAmount()) !== 0) return false;
-    if (this.getAccountIndex() !== undefined && this.getAccountIndex() !== transfer.getAccountIndex()) return false;
-    
-    // filter on incoming fields
-    if (transfer instanceof MoneroIncomingTransfer) {
-      if (this.hasDestinations()) return false;
-      if (this.getAddress() !== undefined && this.getAddress() !== transfer.getAddress()) return false;
-      if (this.getAddresses() !== undefined && !this.getAddresses().includes(transfer.getAddress())) return false;
-      if (this.getSubaddressIndex() !== undefined && this.getSubaddressIndex() !== transfer.getSubaddressIndex()) return false;
-      if (this.getSubaddressIndices() !== undefined && !this.getSubaddressIndices().includes(transfer.getSubaddressIndex())) return false;
-    }
-
-    // filter on outgoing fields
-    else if (transfer instanceof MoneroOutgoingTransfer) {
-      
-      // filter on addresses which must have overlap
-      if (this.getAddress() !== undefined && (transfer.getAddresses() === undefined || !transfer.getAddresses().includes(this.getAddress()))) return false;   // TODO: will filter all transfers that don't contain addresses (outgoing txs might not have this field initialized)
-      if (this.getAddresses() !== undefined) {
-        if (!transfer.getAddresses()) return false;
-        if (!this.getAddresses().some(address => transfer.getAddresses().includes(address))) return false;
-      }
-      
-      // filter on subaddress indices
-      if (this.getSubaddressIndex() !== undefined && (transfer.getSubaddressIndices() === undefined || !transfer.getSubaddressIndices().includes(this.getSubaddressIndex()))) return false;
-      if (this.getSubaddressIndices() !== undefined) {
-        if (!transfer.getSubaddressIndices()) return false;
-        if (!this.getSubaddressIndices().some(subaddressIdx => transfer.getSubaddressIndices().includes(subaddressIdx))) return false;
-      }
-      
-      // filter on having destinations
-      if (this.hasDestinations() !== undefined) {
-        if (this.hasDestinations() && transfer.getDestinations() === undefined) return false;
-        if (!this.hasDestinations() && transfer.getDestinations() !== undefined) return false;
-      }
-      
-      // filter on destinations TODO: start with test for this
-//    if (this.getDestionations() !== undefined && this.getDestionations() !== transfer.getDestionations()) return false;
-    }
-    
-    // otherwise invalid type
-    else throw new Error("Transfer must be MoneroIncomingTransfer or MoneroOutgoingTransfer");
-    
-    // filter with tx filter
-    if (queryParent && this.getTxQuery() !== undefined && !this.getTxQuery().meetsCriteria(transfer.getTx())) return false;    
-    return true;
-  }
-  
-  _validate() {
-    if (this.getSubaddressIndex() !== undefined && this.getSubaddressIndex() < 0) throw new MoneroError("Subaddress index must be >= 0");
-    if (this.getSubaddressIndices() !== undefined) for (let subaddressIdx of this.getSubaddressIndices()) if (subaddressIdx < 0) throw new MoneroError("Subaddress indices must be >= 0");
-  }
-}
-
-module.exports = MoneroTransferQuery;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_wallet_model_MoneroTxConfig.js.html b/docs/src_main_js_wallet_model_MoneroTxConfig.js.html deleted file mode 100644 index c18df1bb7..000000000 --- a/docs/src_main_js_wallet_model_MoneroTxConfig.js.html +++ /dev/null @@ -1,390 +0,0 @@ - - - - - JSDoc: Source: src/main/js/wallet/model/MoneroTxConfig.js - - - - - - - - - - -
- -

Source: src/main/js/wallet/model/MoneroTxConfig.js

- - - - - - -
-
-
const assert = require("assert");
-const BigInteger = require("../../common/biginteger").BigInteger;
-const GenUtils = require("../../common/GenUtils");
-const MoneroDestination = require("./MoneroDestination");
-const MoneroError = require("../../common/MoneroError");
-
-/**
- * Configures a transaction to send, sweep, or create a payment URI.
- */
-class MoneroTxConfig {
-  
-  /**
-   * <p>Generic request to transfer funds from a wallet.</p>
-   * 
-   * <p>Examples:</p>
-   * 
-   * <code>
-   * let config1 = new MoneroTxConfig({<br>
-   * &nbsp;&nbsp; accountIndex: 0,<br>
-   * &nbsp;&nbsp; address: "59aZULsUF3YN...",<br>
-   * &nbsp;&nbsp; amount: new BigInteger("500000"),<br>
-   * &nbsp;&nbsp; priority: MoneroTxPriority.NORMAL,<br>
-   * &nbsp;&nbsp; relay: true<br>
-   * });<br><br>
-   * </code>
-   * 
-   * @param {MoneroTxConfig|object} config - configures the transaction to create (optional)
-   * @param {string} config.address - single destination address
-   * @param {BigInteger} config.amount - single destination amount
-   * @param {int} config.accountIndex - source account index to transfer funds from
-   * @param {int} config.subaddressIndex - source subaddress index to transfer funds from
-   * @param {int[]} config.subaddressIndices - source subaddress indices to transfer funds from
-   * @param {boolean} config.relay - relay the transaction to peers to commit to the blockchain
-   * @param {MoneroTxPriority} config.priority - transaction priority (default MoneroTxPriority.NORMAL)
-   * @param {MoneroDestination[]} config.destinations - addresses and amounts in a multi-destination tx
-   * @param {int[]} config.subtractFeeFrom - list of destination indices to split the transaction fee
-   * @param {string} config.paymentId - transaction payment ID
-   * @param {BigInteger} config.unlockTime - minimum height or timestamp for the transaction to unlock (default 0)
-   * @param {string} config.note - transaction note saved locally with the wallet
-   * @param {string} config.recipientName - recipient name saved locally with the wallet
-   * @param {boolean} config.canSplit - allow funds to be transferred using multiple transactions
-   * @param {BigInteger} config.belowAmount - for sweep requests, include outputs below this amount when sweeping wallet, account, subaddress, or all unlocked funds 
-   * @param {boolean} config.sweepEachSubaddress - for sweep requests, sweep each subaddress individually instead of together if true
-   * @param {string} config.keyImage - key image to sweep (ignored except in sweepOutput() requests)
-   */
-  constructor(config, relaxValidation) {  // relax validation for internal use to process json from rpc or cpp
-    if (arguments.length > 2) throw new MoneroError("MoneroTxConfig can be constructed with only two parameters but was given " + arguments.length)
-    
-    // initialize internal state
-    if (!config) this.state = {};
-    else if (config instanceof MoneroTxConfig) this.state = config.toJson();
-    else if (typeof config === "object") {
-      this.state = Object.assign({}, config);
-      if (relaxValidation) {
-        if (typeof this.state.amount === "number") this.state.amount = BigInteger.parse(this.state.amount);
-        if (typeof this.state.unlockTime === "number") this.state.unlockTime = BigInteger.parse(this.state.unlockTime);
-        if (typeof this.state.belowAmount === "number") this.state.belowAmount = BigInteger.parse(this.state.belowAmount);
-      }
-
-      // check for unsupported fields
-      for (let key of Object.keys(config)) {
-        if (!GenUtils.arrayContains(MoneroTxConfig.SUPPORTED_FIELDS, key)) {
-          throw new MoneroError("Unsupported field in MoneroTxConfig: '" + key + "'");
-        }
-      }
-    }
-    else throw new MoneroError("Invalid argument given to MoneroTxConfig: " + typeof config);
-
-    // deserialize BigIntegers
-    if (this.state.fee !== undefined && !(this.state.fee instanceof BigInteger)) this.state.fee = BigInteger.parse(this.state.fee);
-    if (this.state.unlockTime !== undefined && !(this.state.unlockTime instanceof BigInteger)) this.state.unlockTime = BigInteger.parse(this.state.unlockTime);
-    if (this.state.belowAmount !== undefined && !(this.state.belowAmount instanceof BigInteger)) this.state.belowAmount = BigInteger.parse(this.state.belowAmount);
-    
-    // deserialize destinations
-    if (this.state.destinations) {
-      assert(this.state.address === undefined && this.state.amount === undefined, "Tx configuration may specify destinations or an address/amount but not both");
-      this.setDestinations(this.state.destinations.map(destination => destination instanceof MoneroDestination ? destination : new MoneroDestination(destination)));
-    }
-    
-    // alias 'address' and 'amount' to single destination to support e.g. createTx({address: "..."})
-    if (this.state.address || this.state.amount) {
-      assert(!this.state.destinations, "Tx configuration may specify destinations or an address/amount but not both");
-      this.setAddress(this.state.address);
-      this.setAmount(this.state.amount);
-      delete this.state.address;
-      delete this.state.amount;
-    }
-    
-    // alias 'subaddressIndex' to subaddress indices
-    if (this.state.subaddressIndex !== undefined) {
-      this.setSubaddressIndices([this.state.subaddressIndex]);
-      delete this.state.subaddressIndex;
-    }
-  }
-  
-  copy() {
-    return new MoneroTxConfig(this);
-  }
-  
-  toJson() {
-    let json = Object.assign({}, this.state); // copy state
-    if (this.getDestinations()) {
-      json.destinations = [];
-      for (let destination of this.getDestinations()) json.destinations.push(destination.toJson());
-    }
-    if (this.getFee()) json.fee = this.getFee().toString();
-    if (this.getUnlockTime()) json.unlockTime = this.getUnlockTime().toString();
-    if (this.getBelowAmount()) json.belowAmount = this.getBelowAmount().toString();
-    return json;
-  }
-  
-  /**
-   * Set the address of a single-destination configuration.
-   * 
-   * @param {string} address - the address to set for the single destination
-   * @return {MoneroTxConfig} this configuration for chaining
-   */
-  setAddress(address) {
-    if (this.state.destinations !== undefined && this.state.destinations.length > 1) throw new MoneroError("Cannot set address because MoneroTxConfig already has multiple destinations");
-    if (this.state.destinations === undefined || this.state.destinations.length === 0) this.addDestination(new MoneroDestination(address));
-    else this.state.destinations[0].setAddress(address);
-    return this;
-  }
-  
-  /**
-   * Get the address of a single-destination configuration.
-   * 
-   * @return {string} the address of the single destination
-   */
-  getAddress() {
-    if (this.state.destinations === undefined || this.state.destinations.length !== 1) throw new MoneroError("Cannot get address because MoneroTxConfig does not have exactly one destination");
-    return this.state.destinations[0].getAddress();
-  }
-  
-  /**
-   * Set the amount of a single-destination configuration.
-   * 
-   * @param {BigInteger|string} amount - the amount to set for the single destination
-   * @return {MoneroTxConfig} this configuration for chaining
-   */
-  setAmount(amount) {
-    if (amount !== undefined && !(this.state.amount instanceof BigInteger)) {
-      if (typeof amount === "number") throw new MoneroError("Destination amount must be BigInteger or string");
-      try { amount = BigInteger.parse(amount); }
-      catch (err) { throw new MoneroError("Invalid destination amount: " + amount); }
-    }
-    if (this.state.destinations !== undefined && this.state.destinations.length > 1) throw new MoneroError("Cannot set amount because MoneroTxConfig already has multiple destinations");
-    if (this.state.destinations === undefined || this.state.destinations.length === 0) this.addDestination(new MoneroDestination(undefined, amount));
-    else this.state.destinations[0].setAmount(amount);
-    return this;
-  }
-  
-  /**
-   * Get the amount of a single-destination configuration.
-   * 
-   * @return {BigInteger} the amount of the single destination
-   */
-  getAmount() {
-    if (this.state.destinations === undefined || this.state.destinations.length !== 1) throw new MoneroError("Cannot get amount because MoneroTxConfig does not have exactly one destination");
-    return this.state.destinations[0].getAmount();
-  }
-  
-  addDestination(destinationOrAddress, amount) {
-    if (typeof destinationOrAddress === "string") return this.addDestination(new MoneroDestination(destinationOrAddress, amount));
-    assert(destinationOrAddress instanceof MoneroDestination);
-    if (this.state.destinations === undefined) this.state.destinations = [];
-    this.state.destinations.push(destinationOrAddress);
-    return this;
-  }
-  
-  getDestinations() {
-    return this.state.destinations;
-  }
-  
-  setDestinations(destinations) {
-    if (arguments.length > 1) destinations = Array.from(arguments);
-    this.state.destinations = destinations;
-    return this;
-  }
-  
-  setDestination(destination) {
-    return this.setDestinations(destination ? [destination] : destination);
-  }
-
-  getSubtractFeeFrom() {
-    return this.state.subtractFeeFrom;
-  }
-
-  setSubtractFeeFrom(destinationIndices) {
-    if (arguments.length > 1) destinationIndices = Array.from(arguments);
-    this.state.subtractFeeFrom = destinationIndices;
-    return this;
-  }
-  
-  getPaymentId() {
-    return this.state.paymentId;
-  }
-  
-  setPaymentId(paymentId) {
-    this.state.paymentId = paymentId;
-    return this;
-  }
-  
-  getPriority() {
-    return this.state.priority;
-  }
-  
-  setPriority(priority) {
-    this.state.priority = priority;
-    return this;
-  }
-  
-  getFee() {
-    return this.state.fee;
-  }
-  
-  setFee(fee) {
-    this.state.fee = fee;
-    return this;
-  }
-  
-  getAccountIndex() {
-    return this.state.accountIndex;
-  }
-  
-  setAccountIndex(accountIndex) {
-    this.state.accountIndex = accountIndex;
-    return this;
-  }
-  
-  setSubaddressIndex(subaddressIndex) {
-    this.setSubaddressIndices([subaddressIndex]);
-    return this;
-  }
-  
-  getSubaddressIndices() {
-    return this.state.subaddressIndices;
-  }
-  
-  setSubaddressIndices(subaddressIndices) {
-    if (arguments.length > 1) subaddressIndices = Array.from(arguments);
-    this.state.subaddressIndices = subaddressIndices;
-    return this;
-  }
-  
-  getUnlockTime() {
-    return this.state.unlockTime;
-  }
-  
-  setUnlockTime(unlockTime) {
-    if (unlockTime !== undefined) {
-      if (typeof unlockTime === "number") unlockTime = "" + unlockTime;
-      if (!(unlockTime instanceof BigInteger)) {
-        try { unlockTime = BigInteger.parse(unlockTime); }
-        catch (err) { throw new MoneroError("Invalid unlock time: " + unlockTime); }
-      }
-    }
-    this.state.unlockTime = unlockTime;
-    return this;
-  }
-  
-  getRelay() {
-    return this.state.relay;
-  }
-  
-  setRelay(relay) {
-    this.state.relay = relay;
-    return this;
-  }
-  
-  getCanSplit() {
-    return this.state.canSplit;
-  }
-  
-  setCanSplit(canSplit) {
-    this.state.canSplit = canSplit;
-    return this;
-  }
-  
-  getNote() {
-    return this.state.note;
-  }
-  
-  setNote(note) {
-    this.state.note = note;
-    return this;
-  }
-  
-  getRecipientName() {
-    return this.state.recipientName;
-  }
-  
-  setRecipientName(recipientName) {
-    this.state.recipientName = recipientName;
-    return this;
-  }
-  
-  // --------------------------- SPECIFIC TO SWEEP ----------------------------
-  
-  getBelowAmount() {
-    return this.state.belowAmount;
-  }
-  
-  setBelowAmount(belowAmount) {
-    this.state.belowAmount = belowAmount;
-    return this;
-  }
-  
-  getSweepEachSubaddress() {
-    return this.state.sweepEachSubaddress;
-  }
-  
-  setSweepEachSubaddress(sweepEachSubaddress) {
-    this.state.sweepEachSubaddress = sweepEachSubaddress;
-    return this;
-  }
-  
-  /**
-   * Get the key image hex of the output to sweep.
-   * 
-   * return {string} is the key image hex of the output to sweep
-   */
-  getKeyImage() {
-    return this.state.keyImage;
-  }
-  
-  /**
-   * Set the key image hex of the output to sweep.
-   * 
-   * @param {string} keyImage is the key image hex of the output to sweep
-   */
-  setKeyImage(keyImage) {
-    this.state.keyImage = keyImage;
-    return this;
-  }
-}
-
-MoneroTxConfig.SUPPORTED_FIELDS = ["address", "amount", "accountIndex", "subaddressIndex", "subaddressIndices", "relay", "priority", "destinations", "subtractFeeFrom", "paymentId", "unlockTime", "note", "recipientName", "canSplit", "belowAmount", "sweepEachSubaddress", "keyImage"];
-
-module.exports = MoneroTxConfig
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_wallet_model_MoneroTxPriority.js.html b/docs/src_main_js_wallet_model_MoneroTxPriority.js.html deleted file mode 100644 index 98507097a..000000000 --- a/docs/src_main_js_wallet_model_MoneroTxPriority.js.html +++ /dev/null @@ -1,78 +0,0 @@ - - - - - JSDoc: Source: src/main/js/wallet/model/MoneroTxPriority.js - - - - - - - - - - -
- -

Source: src/main/js/wallet/model/MoneroTxPriority.js

- - - - - - -
-
-
/**
- * Enumerates send priorities.
- * 
- * @hideconstructor
- */
-class MoneroTxPriority {}
-
-/**
- * Default priority (i.e. normal) (value=0).
- */
-MoneroTxPriority.DEFAULT = 0;
-
-/**
- * Unimportant priority (value=1).
- */
-MoneroTxPriority.UNIMPORTANT = 1;
-
-/**
- * Normal priority (value=2).
- */
-MoneroTxPriority.NORMAL = 2;
-
-/**
- * Elevated priority (value=3).
- */
-MoneroTxPriority.ELEVATED = 3;
-
-module.exports = MoneroTxPriority;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_wallet_model_MoneroTxQuery.js.html b/docs/src_main_js_wallet_model_MoneroTxQuery.js.html deleted file mode 100644 index 5f88c1297..000000000 --- a/docs/src_main_js_wallet_model_MoneroTxQuery.js.html +++ /dev/null @@ -1,350 +0,0 @@ - - - - - JSDoc: Source: src/main/js/wallet/model/MoneroTxQuery.js - - - - - - - - - - -
- -

Source: src/main/js/wallet/model/MoneroTxQuery.js

- - - - - - -
-
-
const assert = require("assert");
-const MoneroOutputQuery = require("./MoneroOutputQuery");
-const MoneroTransferQuery = require("./MoneroTransferQuery");
-const MoneroTxWallet = require("./MoneroTxWallet");
-
-/**
- * <p>Configuration to query transactions.</p>
- * 
- * @class
- * @extends {MoneroTxWallet}
- */
-class MoneroTxQuery extends MoneroTxWallet {
-  
-  /**
-   * <p>Construct the transaction query.</p>
-   * 
-   * <p>Example:</p>
-   * 
-   * <code>
-   * &sol;&sol; get transactions with unlocked incoming transfers to account 0<br>
-   * let txs = await wallet.getTxs({<br>
-   * &nbsp;&nbsp; isLocked: false,<br>
-   * &nbsp;&nbsp; transferQuery: {<br>
-   * &nbsp;&nbsp;&nbsp;&nbsp; isIncoming: true,<br>
-   * &nbsp;&nbsp;&nbsp;&nbsp; accountIndex: 0<br>
-   * &nbsp;&nbsp; }<br>
-   * });
-   * </code>
-   * 
-   * <p>All configuration is optional.  All transactions are returned except those that don't meet criteria defined in this query.</p>
-   * 
-   * @param {object} config - tx query configuration
-   * @param {string} config.hash - get a tx with this hash
-   * @param {string[]} config.txHashes - get txs with these hashes
-   * @param {int} config.height - get txs with this height
-   * @param {int} config.minHeight - get txs with height greater than or equal to this height
-   * @param {int} config.maxHeight - get txs with height less than or equal to this height
-   * @param {boolean} config.isConfirmed - get confirmed or unconfirmed txs
-   * @param {boolean} config.inTxPool - get txs in or out of the tx pool
-   * @param {boolean} config.relay - get txs with the same relay status
-   * @param {boolean} config.isRelayed - get relayed or non-relayed txs
-   * @param {boolean} config.isFailed - get failed or non-failed txs
-   * @param {boolean} config.isMinerTx - get miner or non-miner txs
-   * @param {boolean} config.isLocked - get locked or unlocked txs
-   * @param {boolean} config.isIncoming - get txs with or without incoming transfers
-   * @param {boolean} config.isOutgoing - get txs with or without outgoing transfers
-   * @param {string} config.paymentId - get txs with this payment ID
-   * @param {string} config.paymentIds - get txs with a payment ID among these payment IDs
-   * @param {boolean} config.hasPaymentId - get txs with or without payment IDs
-   * @param {object|MoneroTransferQuery} config.transferQuery - get txs with transfers matching this transfer query
-   * @param {object|MoneroOutputQuery} config.inputQuery - get txs with inputs matching this input query
-   * @param {object|MoneroOutputQuery} config.outputQuery - get txs with outputs matching this output query
-   */
-  constructor(config) {
-    super(config);
-    
-    // deserialize if necessary
-    if (this.state.transferQuery && !(this.state.transferQuery instanceof MoneroTransferQuery)) this.state.transferQuery = new MoneroTransferQuery(this.state.transferQuery);
-    if (this.state.inputQuery && !(this.state.inputQuery instanceof MoneroOutputQuery)) this.state.inputQuery = new MoneroOutputQuery(this.state.inputQuery);
-    if (this.state.outputQuery && !(this.state.outputQuery instanceof MoneroOutputQuery)) this.state.outputQuery = new MoneroOutputQuery(this.state.outputQuery);
-    
-    // link cycles
-    if (this.state.transferQuery) this.state.transferQuery.setTxQuery(this);
-    if (this.state.inputQuery) this.state.inputQuery.setTxQuery(this);
-    if (this.state.outputQuery) this.state.outputQuery.setTxQuery(this);
-    
-    // alias 'hash' to hashes
-    if (this.state.hash) {
-      this.setHashes([this.state.hash]);
-      delete this.state.hash;
-    }
-  }
-  
-  copy() {
-    return new MoneroTxQuery(this);
-  }
-  
-  toJson() {
-    let json = Object.assign({}, this.state, super.toJson()); // merge json onto inherited state
-    if (this.getTransferQuery()) json.transferQuery = this.getTransferQuery().toJson();
-    if (this.getInputQuery()) json.inputQuery = this.getInputQuery().toJson();
-    if (this.getOutputQuery()) json.outputQuery = this.getOutputQuery().toJson();
-    delete json.block;  // do not serialize parent block
-    return json;
-  }
-  
-  isIncoming() {
-    return this.state.isIncoming;
-  }
-  
-  setIsIncoming(isIncoming) {
-    this.state.isIncoming = isIncoming;
-    return this;
-  }
-  
-  isOutgoing() {
-    return this.state.isOutgoing;
-  }
-  
-  setIsOutgoing(isOutgoing) {
-    this.state.isOutgoing = isOutgoing;
-    return this;
-  }
-
-  getHashes() {
-    return this.state.hashes;
-  }
-
-  setHashes(hashes) {
-    this.state.hashes = hashes;
-    return this;
-  }
-  
-  setHash(hash) {
-    if (hash === undefined) return this.setHashes(undefined);
-    assert(typeof hash === "string");
-    return this.setHashes([hash]);
-  }
-  
-  hasPaymentId() {
-    return this.state.hasPaymentId;
-  }
-  
-  setHasPaymentId() {
-    this.state.hasPaymentId = hasPaymentId;
-    return this;
-  }
-  
-  getPaymentIds() {
-    return this.state.paymentIds;
-  }
-
-  setPaymentIds(paymentIds) {
-    this.state.paymentIds = paymentIds;
-    return this;
-  }
-  
-  setPaymentId(paymentId) {
-    if (paymentId === undefined) return this.setPaymentIds(undefined);
-    assert(typeof paymentId === "string");
-    return this.setPaymentIds([paymentId]);
-  }
-  
-  getHeight() {
-    return this.state.height;
-  }
-  
-  setHeight(height) {
-    this.state.height = height;
-    return this;
-  }
-  
-  getMinHeight() {
-    return this.state.minHeight;
-  }
-
-  setMinHeight(minHeight) {
-    this.state.minHeight = minHeight;
-    return this;
-  }
-
-  getMaxHeight() {
-    return this.state.maxHeight;
-  }
-
-  setMaxHeight(maxHeight) {
-    this.state.maxHeight = maxHeight;
-    return this;
-  }
-  
-  getIncludeOutputs() {
-    return this.state.includeOutputs;
-  }
-
-  setIncludeOutputs(includeOutputs) {
-    this.state.includeOutputs = includeOutputs;
-    return this;
-  }
-  
-  getTransferQuery() {
-    return this.state.transferQuery;
-  }
-  
-  setTransferQuery(transferQuery) {
-    this.state.transferQuery = transferQuery;
-    if (transferQuery) transferQuery.state.txQuery = this;
-    return this;
-  }
-  
-  getInputQuery() {
-    return this.state.inputQuery;
-  }
-  
-  setInputQuery(inputQuery) {
-    this.state.inputQuery = inputQuery;
-    if (inputQuery) inputQuery.state.txQuery = this;
-    return this;
-  }
-  
-  getOutputQuery() {
-    return this.state.outputQuery;
-  }
-  
-  setOutputQuery(outputQuery) {
-    this.state.outputQuery = outputQuery;
-    if (outputQuery) outputQuery.state.txQuery = this;
-    return this;
-  }
-  
-  meetsCriteria(tx, queryChildren) {
-    if (!(tx instanceof MoneroTxWallet)) throw new Error("Tx not given to MoneroTxQuery.meetsCriteria(tx)");
-    if (queryChildren === undefined) queryChildren = true;
-    
-    // filter on tx
-    if (this.getHash() !== undefined && this.getHash() !== tx.getHash()) return false;
-    if (this.getPaymentId() !== undefined && this.getPaymentId() !== tx.getPaymentId()) return false;
-    if (this.isConfirmed() !== undefined && this.isConfirmed() !== tx.isConfirmed()) return false;
-    if (this.inTxPool() !== undefined && this.inTxPool() !== tx.inTxPool()) return false;
-    if (this.getRelay() !== undefined && this.getRelay() !== tx.getRelay()) return false;
-    if (this.isRelayed() !== undefined && this.isRelayed() !== tx.isRelayed()) return false;
-    if (this.isFailed() !== undefined && this.isFailed() !== tx.isFailed()) return false;
-    if (this.isMinerTx() !== undefined && this.isMinerTx() !== tx.isMinerTx()) return false;
-    if (this.isLocked() !== undefined && this.isLocked() !== tx.isLocked()) return false;
-    
-    // filter on having a payment id
-    if (this.hasPaymentId() !== undefined) {
-      if (this.hasPaymentId() && tx.getPaymentId() === undefined) return false;
-      if (!this.hasPaymentId() && tx.getPaymentId() !== undefined) return false;
-    }
-    
-    // filter on incoming
-    if (this.isIncoming() !== undefined) {
-      if (this.isIncoming() && !tx.isIncoming()) return false;
-      if (!this.isIncoming() && tx.isIncoming()) return false;
-    }
-    
-    // filter on outgoing
-    if (this.isOutgoing() !== undefined) {
-      if (this.isOutgoing() && !tx.isOutgoing()) return false;
-      if (!this.isOutgoing() && tx.isOutgoing()) return false;
-    }
-    
-    // filter on remaining fields
-    let txHeight = tx.getBlock() === undefined ? undefined : tx.getBlock().getHeight();
-    if (this.getHashes() !== undefined && !this.getHashes().includes(tx.getHash())) return false;
-    if (this.getPaymentIds() !== undefined && !this.getPaymentIds().includes(tx.getPaymentId())) return false;
-    if (this.getHeight() !== undefined && (txHeight === undefined || txHeight !== this.getHeight())) return false;
-    if (this.getMinHeight() !== undefined && txHeight !== undefined && txHeight < this.getMinHeight()) return false; // do not filter unconfirmed
-    if (this.getMaxHeight() !== undefined && (txHeight === undefined || txHeight > this.getMaxHeight())) return false;
-    // TODO: filtering not complete
-    
-    // done if not querying transfers or outputs
-    if (!queryChildren) return true;
-    
-    // at least one transfer must meet transfer filter if defined
-    if (this.getTransferQuery()) {
-      let matchFound = false;
-      if (tx.getOutgoingTransfer() && this.getTransferQuery().meetsCriteria(tx.getOutgoingTransfer(), false)) matchFound = true;
-      else if (tx.getIncomingTransfers()) {
-        for (let incomingTransfer of tx.getIncomingTransfers()) {
-          if (this.getTransferQuery().meetsCriteria(incomingTransfer, false)) {
-            matchFound = true;
-            break;
-          }
-        }
-      }
-      if (!matchFound) return false;
-    }
-    
-    // at least one input must meet input query if defined
-    if (this.getInputQuery() !== undefined) {
-      if (tx.getInputs() === undefined || tx.getInputs().length === 0) return false;
-      let matchFound = false;
-      for (let input of tx.getInputs()) {
-        if (this.getInputQuery().meetsCriteria(input, false)) {
-          matchFound = true;
-          break;
-        }
-      }
-      if (!matchFound) return false;
-    }
-    
-    // at least one output must meet output query if defined
-    if (this.getOutputQuery() !== undefined) {
-      if (tx.getOutputs() === undefined || tx.getOutputs().length === 0) return false;
-      let matchFound = false;
-      for (let output of tx.getOutputs()) {
-        if (this.getOutputQuery().meetsCriteria(output, false)) {
-          matchFound = true;
-          break;
-        }
-      }
-      if (!matchFound) return false;
-    }
-    
-    return true;  // transaction meets filter criteria
-  }
-}
-
-module.exports = MoneroTxQuery;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_wallet_model_MoneroTxSet.js.html b/docs/src_main_js_wallet_model_MoneroTxSet.js.html deleted file mode 100644 index 358047dd3..000000000 --- a/docs/src_main_js_wallet_model_MoneroTxSet.js.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - JSDoc: Source: src/main/js/wallet/model/MoneroTxSet.js - - - - - - - - - - -
- -

Source: src/main/js/wallet/model/MoneroTxSet.js

- - - - - - -
-
-
const assert = require("assert");
-const GenUtils = require("../../common/GenUtils");
-const MoneroTxWallet = require("./MoneroTxWallet");
-const MoneroUtils = require("../../common/MoneroUtils");
-
-/**
- * Groups transactions who share common hex data which is needed in order to
- * sign and submit the transactions.
- * 
- * For example, multisig transactions created from createTxs() share a common
- * hex string which is needed in order to sign and submit the multisig
- * transactions.
- */
-class MoneroTxSet {
-  
-  constructor(state) {
-    
-    // initialize internal state
-    if (!state) state = {};
-    else if (typeof state === "object") state = Object.assign({}, state);
-    else throw new MoneroError("state must be JavaScript object");
-    this.state = state;
-    
-    // deserialize txs
-    if (state.txs) {
-      for (let i = 0; i < state.txs.length; i++) {
-        if (!(state.txs[i] instanceof MoneroTxWallet)) state.txs[i] = new MoneroTxWallet(state.txs[i]);
-        state.txs[i].setTxSet(this);
-      }
-    }
-  }
-  
-  toJson() {
-    let json = Object.assign({}, this.state); // copy state
-    if (this.getTxs()) {
-      json.txs = [];
-      for (let tx of this.getTxs()) json.txs.push(tx.toJson());
-    }
-    return json;
-  }
-
-  getTxs() {
-    return this.state.txs;
-  }
-
-  setTxs(txs) {
-    this.state.txs = txs;
-    return this;
-  }
-  
-  getMultisigTxHex() {
-    return this.state.multisigTxHex;
-  }
-  
-  setMultisigTxHex(multisigTxHex) {
-    this.state.multisigTxHex = multisigTxHex;
-    return this;
-  }
-  
-  getUnsignedTxHex() {
-    return this.state.unsignedTxHex;
-  }
-  
-  setUnsignedTxHex(unsignedTxHex) {
-    this.state.unsignedTxHex = unsignedTxHex;
-    return this;
-  }
-  
-  getSignedTxHex() {
-    return this.state.signedTxHex;
-  }
-  
-  setSignedTxHex(signedTxHex) {
-    this.state.signedTxHex = signedTxHex;
-    return this;
-  }
-  
-  merge(txSet) {
-    assert(txSet instanceof MoneroTxSet);
-    if (this === txSet) return this;
-    
-    // merge sets
-    this.setMultisigTxHex(GenUtils.reconcile(this.getMultisigTxHex(), txSet.getMultisigTxHex()));
-    this.setUnsignedTxHex(GenUtils.reconcile(this.getUnsignedTxHex(), txSet.getUnsignedTxHex()));
-    this.setSignedTxHex(GenUtils.reconcile(this.getSignedTxHex(), txSet.getSignedTxHex()));
-    
-    // merge txs
-    if (txSet.getTxs() !== undefined) {
-      for (let tx of txSet.getTxs()) {
-        tx.setTxSet(this);
-        MoneroUtils.mergeTx(this.getTxs(), tx);
-      }
-    }
-
-    return this;
-  }
-  
-  toString(indent = 0) {
-    let str = "";
-    str += GenUtils.kvLine("Multisig tx hex: ", this.getMultisigTxHex(), indent);
-    str += GenUtils.kvLine("Unsigned tx hex: ", this.getUnsignedTxHex(), indent);
-    str += GenUtils.kvLine("Signed tx hex: ", this.getSignedTxHex(), indent);
-    if (this.getTxs() !== undefined) {
-      str += GenUtils.kvLine("Txs", "", indent);
-      for (let tx of this.getTxs()) {
-        str += tx.toString(indent + 1) + "\n";
-      }
-    }
-    return str;
-  }
-}
-
-module.exports = MoneroTxSet;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_wallet_model_MoneroTxWallet.js.html b/docs/src_main_js_wallet_model_MoneroTxWallet.js.html deleted file mode 100644 index 7d6afe5e6..000000000 --- a/docs/src_main_js_wallet_model_MoneroTxWallet.js.html +++ /dev/null @@ -1,464 +0,0 @@ - - - - - JSDoc: Source: src/main/js/wallet/model/MoneroTxWallet.js - - - - - - - - - - -
- -

Source: src/main/js/wallet/model/MoneroTxWallet.js

- - - - - - -
-
-
const assert = require("assert");
-const BigInteger = require("../../common/biginteger").BigInteger;
-const GenUtils = require("../../common/GenUtils");
-const MoneroIncomingTransfer = require("./MoneroIncomingTransfer");
-const MoneroOutgoingTransfer = require("./MoneroOutgoingTransfer");
-const MoneroOutputWallet = require("./MoneroOutputWallet");
-const MoneroTx = require("../../daemon/model/MoneroTx");
-
-/**
- * Models a Monero transaction with wallet extensions.
- * 
- * @class
- * @extends {MoneroTx}
- */
-class MoneroTxWallet extends MoneroTx {
-  
-  /**
-   * Construct the model.
-   * 
-   * @param {MoneroTxWallet|object} state is existing state to initialize from (optional)
-   */
-  constructor(state) {
-    super(state);
-    if (state instanceof MoneroTxWallet && state.getTxSet()) this.setTxSet(state.getTxSet()); // preserve reference to tx set
-    state = this.state;
-    
-    // deserialize incoming transfers
-    if (state.incomingTransfers) {
-      for (let i = 0; i < state.incomingTransfers.length; i++) {
-        if (!(state.incomingTransfers[i] instanceof MoneroIncomingTransfer)) {
-          state.incomingTransfers[i] = new MoneroIncomingTransfer(Object.assign(state.incomingTransfers[i], {tx: this}));
-        }
-      }
-    }
-    
-    // deserialize outgoing transfer
-    if (state.outgoingTransfer && !(state.outgoingTransfer instanceof MoneroOutgoingTransfer)) {
-      this.setOutgoingTransfer(new MoneroOutgoingTransfer(Object.assign(state.outgoingTransfer, {tx: this})));
-    }
-    
-    // deserialize inputs
-    if (state.inputs) {
-      for (let i = 0; i < state.inputs.length; i++) {
-        if (!(state.inputs[i] instanceof MoneroOutputWallet)) {
-          state.inputs[i] = new MoneroOutputWallet(Object.assign(state.inputs[i].toJson(), {tx: this}));
-        }
-      }
-    }
-    
-    // deserialize outputs
-    if (state.outputs) {
-      for (let i = 0; i < state.outputs.length; i++) {
-        if (!(state.outputs[i] instanceof MoneroOutputWallet)) {
-          state.outputs[i] = new MoneroOutputWallet(Object.assign(state.outputs[i].toJson(), {tx: this}));
-        }
-      }
-    }
-    
-    // deserialize BigIntegers
-    if (state.inputSum !== undefined && !(state.inputSum instanceof BigInteger)) state.inputSum = BigInteger.parse(state.inputSum);
-    if (state.outputSum !== undefined && !(state.outputSum instanceof BigInteger)) state.outputSum = BigInteger.parse(state.outputSum);
-    if (state.changeAmount !== undefined && !(state.changeAmount instanceof BigInteger)) state.changeAmount = BigInteger.parse(state.changeAmount);
-  }
-  
-  toJson() {
-    let json = Object.assign({}, this.state, super.toJson()); // merge json onto inherited state
-    if (this.getIncomingTransfers()) {
-      json.incomingTransfers = [];
-      for (let incomingTransfer of this.getIncomingTransfers()) json.incomingTransfers.push(incomingTransfer.toJson());
-    }
-    if (this.getOutgoingTransfer()) json.outgoingTransfer = this.getOutgoingTransfer().toJson();
-    if (this.getInputSum()) json.inputSum = this.getInputSum().toString();
-    if (this.getOutputSum()) json.outputSum = this.getOutputSum().toString();
-    if (this.getChangeAmount()) json.changeAmount = this.getChangeAmount().toString();
-    delete json.block;  // do not serialize parent block
-    delete json.txSet;  // do not serialize parent tx set
-    return json;
-  }
-  
-  getTxSet() {
-    return this.state.txSet;
-  }
-  
-  setTxSet(txSet) {
-    this.state.txSet = txSet;
-    return this;
-  }
-  
-  isIncoming() {
-    return this.state.isIncoming;
-  }
-  
-  setIsIncoming(isIncoming) {
-    this.state.isIncoming = isIncoming;
-    return this;
-  }
-  
-  isOutgoing() {
-    return this.state.isOutgoing;
-  }
-  
-  setIsOutgoing(isOutgoing) {
-    this.state.isOutgoing = isOutgoing;
-    return this;
-  }
-  
-  getIncomingAmount() {
-    if (this.getIncomingTransfers() === undefined) return undefined;
-    let incomingAmt = BigInteger.parse("0");
-    for (let transfer of this.getIncomingTransfers()) incomingAmt = incomingAmt.add(transfer.getAmount());
-    return incomingAmt;
-  }
-  
-  getOutgoingAmount() {
-    return this.getOutgoingTransfer() ? this.getOutgoingTransfer().getAmount() : undefined;
-  }
-  
-  getTransfers(transferQuery) {
-    let transfers = [];
-    if (this.getOutgoingTransfer() && (!transferQuery || transferQuery.meetsCriteria(this.getOutgoingTransfer()))) transfers.push(this.getOutgoingTransfer());
-    if (this.getIncomingTransfers()) {
-      for (let transfer of this.getIncomingTransfers()) {
-        if (!transferQuery || transferQuery.meetsCriteria(transfer)) transfers.push(transfer);
-      }
-    }
-    return transfers;
-  }
-  
-  filterTransfers(transferQuery) {
-    let transfers = [];
-    
-    // collect outgoing transfer or erase if filtered
-    if (this.getOutgoingTransfer() && (!transferQuery || transferQuery.meetsCriteria(this.getOutgoingTransfer()))) transfers.push(this.getOutgoingTransfer());
-    else this.setOutgoingTransfer(undefined);
-    
-    // collect incoming transfers or erase if filtered
-    if (this.getIncomingTransfers()) {
-      let toRemoves = [];
-      for (let transfer of this.getIncomingTransfers()) {
-        if (transferQuery.meetsCriteria(transfer)) transfers.push(transfer);
-        else toRemoves.push(transfer);
-      }
-      this.setIncomingTransfers(this.getIncomingTransfers().filter(function(transfer) {
-        return !toRemoves.includes(transfer);
-      }));
-      if (this.getIncomingTransfers().length === 0) this.setIncomingTransfers(undefined);
-    }
-    
-    return transfers;
-  }
-  
-  getIncomingTransfers() {
-    return this.state.incomingTransfers;
-  }
-  
-  setIncomingTransfers(incomingTransfers) {
-    this.state.incomingTransfers = incomingTransfers;
-    return this;
-  }
-  
-  getOutgoingTransfer() {
-    return this.state.outgoingTransfer;
-  }
-  
-  setOutgoingTransfer(outgoingTransfer) {
-    this.state.outgoingTransfer = outgoingTransfer;
-    return this;
-  }
-  
-  getInputs(outputQuery) {
-    if (!outputQuery || !super.getInputs()) return super.getInputs();
-    let inputs = [];
-    for (let output of super.getInputs()) if (!outputQuery || outputQuery.meetsCriteria(output)) inputs.push(output);
-    return inputs;
-  }
-  
-  setInputs(inputs) {
-    
-    // validate that all inputs are wallet inputs
-    if (inputs) {
-      for (let output of inputs) {
-        if (!(output instanceof MoneroOutputWallet)) throw new MoneroError("Wallet transaction inputs must be of type MoneroOutputWallet");
-      }
-    }
-    super.setInputs(inputs);
-    return this;
-  }
-  
-  getOutputs(outputQuery) {
-    if (!outputQuery || !super.getOutputs()) return super.getOutputs();
-    let outputs = [];
-    for (let output of super.getOutputs()) if (!outputQuery || outputQuery.meetsCriteria(output)) outputs.push(output);
-    return outputs;
-  }
-  
-  setOutputs(outputs) {
-    
-    // validate that all outputs are wallet outputs
-    if (outputs) {
-      for (let output of outputs) {
-        if (!(output instanceof MoneroOutputWallet)) throw new MoneroError("Wallet transaction outputs must be of type MoneroOutputWallet");
-      }
-    }
-    super.setOutputs(outputs);
-    return this;
-  }
-  
-  filterOutputs(outputQuery) {
-    let outputs = [];
-    if (super.getOutputs()) {
-      let toRemoves = [];
-      for (let output of super.getOutputs()) {
-        if (!outputQuery || outputQuery.meetsCriteria(output)) outputs.push(output);
-        else toRemoves.push(output);
-      }
-      this.setOutputs(super.getOutputs().filter(function(output) {
-        return !toRemoves.includes(output);
-      }));
-      if (this.getOutputs().length === 0) this.setOutputs(undefined);
-    }
-    return outputs;
-  }
-  
-  getNote() {
-    return this.state.note;
-  }
-  
-  setNote(note) {
-    this.state.note = note;
-    return this;
-  }
-  
-  isLocked() {
-    return this.state.isLocked;
-  }
-  
-  setIsLocked(isLocked) {
-    this.state.isLocked = isLocked;
-    return this;
-  }
-  
-  getInputSum() {
-    return this.state.inputSum;
-  }
-  
-  setInputSum(inputSum) {
-    this.state.inputSum = inputSum;
-    return this;
-  }
-  
-  getOutputSum() {
-    return this.state.outputSum;
-  }
-  
-  setOutputSum(outputSum) {
-    this.state.outputSum = outputSum;
-    return this;
-  }
-  
-  getChangeAddress() {
-    return this.state.changeAddress;
-  }
-  
-  setChangeAddress(changeAddress) {
-    this.state.changeAddress = changeAddress;
-    return this;
-  }
-  
-  getChangeAmount() {
-    return this.state.changeAmount;
-  }
-  
-  setChangeAmount(changeAmount) {
-    this.state.changeAmount = changeAmount;
-    return this;
-  }
-  
-  getNumDummyOutputs() {
-    return this.state.numDummyOutputs;
-  }
-  
-  setNumDummyOutputs(numDummyOutputs) {
-    this.state.numDummyOutputs = numDummyOutputs;
-    return this;
-  }
-  
-  getExtraHex() {
-    return this.state.extraHex;
-  }
-  
-  setExtraHex(extraHex) {
-    this.state.extraHex = extraHex;
-    return this;
-  }
-  
-  copy() {
-    return new MoneroTxWallet(this);
-  }
-  
-  /**
-   * Updates this transaction by merging the latest information from the given
-   * transaction.
-   * 
-   * Merging can modify or build references to the transaction given so it
-   * should not be re-used or it should be copied before calling this method.
-   * 
-   * @param tx is the transaction to merge into this transaction
-   */
-  merge(tx) {
-    assert(tx instanceof MoneroTxWallet);
-    if (this === tx) return this;
-    
-    // merge base classes
-    super.merge(tx);
-    
-    // merge tx set if they're different which comes back to merging txs
-    const MoneroTxSet = require("./MoneroTxSet");
-    if (this.getTxSet() !== tx.getTxSet()) {
-      if (this.getTxSet() == undefined) {
-        this.setTxSet(new MoneroTxSet().setTxs([this]));
-      }
-      if (tx.getTxSet() === undefined) {
-        tx.setTxSet(new MoneroTxSet().setTxs([tx]));
-      }
-      this.getTxSet().merge(tx.getTxSet());
-      return this;
-    }
-    
-    // merge incoming transfers
-    if (tx.getIncomingTransfers()) {
-      if (this.getIncomingTransfers() === undefined) this.setIncomingTransfers([]);
-      for (let transfer of tx.getIncomingTransfers()) {
-        transfer.setTx(this);
-        MoneroTxWallet._mergeIncomingTransfer(this.getIncomingTransfers(), transfer);
-      }
-    }
-    
-    // merge outgoing transfer
-    if (tx.getOutgoingTransfer()) {
-      tx.getOutgoingTransfer().setTx(this);
-      if (this.getOutgoingTransfer() === undefined) this.setOutgoingTransfer(tx.getOutgoingTransfer());
-      else this.getOutgoingTransfer().merge(tx.getOutgoingTransfer());
-    }
-    
-    // merge simple extensions
-    this.setIsIncoming(GenUtils.reconcile(this.isIncoming(), tx.isIncoming(), {resolveTrue: true}));  // outputs seen on confirmation
-    this.setIsOutgoing(GenUtils.reconcile(this.isOutgoing(), tx.isOutgoing()));
-    this.setNote(GenUtils.reconcile(this.getNote(), tx.getNote()));
-    this.setIsLocked(GenUtils.reconcile(this.isLocked(), tx.isLocked(), {resolveTrue: false})); // tx can become unlocked
-    this.setInputSum(GenUtils.reconcile(this.getInputSum(), tx.getInputSum()));
-    this.setOutputSum(GenUtils.reconcile(this.getOutputSum(), tx.getOutputSum()));
-    this.setChangeAddress(GenUtils.reconcile(this.getChangeAddress(), tx.getChangeAddress()));
-    this.setChangeAmount(GenUtils.reconcile(this.getChangeAmount(), tx.getChangeAmount()));
-    this.setNumDummyOutputs(GenUtils.reconcile(this.getNumDummyOutputs(), tx.getNumDummyOutputs()));
-    this.setExtraHex(GenUtils.reconcile(this.getExtraHex(), tx.getExtraHex()));
-    
-    return this;  // for chaining
-  }
-  
-  toString(indent = 0, oneLine) {
-    let str = "";
-    
-    // represent tx with one line string
-    // TODO: proper csv export
-    if (oneLine) {
-      str += this.getHash() + ", ";
-      str += (this.isConfirmed() ? this.getBlock().getTimestamp() : this.getReceivedTimestamp()) + ", ";
-      str += this.isConfirmed() + ", ";
-      str += (this.getOutgoingAmount() ? this.getOutgoingAmount().toString() : "") + ", ";
-      str += this.getIncomingAmount() ? this.getIncomingAmount().toString() : "";
-      return str;
-    }
-    
-    // otherwise stringify all fields
-    str += super.toString(indent) + "\n";
-    str += GenUtils.kvLine("Is incoming", this.isIncoming(), indent);
-    str += GenUtils.kvLine("Incoming amount", this.getIncomingAmount(), indent);
-    if (this.getIncomingTransfers()) {
-      str += GenUtils.kvLine("Incoming transfers", "", indent);
-      for (let i = 0; i < this.getIncomingTransfers().length; i++) {
-        str += GenUtils.kvLine(i + 1, "", indent + 1);
-        str += this.getIncomingTransfers()[i].toString(indent + 2) + "\n";
-      }
-    }
-    str += GenUtils.kvLine("Is outgoing", this.isOutgoing(), indent);
-    str += GenUtils.kvLine("Outgoing amount", this.getOutgoingAmount(), indent);
-    if (this.getOutgoingTransfer()) {
-      str += GenUtils.kvLine("Outgoing transfer", "", indent);
-      str += this.getOutgoingTransfer().toString(indent + 1) + "\n";
-    }
-    str += GenUtils.kvLine("Note", this.getNote(), indent);
-    str += GenUtils.kvLine("Is locked", this.isLocked(), indent);
-    str += GenUtils.kvLine("Input sum", this.getInputSum(), indent);
-    str += GenUtils.kvLine("Output sum", this.getOutputSum(), indent);
-    str += GenUtils.kvLine("Change address", this.getChangeAddress(), indent);
-    str += GenUtils.kvLine("Change amount", this.getChangeAmount(), indent);
-    str += GenUtils.kvLine("Num dummy outputs", this.getNumDummyOutputs(), indent);
-    str += GenUtils.kvLine("Extra hex", this.getExtraHex(), indent);
-    return str.slice(0, str.length - 1);  // strip last newline
-  }
-  
-  // private helper to merge transfers
-  static _mergeIncomingTransfer(transfers, transfer) {
-    for (let aTransfer of transfers) {
-      if (aTransfer.getAccountIndex() === transfer.getAccountIndex() && aTransfer.getSubaddressIndex() === transfer.getSubaddressIndex()) {
-        aTransfer.merge(transfer);
-        return;
-      }
-    }
-    transfers.push(transfer);
-  }
-}
-
-module.exports = MoneroTxWallet;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_wallet_model_MoneroWalletConfig.js.html b/docs/src_main_js_wallet_model_MoneroWalletConfig.js.html deleted file mode 100644 index 36679de79..000000000 --- a/docs/src_main_js_wallet_model_MoneroWalletConfig.js.html +++ /dev/null @@ -1,360 +0,0 @@ - - - - - JSDoc: Source: src/main/js/wallet/model/MoneroWalletConfig.js - - - - - - - - - - -
- -

Source: src/main/js/wallet/model/MoneroWalletConfig.js

- - - - - - -
-
-
const GenUtils = require("../../common/GenUtils");
-const MoneroError = require("../../common/MoneroError");
-const MoneroNetworkType = require("../../daemon/model/MoneroNetworkType");
-const MoneroRpcConnection = require("../../common/MoneroRpcConnection");
-
-/**
- * Configuration to create a Monero wallet.
- */
-class MoneroWalletConfig {
-  
-  /**
-   * Construct a configuration to open or create a wallet.
-   * 
-   * @param {object|MoneroWalletConfig} config - MoneroWalletConfig or equivalent config object
-   * @param {string} config.path - path of the wallet to open or create
-   * @param {string} config.password - password of the wallet to open
-   * @param {string|number} config.networkType - network type of the wallet to open (one of "mainnet", "testnet", "stagenet" or MoneroNetworkType.MAINNET|TESTNET|STAGENET)
-   * @param {string} config.seed - seed of the wallet to create (optional, random wallet created if neither seed nor keys given)
-   * @param {string} config.seedOffset - the offset used to derive a new seed from the given seed to recover a secret wallet from the seed phrase
-   * @param {boolean} config.isMultisig - restore multisig wallet from seed
-   * @param {string} config.primaryAddress - primary address of the wallet to create (only provide if restoring from keys)
-   * @param {string} config.privateViewKey - private view key of the wallet to create (optional)
-   * @param {string} config.privateSpendKey - private spend key of the wallet to create (optional)
-   * @param {number} config.restoreHeight - block height to start scanning from (defaults to 0 unless generating random wallet)
-   * @param {string} config.language - language of the wallet's seed phrase (defaults to "English" or auto-detected)
-   * @param {number} config.accountLookahead -  number of accounts to scan (optional)
-   * @param {number} config.subaddressLookahead - number of subaddresses to scan per account (optional)
-   * @param {MoneroRpcConnection|object} config.server - MoneroRpcConnection or equivalent JS object configuring the server connection (optional)
-   * @param {string} config.serverUri - uri of the wallet's server (optional)
-   * @param {string} config.serverUsername - username of the wallet's server (optional)
-   * @param {string} config.serverPassword - password of the wallet's server (optional)
-   * @param {MoneroConnectionManager} config.connectionManager - manage connections to monerod (optional)
-   * @param {boolean} config.rejectUnauthorized - reject self-signed server certificates if true (default true)
-   * @param {Uint8Array} config.keysData - wallet keys data to open (optional)
-   * @param {Uint8Array} config.cacheData - wallet cache data to open (optional)
-   * @param {boolean} config.proxyToWorker - proxies wallet operations to a worker in order to not block the main thread (default true)
-   * @param {fs} config.fs - Node.js compatible file system to use (defaults to disk or in-memory FS if browser)
-   * @param {boolean} config.saveCurrent - specifies if the current RPC wallet should be saved before being closed
-   * @param {number} config.accountLookahead - number of accounts to scan (optional)
-   * @param {number} config.subaddressLookahead - number of subaddresses to scan per account (optional)
-   */
-  constructor(config) {
-    
-    // initialize internal config
-    if (!config) config = {};
-    else if (config instanceof MoneroWalletConfig) config = Object.assign({}, config.config);
-    else if (typeof config === "object") config = Object.assign({}, config);
-    else throw new MoneroError("config must be a MoneroWalletConfig or JavaScript object");
-    this.config = config;
-    
-    // normalize config
-    this.setNetworkType(config.networkType);
-    if (config.server) this.setServer(config.server);
-    else if (config.serverUri) this.setServer({uri: config.serverUri, username: config.serverUsername, password: config.serverPassword, rejectUnauthorized: config.rejectUnauthorized});
-    this.setProxyToWorker(config.proxyToWorker);
-    this.config.serverUri = undefined;
-    this.config.serverUsername = undefined;
-    this.config.serverPassword = undefined;
-    this.config.rejectUnauthorized = undefined;
-    
-    // check for unsupported fields
-    for (let key of Object.keys(this.config)) {
-      if (!GenUtils.arrayContains(MoneroWalletConfig.SUPPORTED_FIELDS, key)) {
-        throw new MoneroError("Unsupported field in MoneroWalletConfig: '" + key + "'");
-      }
-    }
-  }
-
-  copy() {
-    return new MoneroWalletConfig(this);
-  }
-  
-  toJson() {
-    let json = Object.assign({}, this.config);
-    if (json.server) json.server = json.server.toJson();
-    json.fs = undefined;
-    json.connectionManager = undefined;
-    return json;
-  }
-  
-  getPath() {
-    return this.config.path;
-  }
-  
-  setPath(path) {
-    this.config.path = path;
-    return this;
-  }
-  
-  getPassword() {
-    return this.config.password;
-  }
-  
-  setPassword(password) {
-    this.config.password = password;
-    return this;
-  }
-  
-  getNetworkType() {
-    return this.config.networkType;
-  }
-  
-  setNetworkType(networkTypeOrStr) {
-    this.config.networkType = typeof networkTypeOrStr === "string" ? MoneroNetworkType.parse(networkTypeOrStr) : networkTypeOrStr;
-    return this;
-  }
-  
-  getServer() {
-    return this.config.server;
-  }
-  
-  setServer(server) {
-    if (server && !(server instanceof MoneroRpcConnection)) server = new MoneroRpcConnection(server);
-    this.config.server = server;
-    this.config.serverUsername = server === undefined ? undefined : server.getUsername();
-    this.config.serverPassword = server === undefined ? undefined : server.getPassword();
-    return this;
-  }
-  
-  getServerUri() {
-    return this.config.server ? this.config.server.getUri() : undefined;
-  }
-  
-  setServerUri(serverUri) {
-    if (!serverUri) this.setServer(undefined);
-    else  {
-      if (!this.config.server) this.setServer(new MoneroRpcConnection(serverUri));
-      else this.config.server.setUri(serverUri);
-    }
-    return this;
-  }
-  
-  getServerUsername() {
-    return this.server ? server.getUsername() : undefined;
-  }
-  
-  setServerUsername(serverUsername) {
-    this.config.serverUsername = serverUsername;
-    if (this.config.serverUsername && this.config.serverPassword) this.config.server.setCredentials(this.config.serverUsername, this.config.serverPassword);
-    return this;
-  }
-  
-  getServerPassword() {
-    return this.server ? server.getPassword() : undefined;
-  }
-  
-  setServerPassword(serverPassword) {
-    this.config.serverPassword = serverPassword;
-    if (this.config.serverUsername && this.config.serverPassword) this.config.server.setCredentials(this.config.serverUsername, this.config.serverPassword);
-    return this;
-  }
-
-  getConnectionManager() {
-    return this.config.connectionManager;
-  }
-  
-  setConnectionManager(connectionManager) {
-    this.config.connectionManager = connectionManager;
-    return this;
-  }
-  
-  getRejectUnauthorized() {
-    return this.config.rejectUnauthorized;
-  }
-  
-  setRejectUnauthorized(rejectUnauthorized) {
-    this.config.rejectUnauthorized = rejectUnauthorized;
-    return this;
-  }
-  
-  getSeed() {
-    return this.config.seed;
-  }
-  
-  setSeed(seed) {
-    this.config.seed = seed;
-    return this;
-  }
-  
-  getSeedOffset() {
-    return this.config.seedOffset;
-  }
-  
-  setSeedOffset(seedOffset) {
-    this.config.seedOffset = seedOffset;
-    return this;
-  }
-
-  isMultisig() {
-    return this.config.isMultisig;
-  }
-  
-  setIsMultisig(isMultisig) {
-    this.config.isMultisig = isMultisig;
-    return this;
-  }
-  
-  getPrimaryAddress() {
-    return this.config.primaryAddress;
-  }
-  
-  setPrimaryAddress(primaryAddress) {
-    this.config.primaryAddress = primaryAddress;
-    return this;
-  }
-  
-  getPrivateViewKey() {
-    return this.config.privateViewKey;
-  }
-  
-  setPrivateViewKey(privateViewKey) {
-    this.config.privateViewKey = privateViewKey;
-    return this;
-  }
-  
-  getPrivateSpendKey() {
-    return this.config.privateSpendKey;
-  }
-  
-  setPrivateSpendKey(privateSpendKey) {
-    this.config.privateSpendKey = privateSpendKey;
-    return this;
-  }
-  
-  getRestoreHeight() {
-    return this.config.restoreHeight;
-  }
-  
-  setRestoreHeight(restoreHeight) {
-    this.config.restoreHeight = restoreHeight;
-    return this;
-  }
-  
-  getLanguage() {
-    return this.config.language;
-  }
-  
-  setLanguage(language) {
-    this.config.language = language;
-    return this;
-  }
-  
-  getSaveCurrent() {
-    return this.config.saveCurrent;
-  }
-  
-  setSaveCurrent(saveCurrent) {
-    this.config.saveCurrent = saveCurrent;
-    return this;
-  }
-  
-  getProxyToWorker() {
-    return this.config.proxyToWorker;
-  }
-  
-  setProxyToWorker(proxyToWorker) {
-    this.config.proxyToWorker = proxyToWorker;
-    if (this.config.server) this.config.server.setProxyToWorker(proxyToWorker);
-    return this;
-  }
-  
-  getFs() {
-    return this.config.fs;
-  }
-  
-  setFs(fs) {
-    this.config.fs = fs;
-    return this;
-  }
-  
-  getKeysData() {
-    return this.config.keysData;
-  }
-  
-  setKeysData(keysData) {
-    this.config.keysData = keysData;
-    return this;
-  }
-  
-  getCacheData() {
-    return this.config.cacheData;
-  }
-  
-  setCacheData(cacheData) {
-    this.config.cacheData = cacheData;
-    return this;
-  }
-  
-  getAccountLookahead() {
-    return this.config.accountLookahead;
-  }
-  
-  setAccountLookahead(accountLookahead) {
-    this.config.accountLookahead = accountLookahead;
-    return this;
-  }
-  
-  getSubaddressLookahead() {
-    return this.config.subaddressLookahead;
-  }
-  
-  setSubaddressLookahead(subaddressLookahead) {
-    this.config.subaddressLookahead = subaddressLookahead;
-    return this;
-  }
-}
-
-MoneroWalletConfig.SUPPORTED_FIELDS = ["path", "password", "networkType", "server", "serverUri", "serverUsername", "serverPassword", "connectionManager", "rejectUnauthorized", "seed", "seedOffset", "isMultisig", "primaryAddress", "privateViewKey", "privateSpendKey", "restoreHeight", "language", "saveCurrent", "proxyToWorker", "fs", "keysData", "cacheData", "accountLookahead", "subaddressLookahead"];
-
-module.exports = MoneroWalletConfig;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/src_main_js_wallet_model_MoneroWalletListener.js.html b/docs/src_main_js_wallet_model_MoneroWalletListener.js.html deleted file mode 100644 index 7191a034d..000000000 --- a/docs/src_main_js_wallet_model_MoneroWalletListener.js.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - JSDoc: Source: src/main/js/wallet/model/MoneroWalletListener.js - - - - - - - - - - -
- -

Source: src/main/js/wallet/model/MoneroWalletListener.js

- - - - - - -
-
-
/**
- * Default wallet listener which takes no action on notifications.
- */
-class MoneroWalletListener {
-  
-  /**
-   * Invoked as the wallet is synchronized.
-   * 
-   * @param {number} height - height of the synced block 
-   * @param {number} startHeight - starting height of the sync request
-   * @param {number} endHeight - ending height of the sync request
-   * @param {number} percentDone - sync progress as a percentage
-   * @param {string} message - human-readable description of the current progress
-   */
-  async onSyncProgress(height, startHeight, endHeight, percentDone, message) { }
-
-  /**
-   * Invoked when a new block is added to the chain.
-   * 
-   * @param {int} height - the height of the new block (i.e. the number of blocks before it).
-   */
-  async onNewBlock(height) { }
-  
-  /**
-   * Invoked when the wallet's balances change.
-   * 
-   * @param {BigInteger} newBalance - new wallet balance
-   * @param {BigInteger} newUnlockedBalance - new unlocked wallet balance
-   */
-  async onBalancesChanged(newBalance, newUnlockedBalance) { }
-
-  /**
-   * Invoked 3 times per received output: once when unconfirmed, once when confirmed, and
-   * once when unlocked.
-   * 
-   * The notified output includes basic fields only, so the output or its transaction should be fetched to get all available fields.
-   * 
-   * @param {MoneroOutputWallet} output - the received output
-   */
-  async onOutputReceived(output) { }
-  
-  /**
-   * Invoked twice per spent output: once when confirmed and once when unlocked.
-   * 
-   * The notified output includes basic fields only, so the output or its transaction should be fetched to get all available fields.
-   * 
-   * @param {MoneroOutputWallet} output - the spent output
-   */
-  async onOutputSpent(output) { }
-}
-
-module.exports = MoneroWalletListener;
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/styles/jsdoc-default.css b/docs/styles/jsdoc-default.css deleted file mode 100644 index 7d1729dc9..000000000 --- a/docs/styles/jsdoc-default.css +++ /dev/null @@ -1,358 +0,0 @@ -@font-face { - font-family: 'Open Sans'; - font-weight: normal; - font-style: normal; - src: url('../fonts/OpenSans-Regular-webfont.eot'); - src: - local('Open Sans'), - local('OpenSans'), - url('../fonts/OpenSans-Regular-webfont.eot?#iefix') format('embedded-opentype'), - url('../fonts/OpenSans-Regular-webfont.woff') format('woff'), - url('../fonts/OpenSans-Regular-webfont.svg#open_sansregular') format('svg'); -} - -@font-face { - font-family: 'Open Sans Light'; - font-weight: normal; - font-style: normal; - src: url('../fonts/OpenSans-Light-webfont.eot'); - src: - local('Open Sans Light'), - local('OpenSans Light'), - url('../fonts/OpenSans-Light-webfont.eot?#iefix') format('embedded-opentype'), - url('../fonts/OpenSans-Light-webfont.woff') format('woff'), - url('../fonts/OpenSans-Light-webfont.svg#open_sanslight') format('svg'); -} - -html -{ - overflow: auto; - background-color: #fff; - font-size: 14px; -} - -body -{ - font-family: 'Open Sans', sans-serif; - line-height: 1.5; - color: #4d4e53; - background-color: white; -} - -a, a:visited, a:active { - color: #0095dd; - text-decoration: none; -} - -a:hover { - text-decoration: underline; -} - -header -{ - display: block; - padding: 0px 4px; -} - -tt, code, kbd, samp { - font-family: Consolas, Monaco, 'Andale Mono', monospace; -} - -.class-description { - font-size: 130%; - line-height: 140%; - margin-bottom: 1em; - margin-top: 1em; -} - -.class-description:empty { - margin: 0; -} - -#main { - float: left; - width: 70%; -} - -article dl { - margin-bottom: 40px; -} - -article img { - max-width: 100%; -} - -section -{ - display: block; - background-color: #fff; - padding: 12px 24px; - border-bottom: 1px solid #ccc; - margin-right: 30px; -} - -.variation { - display: none; -} - -.signature-attributes { - font-size: 60%; - color: #aaa; - font-style: italic; - font-weight: lighter; -} - -nav -{ - display: block; - float: right; - margin-top: 28px; - width: 30%; - box-sizing: border-box; - border-left: 1px solid #ccc; - padding-left: 16px; -} - -nav ul { - font-family: 'Lucida Grande', 'Lucida Sans Unicode', arial, sans-serif; - font-size: 100%; - line-height: 17px; - padding: 0; - margin: 0; - list-style-type: none; -} - -nav ul a, nav ul a:visited, nav ul a:active { - font-family: Consolas, Monaco, 'Andale Mono', monospace; - line-height: 18px; - color: #4D4E53; -} - -nav h3 { - margin-top: 12px; -} - -nav li { - margin-top: 6px; -} - -footer { - display: block; - padding: 6px; - margin-top: 12px; - font-style: italic; - font-size: 90%; -} - -h1, h2, h3, h4 { - font-weight: 200; - margin: 0; -} - -h1 -{ - font-family: 'Open Sans Light', sans-serif; - font-size: 48px; - letter-spacing: -2px; - margin: 12px 24px 20px; -} - -h2, h3.subsection-title -{ - font-size: 30px; - font-weight: 700; - letter-spacing: -1px; - margin-bottom: 12px; -} - -h3 -{ - font-size: 24px; - letter-spacing: -0.5px; - margin-bottom: 12px; -} - -h4 -{ - font-size: 18px; - letter-spacing: -0.33px; - margin-bottom: 12px; - color: #4d4e53; -} - -h5, .container-overview .subsection-title -{ - font-size: 120%; - font-weight: bold; - letter-spacing: -0.01em; - margin: 8px 0 3px 0; -} - -h6 -{ - font-size: 100%; - letter-spacing: -0.01em; - margin: 6px 0 3px 0; - font-style: italic; -} - -table -{ - border-spacing: 0; - border: 0; - border-collapse: collapse; -} - -td, th -{ - border: 1px solid #ddd; - margin: 0px; - text-align: left; - vertical-align: top; - padding: 4px 6px; - display: table-cell; -} - -thead tr -{ - background-color: #ddd; - font-weight: bold; -} - -th { border-right: 1px solid #aaa; } -tr > th:last-child { border-right: 1px solid #ddd; } - -.ancestors, .attribs { color: #999; } -.ancestors a, .attribs a -{ - color: #999 !important; - text-decoration: none; -} - -.clear -{ - clear: both; -} - -.important -{ - font-weight: bold; - color: #950B02; -} - -.yes-def { - text-indent: -1000px; -} - -.type-signature { - color: #aaa; -} - -.name, .signature { - font-family: Consolas, Monaco, 'Andale Mono', monospace; -} - -.details { margin-top: 14px; border-left: 2px solid #DDD; } -.details dt { width: 120px; float: left; padding-left: 10px; padding-top: 6px; } -.details dd { margin-left: 70px; } -.details ul { margin: 0; } -.details ul { list-style-type: none; } -.details li { margin-left: 30px; padding-top: 6px; } -.details pre.prettyprint { margin: 0 } -.details .object-value { padding-top: 0; } - -.description { - margin-bottom: 1em; - margin-top: 1em; -} - -.code-caption -{ - font-style: italic; - font-size: 107%; - margin: 0; -} - -.source -{ - border: 1px solid #ddd; - width: 80%; - overflow: auto; -} - -.prettyprint.source { - width: inherit; -} - -.source code -{ - font-size: 100%; - line-height: 18px; - display: block; - padding: 4px 12px; - margin: 0; - background-color: #fff; - color: #4D4E53; -} - -.prettyprint code span.line -{ - display: inline-block; -} - -.prettyprint.linenums -{ - padding-left: 70px; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.prettyprint.linenums ol -{ - padding-left: 0; -} - -.prettyprint.linenums li -{ - border-left: 3px #ddd solid; -} - -.prettyprint.linenums li.selected, -.prettyprint.linenums li.selected * -{ - background-color: lightyellow; -} - -.prettyprint.linenums li * -{ - -webkit-user-select: text; - -moz-user-select: text; - -ms-user-select: text; - user-select: text; -} - -.params .name, .props .name, .name code { - color: #4D4E53; - font-family: Consolas, Monaco, 'Andale Mono', monospace; - font-size: 100%; -} - -.params td.description > p:first-child, -.props td.description > p:first-child -{ - margin-top: 0; - padding-top: 0; -} - -.params td.description > p:last-child, -.props td.description > p:last-child -{ - margin-bottom: 0; - padding-bottom: 0; -} - -.disabled { - color: #454545; -} diff --git a/docs/styles/prettify-jsdoc.css b/docs/styles/prettify-jsdoc.css deleted file mode 100644 index 5a2526e37..000000000 --- a/docs/styles/prettify-jsdoc.css +++ /dev/null @@ -1,111 +0,0 @@ -/* JSDoc prettify.js theme */ - -/* plain text */ -.pln { - color: #000000; - font-weight: normal; - font-style: normal; -} - -/* string content */ -.str { - color: #006400; - font-weight: normal; - font-style: normal; -} - -/* a keyword */ -.kwd { - color: #000000; - font-weight: bold; - font-style: normal; -} - -/* a comment */ -.com { - font-weight: normal; - font-style: italic; -} - -/* a type name */ -.typ { - color: #000000; - font-weight: normal; - font-style: normal; -} - -/* a literal value */ -.lit { - color: #006400; - font-weight: normal; - font-style: normal; -} - -/* punctuation */ -.pun { - color: #000000; - font-weight: bold; - font-style: normal; -} - -/* lisp open bracket */ -.opn { - color: #000000; - font-weight: bold; - font-style: normal; -} - -/* lisp close bracket */ -.clo { - color: #000000; - font-weight: bold; - font-style: normal; -} - -/* a markup tag name */ -.tag { - color: #006400; - font-weight: normal; - font-style: normal; -} - -/* a markup attribute name */ -.atn { - color: #006400; - font-weight: normal; - font-style: normal; -} - -/* a markup attribute value */ -.atv { - color: #006400; - font-weight: normal; - font-style: normal; -} - -/* a declaration */ -.dec { - color: #000000; - font-weight: bold; - font-style: normal; -} - -/* a variable name */ -.var { - color: #000000; - font-weight: normal; - font-style: normal; -} - -/* a function name */ -.fun { - color: #000000; - font-weight: bold; - font-style: normal; -} - -/* Specify class=linenums on a pre to get line numbering */ -ol.linenums { - margin-top: 0; - margin-bottom: 0; -} diff --git a/docs/styles/prettify-tomorrow.css b/docs/styles/prettify-tomorrow.css deleted file mode 100644 index b6f92a78d..000000000 --- a/docs/styles/prettify-tomorrow.css +++ /dev/null @@ -1,132 +0,0 @@ -/* Tomorrow Theme */ -/* Original theme - https://github.com/chriskempson/tomorrow-theme */ -/* Pretty printing styles. Used with prettify.js. */ -/* SPAN elements with the classes below are added by prettyprint. */ -/* plain text */ -.pln { - color: #4d4d4c; } - -@media screen { - /* string content */ - .str { - color: #718c00; } - - /* a keyword */ - .kwd { - color: #8959a8; } - - /* a comment */ - .com { - color: #8e908c; } - - /* a type name */ - .typ { - color: #4271ae; } - - /* a literal value */ - .lit { - color: #f5871f; } - - /* punctuation */ - .pun { - color: #4d4d4c; } - - /* lisp open bracket */ - .opn { - color: #4d4d4c; } - - /* lisp close bracket */ - .clo { - color: #4d4d4c; } - - /* a markup tag name */ - .tag { - color: #c82829; } - - /* a markup attribute name */ - .atn { - color: #f5871f; } - - /* a markup attribute value */ - .atv { - color: #3e999f; } - - /* a declaration */ - .dec { - color: #f5871f; } - - /* a variable name */ - .var { - color: #c82829; } - - /* a function name */ - .fun { - color: #4271ae; } } -/* Use higher contrast and text-weight for printable form. */ -@media print, projection { - .str { - color: #060; } - - .kwd { - color: #006; - font-weight: bold; } - - .com { - color: #600; - font-style: italic; } - - .typ { - color: #404; - font-weight: bold; } - - .lit { - color: #044; } - - .pun, .opn, .clo { - color: #440; } - - .tag { - color: #006; - font-weight: bold; } - - .atn { - color: #404; } - - .atv { - color: #060; } } -/* Style */ -/* -pre.prettyprint { - background: white; - font-family: Consolas, Monaco, 'Andale Mono', monospace; - font-size: 12px; - line-height: 1.5; - border: 1px solid #ccc; - padding: 10px; } -*/ - -/* Specify class=linenums on a pre to get line numbering */ -ol.linenums { - margin-top: 0; - margin-bottom: 0; } - -/* IE indents via margin-left */ -li.L0, -li.L1, -li.L2, -li.L3, -li.L4, -li.L5, -li.L6, -li.L7, -li.L8, -li.L9 { - /* */ } - -/* Alternate shading for lines */ -li.L1, -li.L3, -li.L5, -li.L7, -li.L9 { - /* */ } diff --git a/docs/typedocs/.nojekyll b/docs/typedocs/.nojekyll new file mode 100644 index 000000000..e2ac6616a --- /dev/null +++ b/docs/typedocs/.nojekyll @@ -0,0 +1 @@ +TypeDoc added this file to prevent GitHub Pages from using Jekyll. You can turn off this behavior by setting the `githubPages` option to false. \ No newline at end of file diff --git a/docs/typedocs/assets/highlight.css b/docs/typedocs/assets/highlight.css new file mode 100644 index 000000000..64ac4af95 --- /dev/null +++ b/docs/typedocs/assets/highlight.css @@ -0,0 +1,92 @@ +:root { + --light-hl-0: #008000; + --dark-hl-0: #6A9955; + --light-hl-1: #AF00DB; + --dark-hl-1: #C586C0; + --light-hl-2: #000000; + --dark-hl-2: #D4D4D4; + --light-hl-3: #0000FF; + --dark-hl-3: #569CD6; + --light-hl-4: #001080; + --dark-hl-4: #9CDCFE; + --light-hl-5: #A31515; + --dark-hl-5: #CE9178; + --light-hl-6: #795E26; + --dark-hl-6: #DCDCAA; + --light-hl-7: #0070C1; + --dark-hl-7: #4FC1FF; + --light-hl-8: #098658; + --dark-hl-8: #B5CEA8; + --light-hl-9: #267F99; + --dark-hl-9: #4EC9B0; + --light-code-background: #FFFFFF; + --dark-code-background: #1E1E1E; +} + +@media (prefers-color-scheme: light) { :root { + --hl-0: var(--light-hl-0); + --hl-1: var(--light-hl-1); + --hl-2: var(--light-hl-2); + --hl-3: var(--light-hl-3); + --hl-4: var(--light-hl-4); + --hl-5: var(--light-hl-5); + --hl-6: var(--light-hl-6); + --hl-7: var(--light-hl-7); + --hl-8: var(--light-hl-8); + --hl-9: var(--light-hl-9); + --code-background: var(--light-code-background); +} } + +@media (prefers-color-scheme: dark) { :root { + --hl-0: var(--dark-hl-0); + --hl-1: var(--dark-hl-1); + --hl-2: var(--dark-hl-2); + --hl-3: var(--dark-hl-3); + --hl-4: var(--dark-hl-4); + --hl-5: var(--dark-hl-5); + --hl-6: var(--dark-hl-6); + --hl-7: var(--dark-hl-7); + --hl-8: var(--dark-hl-8); + --hl-9: var(--dark-hl-9); + --code-background: var(--dark-code-background); +} } + +:root[data-theme='light'] { + --hl-0: var(--light-hl-0); + --hl-1: var(--light-hl-1); + --hl-2: var(--light-hl-2); + --hl-3: var(--light-hl-3); + --hl-4: var(--light-hl-4); + --hl-5: var(--light-hl-5); + --hl-6: var(--light-hl-6); + --hl-7: var(--light-hl-7); + --hl-8: var(--light-hl-8); + --hl-9: var(--light-hl-9); + --code-background: var(--light-code-background); +} + +:root[data-theme='dark'] { + --hl-0: var(--dark-hl-0); + --hl-1: var(--dark-hl-1); + --hl-2: var(--dark-hl-2); + --hl-3: var(--dark-hl-3); + --hl-4: var(--dark-hl-4); + --hl-5: var(--dark-hl-5); + --hl-6: var(--dark-hl-6); + --hl-7: var(--dark-hl-7); + --hl-8: var(--dark-hl-8); + --hl-9: var(--dark-hl-9); + --code-background: var(--dark-code-background); +} + +.hl-0 { color: var(--hl-0); } +.hl-1 { color: var(--hl-1); } +.hl-2 { color: var(--hl-2); } +.hl-3 { color: var(--hl-3); } +.hl-4 { color: var(--hl-4); } +.hl-5 { color: var(--hl-5); } +.hl-6 { color: var(--hl-6); } +.hl-7 { color: var(--hl-7); } +.hl-8 { color: var(--hl-8); } +.hl-9 { color: var(--hl-9); } +pre, code { background: var(--code-background); } diff --git a/docs/typedocs/assets/main.js b/docs/typedocs/assets/main.js new file mode 100644 index 000000000..01bcad55f --- /dev/null +++ b/docs/typedocs/assets/main.js @@ -0,0 +1,59 @@ +"use strict"; +"use strict";(()=>{var Pe=Object.create;var ne=Object.defineProperty;var Ie=Object.getOwnPropertyDescriptor;var Oe=Object.getOwnPropertyNames;var _e=Object.getPrototypeOf,Re=Object.prototype.hasOwnProperty;var Me=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var Fe=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Oe(e))!Re.call(t,i)&&i!==n&&ne(t,i,{get:()=>e[i],enumerable:!(r=Ie(e,i))||r.enumerable});return t};var De=(t,e,n)=>(n=t!=null?Pe(_e(t)):{},Fe(e||!t||!t.__esModule?ne(n,"default",{value:t,enumerable:!0}):n,t));var ae=Me((se,oe)=>{(function(){var t=function(e){var n=new t.Builder;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),n.searchPipeline.add(t.stemmer),e.call(n,n),n.build()};t.version="2.3.9";t.utils={},t.utils.warn=function(e){return function(n){e.console&&console.warn&&console.warn(n)}}(this),t.utils.asString=function(e){return e==null?"":e.toString()},t.utils.clone=function(e){if(e==null)return e;for(var n=Object.create(null),r=Object.keys(e),i=0;i0){var d=t.utils.clone(n)||{};d.position=[a,u],d.index=s.length,s.push(new t.Token(r.slice(a,o),d))}a=o+1}}return s},t.tokenizer.separator=/[\s\-]+/;t.Pipeline=function(){this._stack=[]},t.Pipeline.registeredFunctions=Object.create(null),t.Pipeline.registerFunction=function(e,n){n in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn(`Function is not registered with pipeline. This may cause problems when serialising the index. +`,e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(r){var i=t.Pipeline.registeredFunctions[r];if(i)n.add(i);else throw new Error("Cannot load unregistered function: "+r)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(n){t.Pipeline.warnIfFunctionNotRegistered(n),this._stack.push(n)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");r=r+1,this._stack.splice(r,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");this._stack.splice(r,0,n)},t.Pipeline.prototype.remove=function(e){var n=this._stack.indexOf(e);n!=-1&&this._stack.splice(n,1)},t.Pipeline.prototype.run=function(e){for(var n=this._stack.length,r=0;r1&&(oe&&(r=s),o!=e);)i=r-n,s=n+Math.floor(i/2),o=this.elements[s*2];if(o==e||o>e)return s*2;if(ol?d+=2:a==l&&(n+=r[u+1]*i[d+1],u+=2,d+=2);return n},t.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},t.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),n=1,r=0;n0){var o=s.str.charAt(0),a;o in s.node.edges?a=s.node.edges[o]:(a=new t.TokenSet,s.node.edges[o]=a),s.str.length==1&&(a.final=!0),i.push({node:a,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(s.editsRemaining!=0){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new t.TokenSet;s.node.edges["*"]=l}if(s.str.length==0&&(l.final=!0),i.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&i.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),s.str.length==1&&(s.node.final=!0),s.str.length>=1){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new t.TokenSet;s.node.edges["*"]=u}s.str.length==1&&(u.final=!0),i.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var d=s.str.charAt(0),v=s.str.charAt(1),f;v in s.node.edges?f=s.node.edges[v]:(f=new t.TokenSet,s.node.edges[v]=f),s.str.length==1&&(f.final=!0),i.push({node:f,editsRemaining:s.editsRemaining-1,str:d+s.str.slice(2)})}}}return r},t.TokenSet.fromString=function(e){for(var n=new t.TokenSet,r=n,i=0,s=e.length;i=e;n--){var r=this.uncheckedNodes[n],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r.char]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}};t.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},t.Index.prototype.search=function(e){return this.query(function(n){var r=new t.QueryParser(e,n);r.parse()})},t.Index.prototype.query=function(e){for(var n=new t.Query(this.fields),r=Object.create(null),i=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),l=0;l1?this._b=1:this._b=e},t.Builder.prototype.k1=function(e){this._k1=e},t.Builder.prototype.add=function(e,n){var r=e[this._ref],i=Object.keys(this._fields);this._documents[r]=n||{},this.documentCount+=1;for(var s=0;s=this.length)return t.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},t.QueryLexer.prototype.width=function(){return this.pos-this.start},t.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},t.QueryLexer.prototype.backup=function(){this.pos-=1},t.QueryLexer.prototype.acceptDigitRun=function(){var e,n;do e=this.next(),n=e.charCodeAt(0);while(n>47&&n<58);e!=t.QueryLexer.EOS&&this.backup()},t.QueryLexer.prototype.more=function(){return this.pos1&&(e.backup(),e.emit(t.QueryLexer.TERM)),e.ignore(),e.more())return t.QueryLexer.lexText},t.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.EDIT_DISTANCE),t.QueryLexer.lexText},t.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.BOOST),t.QueryLexer.lexText},t.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(t.QueryLexer.TERM)},t.QueryLexer.termSeparator=t.tokenizer.separator,t.QueryLexer.lexText=function(e){for(;;){var n=e.next();if(n==t.QueryLexer.EOS)return t.QueryLexer.lexEOS;if(n.charCodeAt(0)==92){e.escapeCharacter();continue}if(n==":")return t.QueryLexer.lexField;if(n=="~")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexEditDistance;if(n=="^")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexBoost;if(n=="+"&&e.width()===1||n=="-"&&e.width()===1)return e.emit(t.QueryLexer.PRESENCE),t.QueryLexer.lexText;if(n.match(t.QueryLexer.termSeparator))return t.QueryLexer.lexTerm}},t.QueryParser=function(e,n){this.lexer=new t.QueryLexer(e),this.query=n,this.currentClause={},this.lexemeIdx=0},t.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=t.QueryParser.parseClause;e;)e=e(this);return this.query},t.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},t.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},t.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},t.QueryParser.parseClause=function(e){var n=e.peekLexeme();if(n!=null)switch(n.type){case t.QueryLexer.PRESENCE:return t.QueryParser.parsePresence;case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expected either a field or a term, found "+n.type;throw n.str.length>=1&&(r+=" with value '"+n.str+"'"),new t.QueryParseError(r,n.start,n.end)}},t.QueryParser.parsePresence=function(e){var n=e.consumeLexeme();if(n!=null){switch(n.str){case"-":e.currentClause.presence=t.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=t.Query.presence.REQUIRED;break;default:var r="unrecognised presence operator'"+n.str+"'";throw new t.QueryParseError(r,n.start,n.end)}var i=e.peekLexeme();if(i==null){var r="expecting term or field, found nothing";throw new t.QueryParseError(r,n.start,n.end)}switch(i.type){case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expecting term or field, found '"+i.type+"'";throw new t.QueryParseError(r,i.start,i.end)}}},t.QueryParser.parseField=function(e){var n=e.consumeLexeme();if(n!=null){if(e.query.allFields.indexOf(n.str)==-1){var r=e.query.allFields.map(function(o){return"'"+o+"'"}).join(", "),i="unrecognised field '"+n.str+"', possible fields: "+r;throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.fields=[n.str];var s=e.peekLexeme();if(s==null){var i="expecting term, found nothing";throw new t.QueryParseError(i,n.start,n.end)}switch(s.type){case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var i="expecting term, found '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseTerm=function(e){var n=e.consumeLexeme();if(n!=null){e.currentClause.term=n.str.toLowerCase(),n.str.indexOf("*")!=-1&&(e.currentClause.usePipeline=!1);var r=e.peekLexeme();if(r==null){e.nextClause();return}switch(r.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+r.type+"'";throw new t.QueryParseError(i,r.start,r.end)}}},t.QueryParser.parseEditDistance=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="edit distance must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.editDistance=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseBoost=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="boost must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.boost=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},function(e,n){typeof define=="function"&&define.amd?define(n):typeof se=="object"?oe.exports=n():e.lunr=n()}(this,function(){return t})})()});var re=[];function G(t,e){re.push({selector:e,constructor:t})}var U=class{constructor(){this.alwaysVisibleMember=null;this.createComponents(document.body),this.ensureActivePageVisible(),this.ensureFocusedElementVisible(),this.listenForCodeCopies(),window.addEventListener("hashchange",()=>this.ensureFocusedElementVisible())}createComponents(e){re.forEach(n=>{e.querySelectorAll(n.selector).forEach(r=>{r.dataset.hasInstance||(new n.constructor({el:r,app:this}),r.dataset.hasInstance=String(!0))})})}filterChanged(){this.ensureFocusedElementVisible()}ensureActivePageVisible(){let e=document.querySelector(".tsd-navigation .current"),n=e?.parentElement;for(;n&&!n.classList.contains(".tsd-navigation");)n instanceof HTMLDetailsElement&&(n.open=!0),n=n.parentElement;if(e){let r=e.getBoundingClientRect().top-document.documentElement.clientHeight/4;document.querySelector(".site-menu").scrollTop=r}}ensureFocusedElementVisible(){if(this.alwaysVisibleMember&&(this.alwaysVisibleMember.classList.remove("always-visible"),this.alwaysVisibleMember.firstElementChild.remove(),this.alwaysVisibleMember=null),!location.hash)return;let e=document.getElementById(location.hash.substring(1));if(!e)return;let n=e.parentElement;for(;n&&n.tagName!=="SECTION";)n=n.parentElement;if(n&&n.offsetParent==null){this.alwaysVisibleMember=n,n.classList.add("always-visible");let r=document.createElement("p");r.classList.add("warning"),r.textContent="This member is normally hidden due to your filter settings.",n.prepend(r)}}listenForCodeCopies(){document.querySelectorAll("pre > button").forEach(e=>{let n;e.addEventListener("click",()=>{e.previousElementSibling instanceof HTMLElement&&navigator.clipboard.writeText(e.previousElementSibling.innerText.trim()),e.textContent="Copied!",e.classList.add("visible"),clearTimeout(n),n=setTimeout(()=>{e.classList.remove("visible"),n=setTimeout(()=>{e.textContent="Copy"},100)},1e3)})})}};var ie=(t,e=100)=>{let n;return()=>{clearTimeout(n),n=setTimeout(()=>t(),e)}};var de=De(ae());async function le(t,e){if(!window.searchData)return;let n=await fetch(window.searchData),r=new Blob([await n.arrayBuffer()]).stream().pipeThrough(new DecompressionStream("gzip")),i=await new Response(r).json();t.data=i,t.index=de.Index.load(i.index),e.classList.remove("loading"),e.classList.add("ready")}function he(){let t=document.getElementById("tsd-search");if(!t)return;let e={base:t.dataset.base+"/"},n=document.getElementById("tsd-search-script");t.classList.add("loading"),n&&(n.addEventListener("error",()=>{t.classList.remove("loading"),t.classList.add("failure")}),n.addEventListener("load",()=>{le(e,t)}),le(e,t));let r=document.querySelector("#tsd-search input"),i=document.querySelector("#tsd-search .results");if(!r||!i)throw new Error("The input field or the result list wrapper was not found");let s=!1;i.addEventListener("mousedown",()=>s=!0),i.addEventListener("mouseup",()=>{s=!1,t.classList.remove("has-focus")}),r.addEventListener("focus",()=>t.classList.add("has-focus")),r.addEventListener("blur",()=>{s||(s=!1,t.classList.remove("has-focus"))}),Ae(t,i,r,e)}function Ae(t,e,n,r){n.addEventListener("input",ie(()=>{Ne(t,e,n,r)},200));let i=!1;n.addEventListener("keydown",s=>{i=!0,s.key=="Enter"?Ve(e,n):s.key=="Escape"?n.blur():s.key=="ArrowUp"?ue(e,-1):s.key==="ArrowDown"?ue(e,1):i=!1}),n.addEventListener("keypress",s=>{i&&s.preventDefault()}),document.body.addEventListener("keydown",s=>{s.altKey||s.ctrlKey||s.metaKey||!n.matches(":focus")&&s.key==="/"&&(n.focus(),s.preventDefault())})}function Ne(t,e,n,r){if(!r.index||!r.data)return;e.textContent="";let i=n.value.trim(),s=i?r.index.search(`*${i}*`):[];for(let o=0;oa.score-o.score);for(let o=0,a=Math.min(10,s.length);o`,d=ce(l.name,i);globalThis.DEBUG_SEARCH_WEIGHTS&&(d+=` (score: ${s[o].score.toFixed(2)})`),l.parent&&(d=` + ${ce(l.parent,i)}.${d}`);let v=document.createElement("li");v.classList.value=l.classes??"";let f=document.createElement("a");f.href=r.base+l.url,f.innerHTML=u+d,v.append(f),e.appendChild(v)}}function ue(t,e){let n=t.querySelector(".current");if(!n)n=t.querySelector(e==1?"li:first-child":"li:last-child"),n&&n.classList.add("current");else{let r=n;if(e===1)do r=r.nextElementSibling??void 0;while(r instanceof HTMLElement&&r.offsetParent==null);else do r=r.previousElementSibling??void 0;while(r instanceof HTMLElement&&r.offsetParent==null);r&&(n.classList.remove("current"),r.classList.add("current"))}}function Ve(t,e){let n=t.querySelector(".current");if(n||(n=t.querySelector("li:first-child")),n){let r=n.querySelector("a");r&&(window.location.href=r.href),e.blur()}}function ce(t,e){if(e==="")return t;let n=t.toLocaleLowerCase(),r=e.toLocaleLowerCase(),i=[],s=0,o=n.indexOf(r);for(;o!=-1;)i.push(K(t.substring(s,o)),`${K(t.substring(o,o+r.length))}`),s=o+r.length,o=n.indexOf(r,s);return i.push(K(t.substring(s))),i.join("")}var Be={"&":"&","<":"<",">":">","'":"'",'"':"""};function K(t){return t.replace(/[&<>"'"]/g,e=>Be[e])}var C=class{constructor(e){this.el=e.el,this.app=e.app}};var F="mousedown",pe="mousemove",B="mouseup",J={x:0,y:0},fe=!1,ee=!1,He=!1,D=!1,me=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);document.documentElement.classList.add(me?"is-mobile":"not-mobile");me&&"ontouchstart"in document.documentElement&&(He=!0,F="touchstart",pe="touchmove",B="touchend");document.addEventListener(F,t=>{ee=!0,D=!1;let e=F=="touchstart"?t.targetTouches[0]:t;J.y=e.pageY||0,J.x=e.pageX||0});document.addEventListener(pe,t=>{if(ee&&!D){let e=F=="touchstart"?t.targetTouches[0]:t,n=J.x-(e.pageX||0),r=J.y-(e.pageY||0);D=Math.sqrt(n*n+r*r)>10}});document.addEventListener(B,()=>{ee=!1});document.addEventListener("click",t=>{fe&&(t.preventDefault(),t.stopImmediatePropagation(),fe=!1)});var X=class extends C{constructor(n){super(n);this.className=this.el.dataset.toggle||"",this.el.addEventListener(B,r=>this.onPointerUp(r)),this.el.addEventListener("click",r=>r.preventDefault()),document.addEventListener(F,r=>this.onDocumentPointerDown(r)),document.addEventListener(B,r=>this.onDocumentPointerUp(r))}setActive(n){if(this.active==n)return;this.active=n,document.documentElement.classList.toggle("has-"+this.className,n),this.el.classList.toggle("active",n);let r=(this.active?"to-has-":"from-has-")+this.className;document.documentElement.classList.add(r),setTimeout(()=>document.documentElement.classList.remove(r),500)}onPointerUp(n){D||(this.setActive(!0),n.preventDefault())}onDocumentPointerDown(n){if(this.active){if(n.target.closest(".col-sidebar, .tsd-filter-group"))return;this.setActive(!1)}}onDocumentPointerUp(n){if(!D&&this.active&&n.target.closest(".col-sidebar")){let r=n.target.closest("a");if(r){let i=window.location.href;i.indexOf("#")!=-1&&(i=i.substring(0,i.indexOf("#"))),r.href.substring(0,i.length)==i&&setTimeout(()=>this.setActive(!1),250)}}}};var te;try{te=localStorage}catch{te={getItem(){return null},setItem(){}}}var Q=te;var ve=document.head.appendChild(document.createElement("style"));ve.dataset.for="filters";var Y=class extends C{constructor(n){super(n);this.key=`filter-${this.el.name}`,this.value=this.el.checked,this.el.addEventListener("change",()=>{this.setLocalStorage(this.el.checked)}),this.setLocalStorage(this.fromLocalStorage()),ve.innerHTML+=`html:not(.${this.key}) .tsd-is-${this.el.name} { display: none; } +`}fromLocalStorage(){let n=Q.getItem(this.key);return n?n==="true":this.el.checked}setLocalStorage(n){Q.setItem(this.key,n.toString()),this.value=n,this.handleValueChange()}handleValueChange(){this.el.checked=this.value,document.documentElement.classList.toggle(this.key,this.value),this.app.filterChanged(),document.querySelectorAll(".tsd-index-section").forEach(n=>{n.style.display="block";let r=Array.from(n.querySelectorAll(".tsd-index-link")).every(i=>i.offsetParent==null);n.style.display=r?"none":"block"})}};var Z=class extends C{constructor(n){super(n);this.summary=this.el.querySelector(".tsd-accordion-summary"),this.icon=this.summary.querySelector("svg"),this.key=`tsd-accordion-${this.summary.dataset.key??this.summary.textContent.trim().replace(/\s+/g,"-").toLowerCase()}`;let r=Q.getItem(this.key);this.el.open=r?r==="true":this.el.open,this.el.addEventListener("toggle",()=>this.update());let i=this.summary.querySelector("a");i&&i.addEventListener("click",()=>{location.assign(i.href)}),this.update()}update(){this.icon.style.transform=`rotate(${this.el.open?0:-90}deg)`,Q.setItem(this.key,this.el.open.toString())}};function ge(t){let e=Q.getItem("tsd-theme")||"os";t.value=e,ye(e),t.addEventListener("change",()=>{Q.setItem("tsd-theme",t.value),ye(t.value)})}function ye(t){document.documentElement.dataset.theme=t}var Le;function be(){let t=document.getElementById("tsd-nav-script");t&&(t.addEventListener("load",xe),xe())}async function xe(){let t=document.getElementById("tsd-nav-container");if(!t||!window.navigationData)return;let n=await(await fetch(window.navigationData)).arrayBuffer(),r=new Blob([n]).stream().pipeThrough(new DecompressionStream("gzip")),i=await new Response(r).json();Le=t.dataset.base+"/",t.innerHTML="";for(let s of i)we(s,t,[]);window.app.createComponents(t),window.app.ensureActivePageVisible()}function we(t,e,n){let r=e.appendChild(document.createElement("li"));if(t.children){let i=[...n,t.text],s=r.appendChild(document.createElement("details"));s.className=t.class?`${t.class} tsd-index-accordion`:"tsd-index-accordion",s.dataset.key=i.join("$");let o=s.appendChild(document.createElement("summary"));o.className="tsd-accordion-summary",o.innerHTML='',Ee(t,o);let a=s.appendChild(document.createElement("div"));a.className="tsd-accordion-details";let l=a.appendChild(document.createElement("ul"));l.className="tsd-nested-navigation";for(let u of t.children)we(u,l,i)}else Ee(t,r,t.class)}function Ee(t,e,n){if(t.path){let r=e.appendChild(document.createElement("a"));r.href=Le+t.path,n&&(r.className=n),location.href===r.href&&r.classList.add("current"),t.kind&&(r.innerHTML=``),r.appendChild(document.createElement("span")).textContent=t.text}else e.appendChild(document.createElement("span")).textContent=t.text}G(X,"a[data-toggle]");G(Z,".tsd-index-accordion");G(Y,".tsd-filter-item input[type=checkbox]");var Se=document.getElementById("tsd-theme");Se&&ge(Se);var je=new U;Object.defineProperty(window,"app",{value:je});he();be();})(); +/*! Bundled license information: + +lunr/lunr.js: + (** + * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9 + * Copyright (C) 2020 Oliver Nightingale + * @license MIT + *) + (*! + * lunr.utils + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Set + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.tokenizer + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Pipeline + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Vector + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.stemmer + * Copyright (C) 2020 Oliver Nightingale + * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt + *) + (*! + * lunr.stopWordFilter + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.trimmer + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.TokenSet + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Index + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Builder + * Copyright (C) 2020 Oliver Nightingale + *) +*/ diff --git a/docs/typedocs/assets/navigation.js b/docs/typedocs/assets/navigation.js new file mode 100644 index 000000000..e15e6f057 --- /dev/null +++ b/docs/typedocs/assets/navigation.js @@ -0,0 +1 @@ +window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAAE52YS2/UMBCA/8ueKyoQQqg3um3ZFS0tTQoHxMFNZrPWJnZkOzQrxH/H2W0eTuLxLJceOp+/yfjt/flnYaA2i4vFUgoBieFSxPsSFmeLkpmt/T+IqtDnbvTN1hS5RXZcpIuLj3/POsudFKDkF9ivC5ZBVIIwkWGm0mOhFwy570DrpgXPhMUVzH2tnwzZ4/pBcam42c87+7jf9BnEk+H5oOQkZ1qDPm8jbtu374atV8aUy5zb/pi272OY4ZY/K6b2nm8YRjHLsd5PSSKruU9xwmRPzLKAyhIEW5oqO7iXUu6uhVF7r3PEEcy5WW4ZF17jazxsumReiQ0R2ucy2XkNTZDoWAFLQaGmI0L0xVCUOTOAGlso7FxuwV/nIUh0PIIG9dv7WUOGaIxrVBbXBE+3b94xYTcj7zhMwP9w33JtQJyQo21wSq6o9E9slwpbrxgU0ms7RqkWm3vDvbvLkKEa12IjcV9DUG2hwXEpqvWxTHChBaiuaC+ScM0tRbU+landB9rVV+Xes8SDn5bnSr6IXLKUnsptQcgG2nB7oeDIxO2RsO9aKemdFIdg2HEDcG1TFsiuPEDCvhVT6Y1UO2w2DJmwcS0SWXCRxYoJvfGvgjFHMRvIlC0rfT3t/eoRGHa311Ofso3TTeuilMrgs3OODWcY33bxHPM0IQu3f+M6qgqvuSNINjvW4wfCxNcxBKOtgmueYTN3yJxi5IFxm5J0ezMQNHtPhu1fwbzYJeo+kVztAAn77iuTScIqHnMkc1l5az9GqZaVPUOlXekF+jaYY6kZvlUQEh8Qqu8Hy3MIVH9kwsYH8I9LEyMYVCUC28cACfvsFaS/GPqMDkRyogdnGw+bouqZ4QdHT5BsBTdxjXefSxGs9s4VMHZE2BZavfRV25LoenAggtP76KK8t+Iafwe0cYrpQcq8OXe8E2OAUHx4L9Xk/on8W8UhSHHgO04bD5s8PzINgmHHd1Aa2Rlew2EPXhO1oiOHz6IhQzXeVHmO+xqCarN3RG+39wTVFnqbuhTVirxNOwBzRTq/L5vjYKbSPoYZYqZ3t1KWc5X1MdSwVcDSZpnPGLoYZkiOp1o892DfVOJw3unzKeU6P7yfU87084zS09mu0pZiYG6mDoQjhqhzp+q8bjpZHV0GZrJJ9KI+iijsQAu8PJeYqH79A7K+WkArGQAA" \ No newline at end of file diff --git a/docs/typedocs/assets/search.js b/docs/typedocs/assets/search.js new file mode 100644 index 000000000..41c036d1a --- /dev/null +++ b/docs/typedocs/assets/search.js @@ -0,0 +1 @@ +window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file diff --git a/docs/typedocs/assets/style.css b/docs/typedocs/assets/style.css new file mode 100644 index 000000000..108428c3f --- /dev/null +++ b/docs/typedocs/assets/style.css @@ -0,0 +1,1383 @@ +:root { + /* Light */ + --light-color-background: #f2f4f8; + --light-color-background-secondary: #eff0f1; + --light-color-warning-text: #222; + --light-color-background-warning: #e6e600; + --light-color-icon-background: var(--light-color-background); + --light-color-accent: #c5c7c9; + --light-color-active-menu-item: var(--light-color-accent); + --light-color-text: #222; + --light-color-text-aside: #6e6e6e; + --light-color-link: #1f70c2; + + --light-color-ts-project: #b111c9; + --light-color-ts-module: var(--light-color-ts-project); + --light-color-ts-namespace: var(--light-color-ts-project); + --light-color-ts-enum: #7e6f15; + --light-color-ts-enum-member: var(--light-color-ts-enum); + --light-color-ts-variable: #4760ec; + --light-color-ts-function: #572be7; + --light-color-ts-class: #1f70c2; + --light-color-ts-interface: #108024; + --light-color-ts-constructor: var(--light-color-ts-class); + --light-color-ts-property: var(--light-color-ts-variable); + --light-color-ts-method: var(--light-color-ts-function); + --light-color-ts-call-signature: var(--light-color-ts-method); + --light-color-ts-index-signature: var(--light-color-ts-property); + --light-color-ts-constructor-signature: var(--light-color-ts-constructor); + --light-color-ts-parameter: var(--light-color-ts-variable); + /* type literal not included as links will never be generated to it */ + --light-color-ts-type-parameter: var(--light-color-ts-type-alias); + --light-color-ts-accessor: var(--light-color-ts-property); + --light-color-ts-get-signature: var(--light-color-ts-accessor); + --light-color-ts-set-signature: var(--light-color-ts-accessor); + --light-color-ts-type-alias: #d51270; + /* reference not included as links will be colored with the kind that it points to */ + + --light-external-icon: url("data:image/svg+xml;utf8,"); + --light-color-scheme: light; + + /* Dark */ + --dark-color-background: #2b2e33; + --dark-color-background-secondary: #1e2024; + --dark-color-background-warning: #bebe00; + --dark-color-warning-text: #222; + --dark-color-icon-background: var(--dark-color-background-secondary); + --dark-color-accent: #9096a2; + --dark-color-active-menu-item: #5d5d6a; + --dark-color-text: #f5f5f5; + --dark-color-text-aside: #dddddd; + --dark-color-link: #00aff4; + + --dark-color-ts-project: #e358ff; + --dark-color-ts-module: var(--dark-color-ts-project); + --dark-color-ts-namespace: var(--dark-color-ts-project); + --dark-color-ts-enum: #f4d93e; + --dark-color-ts-enum-member: var(--dark-color-ts-enum); + --dark-color-ts-variable: #798dff; + --dark-color-ts-function: #a280ff; + --dark-color-ts-class: #8ac4ff; + --dark-color-ts-interface: #6cff87; + --dark-color-ts-constructor: var(--dark-color-ts-class); + --dark-color-ts-property: var(--dark-color-ts-variable); + --dark-color-ts-method: var(--dark-color-ts-function); + --dark-color-ts-call-signature: var(--dark-color-ts-method); + --dark-color-ts-index-signature: var(--dark-color-ts-property); + --dark-color-ts-constructor-signature: var(--dark-color-ts-constructor); + --dark-color-ts-parameter: var(--dark-color-ts-variable); + /* type literal not included as links will never be generated to it */ + --dark-color-ts-type-parameter: var(--dark-color-ts-type-alias); + --dark-color-ts-accessor: var(--dark-color-ts-property); + --dark-color-ts-get-signature: var(--dark-color-ts-accessor); + --dark-color-ts-set-signature: var(--dark-color-ts-accessor); + --dark-color-ts-type-alias: #ff6492; + /* reference not included as links will be colored with the kind that it points to */ + + --dark-external-icon: url("data:image/svg+xml;utf8,"); + --dark-color-scheme: dark; +} + +@media (prefers-color-scheme: light) { + :root { + --color-background: var(--light-color-background); + --color-background-secondary: var(--light-color-background-secondary); + --color-background-warning: var(--light-color-background-warning); + --color-warning-text: var(--light-color-warning-text); + --color-icon-background: var(--light-color-icon-background); + --color-accent: var(--light-color-accent); + --color-active-menu-item: var(--light-color-active-menu-item); + --color-text: var(--light-color-text); + --color-text-aside: var(--light-color-text-aside); + --color-link: var(--light-color-link); + + --color-ts-module: var(--light-color-ts-module); + --color-ts-namespace: var(--light-color-ts-namespace); + --color-ts-enum: var(--light-color-ts-enum); + --color-ts-enum-member: var(--light-color-ts-enum-member); + --color-ts-variable: var(--light-color-ts-variable); + --color-ts-function: var(--light-color-ts-function); + --color-ts-class: var(--light-color-ts-class); + --color-ts-interface: var(--light-color-ts-interface); + --color-ts-constructor: var(--light-color-ts-constructor); + --color-ts-property: var(--light-color-ts-property); + --color-ts-method: var(--light-color-ts-method); + --color-ts-call-signature: var(--light-color-ts-call-signature); + --color-ts-index-signature: var(--light-color-ts-index-signature); + --color-ts-constructor-signature: var( + --light-color-ts-constructor-signature + ); + --color-ts-parameter: var(--light-color-ts-parameter); + --color-ts-type-parameter: var(--light-color-ts-type-parameter); + --color-ts-accessor: var(--light-color-ts-accessor); + --color-ts-get-signature: var(--light-color-ts-get-signature); + --color-ts-set-signature: var(--light-color-ts-set-signature); + --color-ts-type-alias: var(--light-color-ts-type-alias); + + --external-icon: var(--light-external-icon); + --color-scheme: var(--light-color-scheme); + } +} + +@media (prefers-color-scheme: dark) { + :root { + --color-background: var(--dark-color-background); + --color-background-secondary: var(--dark-color-background-secondary); + --color-background-warning: var(--dark-color-background-warning); + --color-warning-text: var(--dark-color-warning-text); + --color-icon-background: var(--dark-color-icon-background); + --color-accent: var(--dark-color-accent); + --color-active-menu-item: var(--dark-color-active-menu-item); + --color-text: var(--dark-color-text); + --color-text-aside: var(--dark-color-text-aside); + --color-link: var(--dark-color-link); + + --color-ts-module: var(--dark-color-ts-module); + --color-ts-namespace: var(--dark-color-ts-namespace); + --color-ts-enum: var(--dark-color-ts-enum); + --color-ts-enum-member: var(--dark-color-ts-enum-member); + --color-ts-variable: var(--dark-color-ts-variable); + --color-ts-function: var(--dark-color-ts-function); + --color-ts-class: var(--dark-color-ts-class); + --color-ts-interface: var(--dark-color-ts-interface); + --color-ts-constructor: var(--dark-color-ts-constructor); + --color-ts-property: var(--dark-color-ts-property); + --color-ts-method: var(--dark-color-ts-method); + --color-ts-call-signature: var(--dark-color-ts-call-signature); + --color-ts-index-signature: var(--dark-color-ts-index-signature); + --color-ts-constructor-signature: var( + --dark-color-ts-constructor-signature + ); + --color-ts-parameter: var(--dark-color-ts-parameter); + --color-ts-type-parameter: var(--dark-color-ts-type-parameter); + --color-ts-accessor: var(--dark-color-ts-accessor); + --color-ts-get-signature: var(--dark-color-ts-get-signature); + --color-ts-set-signature: var(--dark-color-ts-set-signature); + --color-ts-type-alias: var(--dark-color-ts-type-alias); + + --external-icon: var(--dark-external-icon); + --color-scheme: var(--dark-color-scheme); + } +} + +html { + color-scheme: var(--color-scheme); +} + +body { + margin: 0; +} + +:root[data-theme="light"] { + --color-background: var(--light-color-background); + --color-background-secondary: var(--light-color-background-secondary); + --color-background-warning: var(--light-color-background-warning); + --color-warning-text: var(--light-color-warning-text); + --color-icon-background: var(--light-color-icon-background); + --color-accent: var(--light-color-accent); + --color-active-menu-item: var(--light-color-active-menu-item); + --color-text: var(--light-color-text); + --color-text-aside: var(--light-color-text-aside); + --color-link: var(--light-color-link); + + --color-ts-module: var(--light-color-ts-module); + --color-ts-namespace: var(--light-color-ts-namespace); + --color-ts-enum: var(--light-color-ts-enum); + --color-ts-enum-member: var(--light-color-ts-enum-member); + --color-ts-variable: var(--light-color-ts-variable); + --color-ts-function: var(--light-color-ts-function); + --color-ts-class: var(--light-color-ts-class); + --color-ts-interface: var(--light-color-ts-interface); + --color-ts-constructor: var(--light-color-ts-constructor); + --color-ts-property: var(--light-color-ts-property); + --color-ts-method: var(--light-color-ts-method); + --color-ts-call-signature: var(--light-color-ts-call-signature); + --color-ts-index-signature: var(--light-color-ts-index-signature); + --color-ts-constructor-signature: var( + --light-color-ts-constructor-signature + ); + --color-ts-parameter: var(--light-color-ts-parameter); + --color-ts-type-parameter: var(--light-color-ts-type-parameter); + --color-ts-accessor: var(--light-color-ts-accessor); + --color-ts-get-signature: var(--light-color-ts-get-signature); + --color-ts-set-signature: var(--light-color-ts-set-signature); + --color-ts-type-alias: var(--light-color-ts-type-alias); + + --external-icon: var(--light-external-icon); + --color-scheme: var(--light-color-scheme); +} + +:root[data-theme="dark"] { + --color-background: var(--dark-color-background); + --color-background-secondary: var(--dark-color-background-secondary); + --color-background-warning: var(--dark-color-background-warning); + --color-warning-text: var(--dark-color-warning-text); + --color-icon-background: var(--dark-color-icon-background); + --color-accent: var(--dark-color-accent); + --color-active-menu-item: var(--dark-color-active-menu-item); + --color-text: var(--dark-color-text); + --color-text-aside: var(--dark-color-text-aside); + --color-link: var(--dark-color-link); + + --color-ts-module: var(--dark-color-ts-module); + --color-ts-namespace: var(--dark-color-ts-namespace); + --color-ts-enum: var(--dark-color-ts-enum); + --color-ts-enum-member: var(--dark-color-ts-enum-member); + --color-ts-variable: var(--dark-color-ts-variable); + --color-ts-function: var(--dark-color-ts-function); + --color-ts-class: var(--dark-color-ts-class); + --color-ts-interface: var(--dark-color-ts-interface); + --color-ts-constructor: var(--dark-color-ts-constructor); + --color-ts-property: var(--dark-color-ts-property); + --color-ts-method: var(--dark-color-ts-method); + --color-ts-call-signature: var(--dark-color-ts-call-signature); + --color-ts-index-signature: var(--dark-color-ts-index-signature); + --color-ts-constructor-signature: var( + --dark-color-ts-constructor-signature + ); + --color-ts-parameter: var(--dark-color-ts-parameter); + --color-ts-type-parameter: var(--dark-color-ts-type-parameter); + --color-ts-accessor: var(--dark-color-ts-accessor); + --color-ts-get-signature: var(--dark-color-ts-get-signature); + --color-ts-set-signature: var(--dark-color-ts-set-signature); + --color-ts-type-alias: var(--dark-color-ts-type-alias); + + --external-icon: var(--dark-external-icon); + --color-scheme: var(--dark-color-scheme); +} + +.always-visible, +.always-visible .tsd-signatures { + display: inherit !important; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + line-height: 1.2; +} + +h1 > a, +h2 > a, +h3 > a, +h4 > a, +h5 > a, +h6 > a { + text-decoration: none; + color: var(--color-text); +} + +h1 { + font-size: 1.875rem; + margin: 0.67rem 0; +} + +h2 { + font-size: 1.5rem; + margin: 0.83rem 0; +} + +h3 { + font-size: 1.25rem; + margin: 1rem 0; +} + +h4 { + font-size: 1.05rem; + margin: 1.33rem 0; +} + +h5 { + font-size: 1rem; + margin: 1.5rem 0; +} + +h6 { + font-size: 0.875rem; + margin: 2.33rem 0; +} + +.uppercase { + text-transform: uppercase; +} + +dl, +menu, +ol, +ul { + margin: 1em 0; +} + +dd { + margin: 0 0 0 40px; +} + +.container { + max-width: 1700px; + padding: 0 2rem; +} + +/* Footer */ +.tsd-generator { + border-top: 1px solid var(--color-accent); + padding-top: 1rem; + padding-bottom: 1rem; + max-height: 3.5rem; +} + +.tsd-generator > p { + margin-top: 0; + margin-bottom: 0; + padding: 0 1rem; +} + +.container-main { + margin: 0 auto; + /* toolbar, footer, margin */ + min-height: calc(100vh - 41px - 56px - 4rem); +} + +@keyframes fade-in { + from { + opacity: 0; + } + to { + opacity: 1; + } +} +@keyframes fade-out { + from { + opacity: 1; + visibility: visible; + } + to { + opacity: 0; + } +} +@keyframes fade-in-delayed { + 0% { + opacity: 0; + } + 33% { + opacity: 0; + } + 100% { + opacity: 1; + } +} +@keyframes fade-out-delayed { + 0% { + opacity: 1; + visibility: visible; + } + 66% { + opacity: 0; + } + 100% { + opacity: 0; + } +} +@keyframes pop-in-from-right { + from { + transform: translate(100%, 0); + } + to { + transform: translate(0, 0); + } +} +@keyframes pop-out-to-right { + from { + transform: translate(0, 0); + visibility: visible; + } + to { + transform: translate(100%, 0); + } +} +body { + background: var(--color-background); + font-family: "Segoe UI", sans-serif; + font-size: 16px; + color: var(--color-text); +} + +a { + color: var(--color-link); + text-decoration: none; +} +a:hover { + text-decoration: underline; +} +a.external[target="_blank"] { + background-image: var(--external-icon); + background-position: top 3px right; + background-repeat: no-repeat; + padding-right: 13px; +} + +code, +pre { + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; + padding: 0.2em; + margin: 0; + font-size: 0.875rem; + border-radius: 0.8em; +} + +pre { + position: relative; + white-space: pre; + white-space: pre-wrap; + word-wrap: break-word; + padding: 10px; + border: 1px solid var(--color-accent); +} +pre code { + padding: 0; + font-size: 100%; +} +pre > button { + position: absolute; + top: 10px; + right: 10px; + opacity: 0; + transition: opacity 0.1s; + box-sizing: border-box; +} +pre:hover > button, +pre > button.visible { + opacity: 1; +} + +blockquote { + margin: 1em 0; + padding-left: 1em; + border-left: 4px solid gray; +} + +.tsd-typography { + line-height: 1.333em; +} +.tsd-typography ul { + list-style: square; + padding: 0 0 0 20px; + margin: 0; +} +.tsd-typography .tsd-index-panel h3, +.tsd-index-panel .tsd-typography h3, +.tsd-typography h4, +.tsd-typography h5, +.tsd-typography h6 { + font-size: 1em; +} +.tsd-typography h5, +.tsd-typography h6 { + font-weight: normal; +} +.tsd-typography p, +.tsd-typography ul, +.tsd-typography ol { + margin: 1em 0; +} +.tsd-typography table { + border-collapse: collapse; + border: none; +} +.tsd-typography td, +.tsd-typography th { + padding: 6px 13px; + border: 1px solid var(--color-accent); +} +.tsd-typography thead, +.tsd-typography tr:nth-child(even) { + background-color: var(--color-background-secondary); +} + +.tsd-breadcrumb { + margin: 0; + padding: 0; + color: var(--color-text-aside); +} +.tsd-breadcrumb a { + color: var(--color-text-aside); + text-decoration: none; +} +.tsd-breadcrumb a:hover { + text-decoration: underline; +} +.tsd-breadcrumb li { + display: inline; +} +.tsd-breadcrumb li:after { + content: " / "; +} + +.tsd-comment-tags { + display: flex; + flex-direction: column; +} +dl.tsd-comment-tag-group { + display: flex; + align-items: center; + overflow: hidden; + margin: 0.5em 0; +} +dl.tsd-comment-tag-group dt { + display: flex; + margin-right: 0.5em; + font-size: 0.875em; + font-weight: normal; +} +dl.tsd-comment-tag-group dd { + margin: 0; +} +code.tsd-tag { + padding: 0.25em 0.4em; + border: 0.1em solid var(--color-accent); + margin-right: 0.25em; + font-size: 70%; +} +h1 code.tsd-tag:first-of-type { + margin-left: 0.25em; +} + +dl.tsd-comment-tag-group dd:before, +dl.tsd-comment-tag-group dd:after { + content: " "; +} +dl.tsd-comment-tag-group dd pre, +dl.tsd-comment-tag-group dd:after { + clear: both; +} +dl.tsd-comment-tag-group p { + margin: 0; +} + +.tsd-panel.tsd-comment .lead { + font-size: 1.1em; + line-height: 1.333em; + margin-bottom: 2em; +} +.tsd-panel.tsd-comment .lead:last-child { + margin-bottom: 0; +} + +.tsd-filter-visibility h4 { + font-size: 1rem; + padding-top: 0.75rem; + padding-bottom: 0.5rem; + margin: 0; +} +.tsd-filter-item:not(:last-child) { + margin-bottom: 0.5rem; +} +.tsd-filter-input { + display: flex; + width: fit-content; + width: -moz-fit-content; + align-items: center; + user-select: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + cursor: pointer; +} +.tsd-filter-input input[type="checkbox"] { + cursor: pointer; + position: absolute; + width: 1.5em; + height: 1.5em; + opacity: 0; +} +.tsd-filter-input input[type="checkbox"]:disabled { + pointer-events: none; +} +.tsd-filter-input svg { + cursor: pointer; + width: 1.5em; + height: 1.5em; + margin-right: 0.5em; + border-radius: 0.33em; + /* Leaving this at full opacity breaks event listeners on Firefox. + Don't remove unless you know what you're doing. */ + opacity: 0.99; +} +.tsd-filter-input input[type="checkbox"]:focus + svg { + transform: scale(0.95); +} +.tsd-filter-input input[type="checkbox"]:focus:not(:focus-visible) + svg { + transform: scale(1); +} +.tsd-checkbox-background { + fill: var(--color-accent); +} +input[type="checkbox"]:checked ~ svg .tsd-checkbox-checkmark { + stroke: var(--color-text); +} +.tsd-filter-input input:disabled ~ svg > .tsd-checkbox-background { + fill: var(--color-background); + stroke: var(--color-accent); + stroke-width: 0.25rem; +} +.tsd-filter-input input:disabled ~ svg > .tsd-checkbox-checkmark { + stroke: var(--color-accent); +} + +.tsd-theme-toggle { + padding-top: 0.75rem; +} +.tsd-theme-toggle > h4 { + display: inline; + vertical-align: middle; + margin-right: 0.75rem; +} + +.tsd-hierarchy { + list-style: square; + margin: 0; +} +.tsd-hierarchy .target { + font-weight: bold; +} + +.tsd-panel-group.tsd-index-group { + margin-bottom: 0; +} +.tsd-index-panel .tsd-index-list { + list-style: none; + line-height: 1.333em; + margin: 0; + padding: 0.25rem 0 0 0; + overflow: hidden; + display: grid; + grid-template-columns: repeat(3, 1fr); + column-gap: 1rem; + grid-template-rows: auto; +} +@media (max-width: 1024px) { + .tsd-index-panel .tsd-index-list { + grid-template-columns: repeat(2, 1fr); + } +} +@media (max-width: 768px) { + .tsd-index-panel .tsd-index-list { + grid-template-columns: repeat(1, 1fr); + } +} +.tsd-index-panel .tsd-index-list li { + -webkit-page-break-inside: avoid; + -moz-page-break-inside: avoid; + -ms-page-break-inside: avoid; + -o-page-break-inside: avoid; + page-break-inside: avoid; +} + +.tsd-flag { + display: inline-block; + padding: 0.25em 0.4em; + border-radius: 4px; + color: var(--color-comment-tag-text); + background-color: var(--color-comment-tag); + text-indent: 0; + font-size: 75%; + line-height: 1; + font-weight: normal; +} + +.tsd-anchor { + position: relative; + top: -100px; +} + +.tsd-member { + position: relative; +} +.tsd-member .tsd-anchor + h3 { + display: flex; + align-items: center; + margin-top: 0; + margin-bottom: 0; + border-bottom: none; +} + +.tsd-navigation.settings { + margin: 1rem 0; +} +.tsd-navigation > a, +.tsd-navigation .tsd-accordion-summary { + width: calc(100% - 0.5rem); +} +.tsd-navigation a, +.tsd-navigation summary > span, +.tsd-page-navigation a { + display: inline-flex; + align-items: center; + padding: 0.25rem; + color: var(--color-text); + text-decoration: none; + box-sizing: border-box; +} +.tsd-navigation a.current, +.tsd-page-navigation a.current { + background: var(--color-active-menu-item); +} +.tsd-navigation a:hover, +.tsd-page-navigation a:hover { + text-decoration: underline; +} +.tsd-navigation ul, +.tsd-page-navigation ul { + margin-top: 0; + margin-bottom: 0; + padding: 0; + list-style: none; +} +.tsd-navigation li, +.tsd-page-navigation li { + padding: 0; + max-width: 100%; +} +.tsd-nested-navigation { + margin-left: 3rem; +} +.tsd-nested-navigation > li > details { + margin-left: -1.5rem; +} +.tsd-small-nested-navigation { + margin-left: 1.5rem; +} +.tsd-small-nested-navigation > li > details { + margin-left: -1.5rem; +} + +.tsd-nested-navigation > li > a, +.tsd-nested-navigation > li > span { + width: calc(100% - 1.75rem - 0.5rem); +} + +.tsd-page-navigation ul { + padding-left: 1.75rem; +} + +#tsd-sidebar-links a { + margin-top: 0; + margin-bottom: 0.5rem; + line-height: 1.25rem; +} +#tsd-sidebar-links a:last-of-type { + margin-bottom: 0; +} + +a.tsd-index-link { + padding: 0.25rem 0 !important; + font-size: 1rem; + line-height: 1.25rem; + display: inline-flex; + align-items: center; + color: var(--color-text); +} +.tsd-accordion-summary { + list-style-type: none; /* hide marker on non-safari */ + outline: none; /* broken on safari, so just hide it */ +} +.tsd-accordion-summary::-webkit-details-marker { + display: none; /* hide marker on safari */ +} +.tsd-accordion-summary, +.tsd-accordion-summary a { + user-select: none; + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + + cursor: pointer; +} +.tsd-accordion-summary a { + width: calc(100% - 1.5rem); +} +.tsd-accordion-summary > * { + margin-top: 0; + margin-bottom: 0; + padding-top: 0; + padding-bottom: 0; +} +.tsd-index-accordion .tsd-accordion-summary > svg { + margin-left: 0.25rem; +} +.tsd-index-content > :not(:first-child) { + margin-top: 0.75rem; +} +.tsd-index-heading { + margin-top: 1.5rem; + margin-bottom: 0.75rem; +} + +.tsd-kind-icon { + margin-right: 0.5rem; + width: 1.25rem; + height: 1.25rem; + min-width: 1.25rem; + min-height: 1.25rem; +} +.tsd-kind-icon path { + transform-origin: center; + transform: scale(1.1); +} +.tsd-signature > .tsd-kind-icon { + margin-right: 0.8rem; +} + +.tsd-panel { + margin-bottom: 2.5rem; +} +.tsd-panel.tsd-member { + margin-bottom: 4rem; +} +.tsd-panel:empty { + display: none; +} +.tsd-panel > h1, +.tsd-panel > h2, +.tsd-panel > h3 { + margin: 1.5rem -1.5rem 0.75rem -1.5rem; + padding: 0 1.5rem 0.75rem 1.5rem; +} +.tsd-panel > h1.tsd-before-signature, +.tsd-panel > h2.tsd-before-signature, +.tsd-panel > h3.tsd-before-signature { + margin-bottom: 0; + border-bottom: none; +} + +.tsd-panel-group { + margin: 4rem 0; +} +.tsd-panel-group.tsd-index-group { + margin: 2rem 0; +} +.tsd-panel-group.tsd-index-group details { + margin: 2rem 0; +} + +#tsd-search { + transition: background-color 0.2s; +} +#tsd-search .title { + position: relative; + z-index: 2; +} +#tsd-search .field { + position: absolute; + left: 0; + top: 0; + right: 2.5rem; + height: 100%; +} +#tsd-search .field input { + box-sizing: border-box; + position: relative; + top: -50px; + z-index: 1; + width: 100%; + padding: 0 10px; + opacity: 0; + outline: 0; + border: 0; + background: transparent; + color: var(--color-text); +} +#tsd-search .field label { + position: absolute; + overflow: hidden; + right: -40px; +} +#tsd-search .field input, +#tsd-search .title, +#tsd-toolbar-links a { + transition: opacity 0.2s; +} +#tsd-search .results { + position: absolute; + visibility: hidden; + top: 40px; + width: 100%; + margin: 0; + padding: 0; + list-style: none; + box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); +} +#tsd-search .results li { + background-color: var(--color-background); + line-height: initial; + padding: 4px; +} +#tsd-search .results li:nth-child(even) { + background-color: var(--color-background-secondary); +} +#tsd-search .results li.state { + display: none; +} +#tsd-search .results li.current:not(.no-results), +#tsd-search .results li:hover:not(.no-results) { + background-color: var(--color-accent); +} +#tsd-search .results a { + display: flex; + align-items: center; + padding: 0.25rem; + box-sizing: border-box; +} +#tsd-search .results a:before { + top: 10px; +} +#tsd-search .results span.parent { + color: var(--color-text-aside); + font-weight: normal; +} +#tsd-search.has-focus { + background-color: var(--color-accent); +} +#tsd-search.has-focus .field input { + top: 0; + opacity: 1; +} +#tsd-search.has-focus .title, +#tsd-search.has-focus #tsd-toolbar-links a { + z-index: 0; + opacity: 0; +} +#tsd-search.has-focus .results { + visibility: visible; +} +#tsd-search.loading .results li.state.loading { + display: block; +} +#tsd-search.failure .results li.state.failure { + display: block; +} + +#tsd-toolbar-links { + position: absolute; + top: 0; + right: 2rem; + height: 100%; + display: flex; + align-items: center; + justify-content: flex-end; +} +#tsd-toolbar-links a { + margin-left: 1.5rem; +} +#tsd-toolbar-links a:hover { + text-decoration: underline; +} + +.tsd-signature { + margin: 0 0 1rem 0; + padding: 1rem 0.5rem; + border: 1px solid var(--color-accent); + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; + font-size: 14px; + overflow-x: auto; +} + +.tsd-signature-symbol { + color: var(--color-text-aside); + font-weight: normal; +} + +.tsd-signature-type { + font-style: italic; + font-weight: normal; +} + +.tsd-signatures { + padding: 0; + margin: 0 0 1em 0; + list-style-type: none; +} +.tsd-signatures .tsd-signature { + margin: 0; + border-color: var(--color-accent); + border-width: 1px 0; + transition: background-color 0.1s; +} +.tsd-description .tsd-signatures .tsd-signature { + border-width: 1px; +} + +ul.tsd-parameter-list, +ul.tsd-type-parameter-list { + list-style: square; + margin: 0; + padding-left: 20px; +} +ul.tsd-parameter-list > li.tsd-parameter-signature, +ul.tsd-type-parameter-list > li.tsd-parameter-signature { + list-style: none; + margin-left: -20px; +} +ul.tsd-parameter-list h5, +ul.tsd-type-parameter-list h5 { + font-size: 16px; + margin: 1em 0 0.5em 0; +} +.tsd-sources { + margin-top: 1rem; + font-size: 0.875em; +} +.tsd-sources a { + color: var(--color-text-aside); + text-decoration: underline; +} +.tsd-sources ul { + list-style: none; + padding: 0; +} + +.tsd-page-toolbar { + position: sticky; + z-index: 1; + top: 0; + left: 0; + width: 100%; + color: var(--color-text); + background: var(--color-background-secondary); + border-bottom: 1px var(--color-accent) solid; + transition: transform 0.3s ease-in-out; +} +.tsd-page-toolbar a { + color: var(--color-text); + text-decoration: none; +} +.tsd-page-toolbar a.title { + font-weight: bold; +} +.tsd-page-toolbar a.title:hover { + text-decoration: underline; +} +.tsd-page-toolbar .tsd-toolbar-contents { + display: flex; + justify-content: space-between; + height: 2.5rem; + margin: 0 auto; +} +.tsd-page-toolbar .table-cell { + position: relative; + white-space: nowrap; + line-height: 40px; +} +.tsd-page-toolbar .table-cell:first-child { + width: 100%; +} +.tsd-page-toolbar .tsd-toolbar-icon { + box-sizing: border-box; + line-height: 0; + padding: 12px 0; +} + +.tsd-widget { + display: inline-block; + overflow: hidden; + opacity: 0.8; + height: 40px; + transition: + opacity 0.1s, + background-color 0.2s; + vertical-align: bottom; + cursor: pointer; +} +.tsd-widget:hover { + opacity: 0.9; +} +.tsd-widget.active { + opacity: 1; + background-color: var(--color-accent); +} +.tsd-widget.no-caption { + width: 40px; +} +.tsd-widget.no-caption:before { + margin: 0; +} + +.tsd-widget.options, +.tsd-widget.menu { + display: none; +} +input[type="checkbox"] + .tsd-widget:before { + background-position: -120px 0; +} +input[type="checkbox"]:checked + .tsd-widget:before { + background-position: -160px 0; +} + +img { + max-width: 100%; +} + +.tsd-anchor-icon { + display: inline-flex; + align-items: center; + margin-left: 0.5rem; + vertical-align: middle; + color: var(--color-text); +} + +.tsd-anchor-icon svg { + width: 1em; + height: 1em; + visibility: hidden; +} + +.tsd-anchor-link:hover > .tsd-anchor-icon svg { + visibility: visible; +} + +.deprecated { + text-decoration: line-through !important; +} + +.warning { + padding: 1rem; + color: var(--color-warning-text); + background: var(--color-background-warning); +} + +.tsd-kind-project { + color: var(--color-ts-project); +} +.tsd-kind-module { + color: var(--color-ts-module); +} +.tsd-kind-namespace { + color: var(--color-ts-namespace); +} +.tsd-kind-enum { + color: var(--color-ts-enum); +} +.tsd-kind-enum-member { + color: var(--color-ts-enum-member); +} +.tsd-kind-variable { + color: var(--color-ts-variable); +} +.tsd-kind-function { + color: var(--color-ts-function); +} +.tsd-kind-class { + color: var(--color-ts-class); +} +.tsd-kind-interface { + color: var(--color-ts-interface); +} +.tsd-kind-constructor { + color: var(--color-ts-constructor); +} +.tsd-kind-property { + color: var(--color-ts-property); +} +.tsd-kind-method { + color: var(--color-ts-method); +} +.tsd-kind-call-signature { + color: var(--color-ts-call-signature); +} +.tsd-kind-index-signature { + color: var(--color-ts-index-signature); +} +.tsd-kind-constructor-signature { + color: var(--color-ts-constructor-signature); +} +.tsd-kind-parameter { + color: var(--color-ts-parameter); +} +.tsd-kind-type-literal { + color: var(--color-ts-type-literal); +} +.tsd-kind-type-parameter { + color: var(--color-ts-type-parameter); +} +.tsd-kind-accessor { + color: var(--color-ts-accessor); +} +.tsd-kind-get-signature { + color: var(--color-ts-get-signature); +} +.tsd-kind-set-signature { + color: var(--color-ts-set-signature); +} +.tsd-kind-type-alias { + color: var(--color-ts-type-alias); +} + +/* if we have a kind icon, don't color the text by kind */ +.tsd-kind-icon ~ span { + color: var(--color-text); +} + +* { + scrollbar-width: thin; + scrollbar-color: var(--color-accent) var(--color-icon-background); +} + +*::-webkit-scrollbar { + width: 0.75rem; +} + +*::-webkit-scrollbar-track { + background: var(--color-icon-background); +} + +*::-webkit-scrollbar-thumb { + background-color: var(--color-accent); + border-radius: 999rem; + border: 0.25rem solid var(--color-icon-background); +} + +/* mobile */ +@media (max-width: 769px) { + .tsd-widget.options, + .tsd-widget.menu { + display: inline-block; + } + + .container-main { + display: flex; + } + html .col-content { + float: none; + max-width: 100%; + width: 100%; + } + html .col-sidebar { + position: fixed !important; + overflow-y: auto; + -webkit-overflow-scrolling: touch; + z-index: 1024; + top: 0 !important; + bottom: 0 !important; + left: auto !important; + right: 0 !important; + padding: 1.5rem 1.5rem 0 0; + width: 75vw; + visibility: hidden; + background-color: var(--color-background); + transform: translate(100%, 0); + } + html .col-sidebar > *:last-child { + padding-bottom: 20px; + } + html .overlay { + content: ""; + display: block; + position: fixed; + z-index: 1023; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: rgba(0, 0, 0, 0.75); + visibility: hidden; + } + + .to-has-menu .overlay { + animation: fade-in 0.4s; + } + + .to-has-menu .col-sidebar { + animation: pop-in-from-right 0.4s; + } + + .from-has-menu .overlay { + animation: fade-out 0.4s; + } + + .from-has-menu .col-sidebar { + animation: pop-out-to-right 0.4s; + } + + .has-menu body { + overflow: hidden; + } + .has-menu .overlay { + visibility: visible; + } + .has-menu .col-sidebar { + visibility: visible; + transform: translate(0, 0); + display: flex; + flex-direction: column; + gap: 1.5rem; + max-height: 100vh; + padding: 1rem 2rem; + } + .has-menu .tsd-navigation { + max-height: 100%; + } +} + +/* one sidebar */ +@media (min-width: 770px) { + .container-main { + display: grid; + grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); + grid-template-areas: "sidebar content"; + margin: 2rem auto; + } + + .col-sidebar { + grid-area: sidebar; + } + .col-content { + grid-area: content; + padding: 0 1rem; + } +} +@media (min-width: 770px) and (max-width: 1399px) { + .col-sidebar { + max-height: calc(100vh - 2rem - 42px); + overflow: auto; + position: sticky; + top: 42px; + padding-top: 1rem; + } + .site-menu { + margin-top: 1rem; + } +} + +/* two sidebars */ +@media (min-width: 1200px) { + .container-main { + grid-template-columns: minmax(0, 1fr) minmax(0, 2.5fr) minmax(0, 20rem); + grid-template-areas: "sidebar content toc"; + } + + .col-sidebar { + display: contents; + } + + .page-menu { + grid-area: toc; + padding-left: 1rem; + } + .site-menu { + grid-area: sidebar; + } + + .site-menu { + margin-top: 1rem 0; + } + + .page-menu, + .site-menu { + max-height: calc(100vh - 2rem - 42px); + overflow: auto; + position: sticky; + top: 42px; + } +} diff --git a/docs/typedocs/classes/GenUtils.html b/docs/typedocs/classes/GenUtils.html new file mode 100644 index 000000000..880e4350e --- /dev/null +++ b/docs/typedocs/classes/GenUtils.html @@ -0,0 +1,2455 @@ +GenUtils | monero-ts
+
+ +
+
+
+
+ +

Class GenUtils

+
+

Collection of general purpose utilities.

+
+
+
+

Hierarchy

+
    +
  • GenUtils
+
+
+
+ +
+
+

Constructors

+
+ +
+
+

Methods

+
+ +
    + +
  • +

    Get the absolute value of the given bigint or number.

    +
    +
    +

    Parameters

    +
      +
    • +
      bi: number | bigint
      +

      the bigint or number to get the absolute value of

      +
      +
    +

    Returns number | bigint

    the absolute value of the given bigint or number

    + +
+
+ +
    + +
  • +

    Converts the given array to a CSV string.

    +
    +
    +

    Parameters

    +
      +
    • +
      arr: any
      +

      is a 2-dimensional array of strings

      +
      +
    +

    Returns any

    the CSV string

    + +
+
+ +
    + +
  • +

    Indicates if the given array contains the given object.

    +
    +
    +

    Parameters

    +
      +
    • +
      arr: any
      +

      array that may or may not contain the object

      +
      +
    • +
    • +
      obj: any
      +

      object to check for inclusion in the array

      +
      +
    • +
    • +
      Optional compareByReference: boolean = false
      +

      compare strictly by reference, forgoing deep equality check (default false)

      +
      +
    +

    Returns boolean

    true if the array contains the object, false otherwise

    + +
+
+ +
    + +
  • +

    Determines if two arrays are equal.

    +
    +
    +

    Parameters

    +
      +
    • +
      arr1: any
      +

      is an array to compare

      +
      +
    • +
    • +
      arr2: any
      +

      is an array to compare

      +
      +
    +

    Returns boolean

    true if the arrays are equal, false otherwise

    + +
+
+ +
    + +
  • +

    Asserts that the given argument is an array.

    +
    +
    +

    Parameters

    +
      +
    • +
      arg: any
      +

      is the argument to assert as an array

      +
      +
    • +
    • +
      Optional msg: any
      +

      is the message to throw if the argument is not an array

      +
      +
    +

    Returns void

    +
+
+ +
    + +
  • +

    Asserts that the given argument is base58.

    +
    +
    +

    Parameters

    +
      +
    • +
      str: any
    • +
    • +
      msg: any
      +

      is the message to throw if the argument is not base58

      +
      +
    +

    Returns void

    +
+
+ +
    + +
  • +

    Asserts that the given argument is base64.

    +
    +
    +

    Parameters

    +
      +
    • +
      str: any
    • +
    • +
      msg: any
      +

      is the message to throw if the argument is not base64

      +
      +
    +

    Returns void

    +
+
+ +
    + +
  • +

    Asserts that the given argument is a boolean.

    +
    +
    +

    Parameters

    +
      +
    • +
      arg: any
      +

      is the argument to assert as a boolean

      +
      +
    • +
    • +
      Optional msg: any
      +

      is the message to throw if the argument is not a boolean

      +
      +
    +

    Returns void

    +
+
+ +
    + +
  • +

    Asserts that the given argument is defined. Throws an exception if undefined.

    +
    +
    +

    Parameters

    +
      +
    • +
      arg: any
      +

      is the argument to assert defined

      +
      +
    • +
    • +
      Optional msg: any
      +

      is the message to throw if arg is undefined (optional)

      +
      +
    +

    Returns void

    +
+
+ +
    + +
  • +

    Asserts that the given arguments are equal. Throws an exception if not equal.

    +
    +
    +

    Parameters

    +
      +
    • +
      arg1: any
      +

      is an argument to assert as equal

      +
      +
    • +
    • +
      arg2: any
      +

      is an argument to assert as equal

      +
      +
    • +
    • +
      Optional msg: any
      +

      is the message to throw if the arguments are not equal

      +
      +
    +

    Returns void

    +
+
+ +
    + +
  • +

    Asserts that the given boolean is false. Throws an exception if not a boolean or true.

    +
    +
    +

    Parameters

    +
      +
    • +
      bool: any
      +

      is the boolean to assert false

      +
      +
    • +
    • +
      Optional msg: any
      +

      is the message to throw if bool is true (optional)

      +
      +
    +

    Returns void

    +
+
+ +
    + +
  • +

    Asserts that the given argument is a static.

    +
    +
    +

    Parameters

    +
      +
    • +
      arg: any
      +

      is the argument to assert as a static

      +
      +
    • +
    • +
      Optional msg: any
      +

      is the message to throw if the argument is not a static

      +
      +
    +

    Returns void

    +
+
+ +
    + +
  • +

    Asserts that the given argument is hex.

    +
    +
    +

    Parameters

    +
      +
    • +
      str: any
    • +
    • +
      msg: any
      +

      is the message to throw if the argument is not hex

      +
      +
    +

    Returns void

    +
+
+ +
    + +
  • +

    Asserts that the given argument is initialized. Throws an exception if not initialized.

    +
    +
    +

    Parameters

    +
      +
    • +
      arg: any
      +

      is the argument to assert as initialized

      +
      +
    • +
    • +
      Optional msg: any
      +

      is the message to throw if arg is not initialized (optional)

      +
      +
    +

    Returns void

    +
+
+ +
    + +
  • +

    Asserts that the given argument is an integer.

    +
    +
    +

    Parameters

    +
      +
    • +
      arg: any
      +

      is the argument to assert as an integer

      +
      +
    • +
    • +
      Optional msg: any
      +

      is the message to throw if the argument is not an integer

      +
      +
    +

    Returns void

    +
+
+ +
    + +
  • +

    Asserts that the given arguments are not equal. Throws an exception if equal.

    +
    +
    +

    Parameters

    +
      +
    • +
      arg1: any
      +

      is an argument to assert as not equal

      +
      +
    • +
    • +
      arg2: any
      +

      is an argument to assert as not equal

      +
      +
    • +
    • +
      Optional msg: any
      +

      is the message to throw if the arguments are equal

      +
      +
    +

    Returns void

    +
+
+ +
    + +
  • +

    Asserts that the given argument is not null. Throws an exception if null.

    +
    +
    +

    Parameters

    +
      +
    • +
      arg: any
      +

      is the argument to assert not null

      +
      +
    • +
    • +
      Optional msg: any
      +

      is the message to throw if arg is null (optional)

      +
      +
    +

    Returns void

    +
+
+ +
    + +
  • +

    Asserts that the given argument is null. Throws an exception if not null.

    +
    +
    +

    Parameters

    +
      +
    • +
      arg: any
      +

      is the argument to assert null

      +
      +
    • +
    • +
      Optional msg: any
      +

      is the message to throw if arg is not null (optional)

      +
      +
    +

    Returns void

    +
+
+ +
    + +
  • +

    Asserts that the given argument is a number.

    +
    +
    +

    Parameters

    +
      +
    • +
      arg: any
      +

      is the argument to assert as a number

      +
      +
    • +
    • +
      Optional msg: any
      +

      is the message to throw if the argument is not a number

      +
      +
    +

    Returns void

    +
+
+ +
    + +
  • +

    Asserts that the given argument is an object with the given name.

    +
    +
    +

    Parameters

    +
      +
    • +
      arg: any
      +

      is the argument to test

      +
      +
    • +
    • +
      obj: any
      +

      is an object to assert arg instanceof obj (optional)

      +
      +
    • +
    • +
      Optional msg: any
      +

      is the message to throw if the argument is not the specified object

      +
      +
    +

    Returns void

    +
+
+ +
    + +
  • +

    Asserts that the given argument is a string.

    +
    +
    +

    Parameters

    +
      +
    • +
      arg: any
      +

      is the argument to assert as a string

      +
      +
    • +
    • +
      Optional msg: any
      +

      is the message to throw if the argument is not a string

      +
      +
    +

    Returns void

    +
+
+ +
    + +
  • +

    Asserts that the given condition is true. Throws an exception if not a boolean or false.

    +
    +
    +

    Parameters

    +
      +
    • +
      condition: any
      +

      is the boolean to assert true

      +
      +
    • +
    • +
      Optional msg: any
      +

      is the message to throw if condition is false (optional)

      +
      +
    +

    Returns void

    +
+
+ +
    + +
  • +

    Asserts that the given argument is undefined. Throws an exception if defined.

    +
    +
    +

    Parameters

    +
      +
    • +
      arg: any
      +

      is the argument to assert undefined

      +
      +
    • +
    • +
      Optional msg: any
      +

      is the message to throw if arg is defined (optional)

      +
      +
    +

    Returns void

    +
+
+ +
    + +
  • +

    Asserts that the given argument is uninitialized. Throws an exception if initialized.

    +
    +
    +

    Parameters

    +
      +
    • +
      arg: any
      +

      is the argument to assert as uninitialized

      +
      +
    • +
    • +
      Optional msg: any
      +

      is the message to throw if arg is initialized (optional)

      +
      +
    +

    Returns void

    +
+
+ +
    + +
  • +

    Manually builds an HTML document string.

    +
    +
    +

    Parameters

    +
      +
    • +
      content: any
      +

      specifies optional document content + content.div is a pre-existing div to stringify and add to the body + content.title is the title of the new tab + content.dependencyPaths specifies paths to js, css, or img paths + content.internalCss is css to embed in the html document + content.metas are meta elements with keys/values to include

      +
      +
    +

    Returns string

    str is the document string

    + +
+
+ +
    + +
  • +

    Copies the given array.

    +
    +
    +

    Parameters

    +
      +
    • +
      arr: any
      +

      is the array to copy

      +
      +
    +

    Returns any[]

    a copy of the given array

    + +
+
+ +
    + +
  • +

    Copies properties in the given object to a new object.

    +
    +
    +

    Parameters

    +
      +
    • +
      obj: any
      +

      is object to copy properties for

      +
      +
    +

    Returns any

    a new object with properties copied from the given object

    + +
+
+ +
    + +
  • +

    Counts the number of non-whitespace characters in the given string.

    +
    +
    +

    Parameters

    +
      +
    • +
      str: any
      +

      is the string to count the number of non-whitespace characters in

      +
      +
    +

    Returns number

    int is the number of non-whitespace characters in the given string

    + +
+
+ +
    + +
  • +

    Converts a CSV string to a 2-dimensional array of strings.

    +
    +
    +

    Parameters

    +
      +
    • +
      csv: any
      +

      is the CSV string to convert

      +
      +
    +

    Returns any

    a 2-dimensional array of strings

    + +
+
+ +
    + +
  • +

    Deletes all properties in the given object.

    +
    +
    +

    Parameters

    +
      +
    • +
      obj: any
      +

      is the object to delete properties from

      +
      +
    +

    Returns void

    +
+
+ +
    + +
  • +

    Deletes properties from the object that are undefined.

    +
    +
    +

    Parameters

    +
      +
    • +
      obj: any
      +

      is the object to delete undefined keys from

      +
      +
    +

    Returns void

    +
+
+ +
    + +
  • +

    Determines if two arguments are deep equal.

    +
    +
    +

    Parameters

    +
      +
    • +
      arg1: any
      +

      is an argument to compare

      +
      +
    • +
    • +
      arg2: any
      +

      is an argument to compare

      +
      +
    +

    Returns boolean

    true if the arguments are deep equals, false otherwise

    + +
+
+ +
    + +
  • +

    Throws an exception with the given message.

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional msg: any
      +

      defines the message to throw the exception with (optional)

      +
      +
    +

    Returns void

    +
+
+ +
    + +
  • +

    Returns combinations of the given array of the given size.

    +
    +
    +

    Parameters

    +
      +
    • +
      arr: any
      +

      is the array to get combinations from

      +
      +
    • +
    • +
      combinationSize: any
      +

      specifies the size of each combination

      +
      +
    +

    Returns any[]

    +
+
+ +
    + +
  • +

    Gets an 'a' element that is downloadable when clicked.

    +
    +
    +

    Parameters

    +
      +
    • +
      name: any
      +

      is the name of the file to download

      +
      +
    • +
    • +
      contents: any
      +

      are the string contents of the file to download

      +
      +
    +

    Returns HTMLAnchorElement

    'a' dom element with downloadable file

    + +
+
+ +
    + +
  • +

    Get an enum key name by value.

    +
    +
    +

    Parameters

    +
      +
    • +
      enumType: any
      +

      is the enum type to get the key from

      +
      +
    • +
    • +
      enumValue: any
      +

      is the enum value to get the key for

      +
      +
    +

    Returns string

    the enum key name

    + +
+
+ +
+
+ +
    + +
  • +

    Fetches the given list of images.

    +

    Prerequisite: async.js.

    +
    +
    +

    Parameters

    +
      +
    • +
      paths: any
      +

      are the paths to the images to fetch

      +
      +
    • +
    • +
      onDone: any
    +

    Returns void

    +
+
+ +
    + +
  • +

    Returns a string indentation of the given length;

    +
    +
    +

    Parameters

    +
      +
    • +
      length: any
      +

      is the length of the indentation

      +
      +
    +

    Returns string

    is an indentation string of the given length

    + +
+
+ +
    + +
  • +

    Returns an array of indices of the given size.

    +
    +
    +

    Parameters

    +
      +
    • +
      size: any
      +

      specifies the size to get indices for

      +
      +
    +

    Returns any[]

    array of the given size with indices starting at 0

    + +
+
+ +
    + +
  • +

    Returns the document's first stylesheet which has no href.

    +
    +

    Returns CSSStyleSheet

    StyleSheet is the internal stylesheet

    + +
+
+ +
    + +
  • +

    Returns the document's internal stylesheet as text.

    +
    +

    Returns string

    str is the document's internal stylesheet

    + +
+
+ +
    + +
  • +

    Returns lines separated by newlines from the given string.

    +
    +
    +

    Parameters

    +
      +
    • +
      str: any
      +

      is the string to get lines from

      +
      +
    +

    Returns any

    +
+
+ +
+
+ +
    + +
  • +

    Returns the power set of the given array.

    +
    +
    +

    Parameters

    +
      +
    • +
      arr: any
      +

      is the array to get the power set of

      +
      +
    +

    Returns any[]

    [][] is the power set of the given array

    + +
+
+ +
    + +
  • +

    Returns the power set of the given array whose elements are the given size.

    +
    +
    +

    Parameters

    +
      +
    • +
      arr: any
      +

      is the array to get the power set of

      +
      +
    • +
    • +
      size: any
      +

      is the required size of the elements within the power set +returns [][] is the power set of the given array whose elements are the given size

      +
      +
    +

    Returns any[]

    +
+
+ +
+
+ +
    + +
  • +

    Gets random ints.

    +
    +
    +

    Parameters

    +
      +
    • +
      min: any
      +

      is the minimum range of the ints to generate, inclusive

      +
      +
    • +
    • +
      max: any
      +

      is the maximum range of the ints to generate, inclusive

      +
      +
    • +
    • +
      count: any
      +

      is the number of random ints to get

      +
      +
    +

    Returns any[]

    +
+
+ +
+
+ +
    + +
  • +

    Gets a given number of unique random ints within a range.

    +
    +
    +

    Parameters

    +
      +
    • +
      min: any
      +

      is the minimum range of the ints to generate, inclusive

      +
      +
    • +
    • +
      max: any
      +

      is the maximum range of the ints to generate, inclusive

      +
      +
    • +
    • +
      count: any
      +

      is the number of unique random ints to get

      +
      +
    +

    Returns any[]

    +
+
+ +
    + +
  • +

    Returns tokens separated by whitespace from the given string.

    +
    +
    +

    Parameters

    +
      +
    • +
      str: any
      +

      is the string to get tokens from

      +
      +
    +

    Returns any

    string[] are the tokens separated by whitespace within the string

    + +
+
+ +
    + +
  • +

    Indicates if the given string contains whitespace.

    +
    +
    +

    Parameters

    +
      +
    • +
      str: any
      +

      is the string to test

      +
      +
    +

    Returns boolean

    true if the string contains whitespace, false otherwise

    + +
+
+ +
    + +
  • +

    Converts the given image to a base64 encoded data url.

    +
    +
    +

    Parameters

    +
      +
    • +
      img: any
      +

      is the image to convert

      +
      +
    • +
    • +
      quality: any
      +

      is a number between 0 and 1 specifying the image quality

      +
      +
    +

    Returns string

    +
+
+ +
    + +
  • +

    Sets the child's prototype to the parent's prototype.

    +
    +
    +

    Parameters

    +
      +
    • +
      child: any
      +

      is the child class

      +
      +
    • +
    • +
      parent: any
      +

      is the parent class

      +
      +
    +

    Returns void

    +
+
+ +
+
+ +
    + +
  • +

    Invokes functions with arguments.

    +

    arguments[0] is assumed to be an array of functions to invoke +arguments[1...n] are args to invoke the functions with

    +
    +

    Returns void

    +
+
+ +
    + +
  • +

    Indicates if the given argument is an array.

    +
    +
    +

    Parameters

    +
      +
    • +
      arg: any
      +

      is the argument to test as being an array

      +
      +
    +

    Returns boolean

    true if the argument is an array, false otherwise

    + +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Determines if the given argument is a boolean.

    +
    +
    +

    Parameters

    +
      +
    • +
      arg: any
      +

      is the argument to test as being a boolean

      +
      +
    +

    Returns boolean

    true if the argument is a boolean, false otherwise

    + +
+
+ +
    + +
  • +

    Indicates if the current environment is a browser.

    +
    +

    Returns boolean

    true if the environment is a browser, false otherwise

    + +
+
+ +
    + +
  • +

    Determines if the given file is a csv file.

    +
    +
    +

    Parameters

    +
      +
    • +
      file: any
      +

      is a file

      +
      +
    +

    Returns any

    true if the given file is a csv file, false otherwise

    + +
+
+ +
    + +
  • +

    Indicates if the given argument is defined.

    +
    +
    +

    Parameters

    +
      +
    • +
      arg: any
      +

      is the arg to test

      +
      +
    +

    Returns boolean

    true if the given arg is defined, false otherwise

    + +
+
+ +
    + +
  • +

    Indicates if the current environment is a firefox-based browser.

    +
    +

    Returns boolean

    true if the environment is a firefox-based browser, false otherwise

    + +
+
+ +
    + +
  • +

    Determines if the given argument is a static.

    +
    +
    +

    Parameters

    +
      +
    • +
      arg: any
      +

      is the argument to test as being a static

      +
      +
    +

    Returns boolean

    true if the argument is a static, false otherwise

    + +
+
+ +
+
+ +
    + +
  • +

    Determines if the image at the given URL is accessible.

    +
    +
    +

    Parameters

    +
      +
    • +
      url: any
      +

      is the url to an image

      +
      +
    • +
    • +
      timeout: any
      +

      is the maximum time to wait

      +
      +
    • +
    • +
      onDone: any
    +

    Returns void

    +
+
+ +
    + +
  • +

    Indicates if the given arg is initialized.

    +
    +
    +

    Parameters

    +
      +
    • +
      arg: any
      +

      is the arg to test

      +
      +
    +

    Returns boolean

    true if the given arg is initialized, false otherwise

    + +
+
+ +
    + +
  • +

    Indicates if the given argument is an integer.

    +
    +
    +

    Parameters

    +
      +
    • +
      arg: any
      +

      is the argument to test

      +
      +
    +

    Returns boolean

    true if the given argument is an integer, false otherwise

    + +
+
+ +
    + +
  • +

    Determines if the given file is a json file.

    +
    +
    +

    Parameters

    +
      +
    • +
      file: any
      +

      is a file

      +
      +
    +

    Returns any

    true if the given file is a json file, false otherwise

    + +
+
+ +
    + +
  • +

    Determines if all alphabet characters in the given string are lower case.

    +
    +
    +

    Parameters

    +
      +
    • +
      str: any
      +

      is the string to test

      +
      +
    +

    Returns boolean

    +
+
+ +
    + +
  • +

    Indicates if the given character is a newline.

    +
    +
    +

    Parameters

    +
      +
    • +
      char: any
      +

      is the character to test

      +
      +
    +

    Returns boolean

    true if the given character is a newline, false otherwise

    + +
+
+ +
    + +
  • +

    Indicates if the given argument is a number.

    +
    +
    +

    Parameters

    +
      +
    • +
      arg: any
      +

      is the argument to test

      +
      +
    +

    Returns boolean

    true if the argument is a number, false otherwise

    + +
+
+ +
    + +
  • +

    Indicates if the given argument is an object and optionally if it has the given constructor name.

    +
    +
    +

    Parameters

    +
      +
    • +
      arg: any
      +

      is the argument to test

      +
      +
    • +
    • +
      Optional obj: any
      +

      is an object to test arg instanceof obj (optional)

      +
      +
    +

    Returns boolean

    true if the given argument is an object and optionally has the given constructor name

    + +
+
+ +
    + +
  • +

    Indicates if the given argument is a string.

    +
    +
    +

    Parameters

    +
      +
    • +
      arg: any
      +

      is the argument to test as being a string

      +
      +
    +

    Returns boolean

    true if the argument is a string, false otherwise

    + +
+
+ +
    + +
  • +

    Determines if the given file is a txt file.

    +
    +
    +

    Parameters

    +
      +
    • +
      file: any
      +

      is a file

      +
      +
    +

    Returns any

    true if the given file is a txt file, false otherwise

    + +
+
+ +
    + +
  • +

    Indicates if the given argument is undefined.

    +
    +
    +

    Parameters

    +
      +
    • +
      arg: any
      +

      is the arg to test

      +
      +
    +

    Returns boolean

    true if the given arg is undefined, false otherwise

    + +
+
+ +
    + +
  • +

    Indicates if the given arg is uninitialized.

    +
    +
    +

    Parameters

    +
      +
    • +
      arg: any
      +

      is the arg to test

      +
      +
    +

    Returns boolean

    true if the given arg is uninitialized, false otherwise

    + +
+
+ +
    + +
  • +

    Determines if all alphabet characters in the given string are upper case.

    +
    +
    +

    Parameters

    +
      +
    • +
      str: string
      +

      is the string to test

      +
      +
    +

    Returns boolean

    true if the string is upper case, false otherwise

    + +
+
+ +
    + +
  • +

    Indicates if the given character is whitespace.

    +
    +
    +

    Parameters

    +
      +
    • +
      char: any
      +

      is the character to test

      +
      +
    +

    Returns boolean

    true if the given character is whitespace, false otherwise

    + +
+
+ +
    + +
  • +

    Determines if the given file is a zip file.

    +
    +
    +

    Parameters

    +
      +
    • +
      file: any
      +

      is a file

      +
      +
    +

    Returns any

    true if the given file is a zip file, false otherwise

    + +
+
+ +
    + +
  • +

    Kill the given nodejs child process.

    +
    +
    +

    Parameters

    +
      +
    • +
      process: ChildProcess
      +

      the nodejs child process to kill

      +
      +
    • +
    • +
      Optional signal: number | Signals
      +

      the kill signal, e.g. SIGTERM, SIGKILL, SIGINT (default)

      +
      +
    +

    Returns Promise<number>

    the exit code from killing the process

    + +
+
+ +
    + +
  • +

    Returns a human-friendly key value line.

    +
    +
    +

    Parameters

    +
      +
    • +
      key: any
      +

      is the key

      +
      +
    • +
    • +
      value: any
      +

      is the value

      +
      +
    • +
    • +
      indent: number = 0
      +

      indents the line

      +
      +
    • +
    • +
      newline: boolean = true
      +

      specifies if the string should be terminated with a newline or not

      +
      +
    • +
    • +
      ignoreUndefined: boolean = true
      +

      specifies if undefined values should return an empty string

      +
      +
    +

    Returns string

    is the human-friendly key value line

    + +
+
+ +
    + +
  • +

    Listifies the given argument.

    +
    +
    +

    Parameters

    +
      +
    • +
      arrOrElem: any
      +

      is an array or an element in the array

      +
      +
    +

    Returns any

    an array which is the given arg if it's an array or an array with the given arg as an element

    + +
+
+ +
    + +
  • +

    Opens the given div in a new window.

    +
    +
    +

    Parameters

    +
      +
    • +
      content: any
      +

      specifies optional window content + content.div is a pre-existing div to stringify and add to the body + content.title is the title of the new tab + content.dependencyPaths specifies paths to js, css, or img paths + content.internalCss is css to embed in the html document + content.metas are meta elements with keys/values to include

      +
      +
    • +
    • +
      onLoad: any
    +

    Returns void

    +
+
+ +
    + +
  • +

    Normalize a URI.

    +
    +
    +

    Parameters

    +
      +
    • +
      uri: any
      +

      the URI to normalize

      +
      +
    +

    Returns any

    the normalized URI

    + +
+
+ +
    + +
  • +

    Determines if two objects are deep equal.

    +

    Undefined values are considered equal to non-existent keys.

    +
    +
    +

    Parameters

    +
      +
    • +
      map1: any
      +

      is a map to compare

      +
      +
    • +
    • +
      map2: any
      +

      is a map to compare

      +
      +
    +

    Returns boolean

    true if the maps have identical keys and values, false otherwise

    + +
+
+ +
    + +
  • +

    Print the current stack trace.

    +
    +
    +

    Parameters

    +
      +
    • +
      msg: any
      +

      optional message to print with the trace

      +
      +
    +

    Returns void

    +
+
+ +
    + +
  • +

    Reconciles two values.

    +

    TODO: remove custom error message

    +
    +
    +

    Parameters

    +
      +
    • +
      val1: any
      +

      is a value to reconcile

      +
      +
    • +
    • +
      val2: any
      +

      is a value to reconcile

      +
      +
    • +
    • +
      Optional config: any
      +

      specifies reconciliation configuration + config.resolveDefined uses defined value if true or undefined, undefined if false + config.resolveTrue uses true over false if true, false over true if false, must be equal if undefined + config.resolveMax uses max over min if true, min over max if false, must be equal if undefined

      +
      +
    • +
    • +
      Optional errMsg: any
      +

      is the error message to throw if the values cannot be reconciled (optional)

      +
      +
    +

    Returns any

    the reconciled value if reconcilable, throws error otherwise

    + +
+
+ +
    + +
  • +

    Removes every instance of the given value from the given array.

    +
    +
    +

    Parameters

    +
      +
    • +
      arr: any
      +

      is the array to remove the value from

      +
      +
    • +
    • +
      val: any
      +

      is the value to remove from the array

      +
      +
    +

    Returns boolean

    true if the value is found and removed, false otherwise

    + +
+
+ +
    + +
  • +

    Sets the given value ensuring a previous value is not overwritten.

    +

    TODO: remove for portability because function passing not supported in other languages, use reconcile only

    +
    +
    +

    Parameters

    +
      +
    • +
      obj: any
      +

      is the object to invoke the getter and setter on

      +
      +
    • +
    • +
      getFn: any
      +

      gets the current value

      +
      +
    • +
    • +
      setFn: any
      +

      sets the current value

      +
      +
    • +
    • +
      val: any
      +

      is the value to set iff it does not overwrite a previous value

      +
      +
    • +
    • +
      Optional config: any
      +

      specifies reconciliation configuration + config.resolveDefined uses defined value if true or undefined, undefined if false + config.resolveTrue uses true over false if true, false over true if false, must be equal if undefined + config.resolveMax uses max over min if true, min over max if false, must be equal if undefined

      +
      +
    • +
    • +
      Optional errMsg: any
      +

      is the error message to throw if the values cannot be reconciled (optional)

      +
      +
    +

    Returns void

    +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Indicates if the given string contains the given substring.

    +
    +
    +

    Parameters

    +
      +
    • +
      str: any
      +

      is the string to search for a substring

      +
      +
    • +
    • +
      substring: any
      +

      is the substring to searchin within the string

      +
      +
    +

    Returns boolean

    true if the substring is within the string, false otherwise

    + +
+
+ +
    + +
  • +

    Replace big integers (16 or more consecutive digits) with strings in order +to preserve numeric precision.

    +
    +
    +

    Parameters

    +
      +
    • +
      str: any
      +

      is the string to be modified

      +
      +
    +

    Returns any

    the modified string with big numbers converted to strings

    + +
+
+ +
    + +
  • +

    Returns a copy of the given array where each element is lowercase.

    +
    +
    +

    Parameters

    +
      +
    • +
      arr: any
      +

      is the array to convert to lowercase

      +
      +
    +

    Returns any[]

    a copy of the given array where each element is lowercase

    + +
+
+ +
    + +
  • +

    Returns a new array containing unique elements of the given array.

    +
    +
    +

    Parameters

    +
      +
    • +
      arr: any
      +

      is the array to return unique elements from

      +
      +
    +

    Returns any

    a new array with the given array's unique elements

    + +
+
+ +
    + +
  • +

    Wait for the duration.

    +
    +
    +

    Parameters

    +
      +
    • +
      durationMs: any
      +

      the duration to wait for in milliseconds

      +
      +
    +

    Returns Promise<unknown>

    +
+
+ +
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/HttpClient.html b/docs/typedocs/classes/HttpClient.html new file mode 100644 index 000000000..75437715e --- /dev/null +++ b/docs/typedocs/classes/HttpClient.html @@ -0,0 +1,294 @@ +HttpClient | monero-ts
+
+ +
+
+
+
+ +

Class HttpClient

+
+

Handle HTTP requests with a uniform interface.

+
+
+
+

Hierarchy

+
    +
  • HttpClient
+
+
+
+ +
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
DEFAULT_REQUEST: {
    method: string;
    rejectUnauthorized: boolean;
    requestApi: string;
    resolveWithFullResponse: boolean;
} = ...
+
+

Type declaration

+
    +
  • +
    method: string
  • +
  • +
    rejectUnauthorized: boolean
  • +
  • +
    requestApi: string
  • +
  • +
    resolveWithFullResponse: boolean
+
+ +
DEFAULT_TIMEOUT: number = 60000
+
+ +
HTTPS_AGENT: any
+
+ +
HTTP_AGENT: any
+
+ +
MAX_REQUESTS_PER_SECOND: number = 50
+
+ +
MAX_TIMEOUT: number = 2147483647
+
+ +
PROMISE_THROTTLES: any[] = []
+
+ +
TASK_QUEUES: any[] = []
+
+ +
digestAuthRequest: ((method, url, username, password) => void) = ...
+
+

Type declaration

+
+
+

Methods

+
+ +
    + +
  • +

    Get a singleton instance of an HTTP client to share.

    +
    +

    Returns any

    a shared agent for network requests among library instances

    + +
+
+ +
    + +
  • +

    Get a singleton instance of an HTTPS client to share.

    +
    +

    Returns any

    a shared agent for network requests among library instances

    + +
+
+ +
+
+ +
    + +
  • +

    Make a HTTP request.

    +
    +

    Parameters

    +
      +
    • +
      request: any
      +

      configures the request to make

      +
      +
    +

    Returns Promise<any>

    response - the response object

    + +
+
+ +
+
+ +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/LibraryUtils.html b/docs/typedocs/classes/LibraryUtils.html new file mode 100644 index 000000000..9c26faa27 --- /dev/null +++ b/docs/typedocs/classes/LibraryUtils.html @@ -0,0 +1,513 @@ +LibraryUtils | monero-ts
+
+ +
+
+
+
+ +

Class LibraryUtils

+
+

Collection of helper utilities for the library.

+
+
+
+

Hierarchy

+
    +
  • LibraryUtils
+
+
+
+ +
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
FULL_LOADED: any
+
+ +
LOG_LEVEL: number = 0
+
+ +
REJECT_UNAUTHORIZED_FNS: any
+
+ +
WASM_MODULE: any
+
+ +
WORKER: any
+
+ +
WORKER_DIST_PATH: any = LibraryUtils.WORKER_DIST_PATH_DEFAULT
+
+ +
WORKER_DIST_PATH_DEFAULT: any = ...
+
+ +
WORKER_OBJECTS: any
+
+

Methods

+
+ +
    + +
  • +
    +

    Parameters

    +
      +
    • +
      objectId: any
    • +
    • +
      callbackId: any
    • +
    • +
      callbackArgs: any
    +

    Returns void

+
+ +
+
+ +
+
+ +
    + +
  • +

    Get the total memory used by WebAssembly.

    +
    +

    Returns Promise<number>

    the total memory used by WebAssembly

    + +
+
+ +
    + +
  • +

    Get the WebAssembly module in the current context (nodejs, browser main thread or worker).

    +
    +

    Returns any

    +
+
+ +
    + +
  • +

    Get a singleton instance of a worker to share.

    +
    +

    Returns Promise<any>

    a worker to share among wallet instances

    + +
+
+ +
+
+ +
    + +
  • +

    Invoke a worker function and get the result with error handling.

    +
    +
    +

    Parameters

    +
      +
    • +
      objectId: any
      +

      identifies the worker object to invoke (default random id)

      +
      +
    • +
    • +
      fnName: any
      +

      is the name of the function to invoke

      +
      +
    • +
    • +
      Optional args: any
      +

      are function arguments to invoke with

      +
      +
    +

    Returns Promise<unknown>

    resolves with response payload from the worker or an error

    + +
+
+ +
    + +
  • +

    Indicate if unauthorized requests should be rejected.

    +
    +
    +

    Parameters

    +
      +
    • +
      fnId: any
      +

      uniquely identifies the function

      +
      +
    +

    Returns any

    +
+
+ +
    + +
  • +

    Load the WebAssembly full module with caching.

    +

    The full module is a superset of the keys module and overrides it.

    +

    TODO: this is separate static function from loadKeysModule() because webpack cannot bundle worker using runtime param for conditional import

    +
    +

    Returns Promise<any>

    +
+
+ +
+
+ +
    + +
  • +

    Log a message.

    +
    +
    +

    Parameters

    +
      +
    • +
      level: any
      +

      log level of the message

      +
      +
    • +
    • +
      msg: any
      +

      message to log

      +
      +
    +

    Returns void

    +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Set the library's log level with 0 being least verbose.

    +
    +
    +

    Parameters

    +
      +
    • +
      level: any
      +

      the library's log level

      +
      +
    +

    Returns Promise<void>

    +
+
+ +
    + +
  • +

    Register a function by id which informs if unauthorized requests (e.g. +self-signed certificates) should be rejected.

    +
    +
    +

    Parameters

    +
      +
    • +
      fnId: any
      +

      unique identifier for the function

      +
      +
    • +
    • +
      fn: any
      +

      function to inform if unauthorized requests should be rejected

      +
      +
    +

    Returns void

    +
+
+ +
    + +
  • +

    Set the path to load the worker. Defaults to "/monero_web_worker.js" in the browser +and "./MoneroWebWorker.js" in node.

    +
    +
    +

    Parameters

    +
      +
    • +
      workerDistPath: any
      +

      path to load the worker

      +
      +
    +

    Returns void

    +
+
+ +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroAccount.html b/docs/typedocs/classes/MoneroAccount.html new file mode 100644 index 000000000..8f3d8faf7 --- /dev/null +++ b/docs/typedocs/classes/MoneroAccount.html @@ -0,0 +1,357 @@ +MoneroAccount | monero-ts
+
+ +
+
+
+
+ +

Class MoneroAccount

+
+

Monero account model.

+
+
+
+

Hierarchy

+
    +
  • MoneroAccount
+
+
+
+ +
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
balance: bigint
+
+ +
index: number
+
+ +
label: string
+
+ +
primaryAddress: string
+
+ +
subaddresses: MoneroSubaddress[]
+
+ +
tag: string
+
+ +
unlockedBalance: bigint
+
+

Methods

+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroAccountTag.html b/docs/typedocs/classes/MoneroAccountTag.html new file mode 100644 index 000000000..e0ff3f2c7 --- /dev/null +++ b/docs/typedocs/classes/MoneroAccountTag.html @@ -0,0 +1,204 @@ +MoneroAccountTag | monero-ts
+
+ +
+
+
+
+ +

Class MoneroAccountTag

+
+

Represents an account tag.

+
+
+
+

Hierarchy

+
    +
  • MoneroAccountTag
+
+
+
+ +
+
+

Constructors

+
+
+

Properties

+
+
+

Methods

+
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
accountIndices: number[]
+
+ +
label: string
+
+ +
tag: string
+
+

Methods

+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroAddressBookEntry.html b/docs/typedocs/classes/MoneroAddressBookEntry.html new file mode 100644 index 000000000..38e022199 --- /dev/null +++ b/docs/typedocs/classes/MoneroAddressBookEntry.html @@ -0,0 +1,246 @@ +MoneroAddressBookEntry | monero-ts
+
+ +
+
+
+
+ +

Class MoneroAddressBookEntry

+
+

Monero address book entry model

+
+
+
+

Hierarchy

+
    +
  • MoneroAddressBookEntry
+
+
+
+ +
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
address: string
+
+ +
description: string
+
+ +
index: number
+
+ +
paymentId: string
+
+

Methods

+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroAltChain.html b/docs/typedocs/classes/MoneroAltChain.html new file mode 100644 index 000000000..c61f811cf --- /dev/null +++ b/docs/typedocs/classes/MoneroAltChain.html @@ -0,0 +1,278 @@ +MoneroAltChain | monero-ts
+
+ +
+
+
+
+ +

Class MoneroAltChain

+
+

Models an alternative chain seen by the node.

+
+
+
+

Hierarchy

+
    +
  • MoneroAltChain
+
+
+
+ +
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
blockHashes: string[]
+
+ +
difficulty: bigint
+
+ +
height: number
+
+ +
length: number
+
+ +
mainChainParentBlockHash: string
+
+

Methods

+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroBan.html b/docs/typedocs/classes/MoneroBan.html new file mode 100644 index 000000000..6347e0a96 --- /dev/null +++ b/docs/typedocs/classes/MoneroBan.html @@ -0,0 +1,246 @@ +MoneroBan | monero-ts
+
+ +
+
+
+
+ +

Class MoneroBan

+
+

Monero banhammer.

+
+
+
+

Hierarchy

+
    +
  • MoneroBan
+
+
+
+ +
+
+

Constructors

+
+
+

Properties

+
+
+

Methods

+
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
host: string
+
+ +
ip: string
+
+ +
isBanned: boolean
+
+ +
seconds: number
+
+

Methods

+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroBlock.html b/docs/typedocs/classes/MoneroBlock.html new file mode 100644 index 000000000..d19183535 --- /dev/null +++ b/docs/typedocs/classes/MoneroBlock.html @@ -0,0 +1,977 @@ +MoneroBlock | monero-ts
+
+ +
+
+
+
+ +

Class MoneroBlock

+
+

Models a Monero block in the blockchain.

+
+
+
+

Hierarchy

+
+
+
+
+ +
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
cumulativeDifficulty: bigint
+
+ +
depth: number
+
+ +
difficulty: bigint
+
+ +
hash: string
+
+ +
height: number
+
+ +
hex: string
+
+ +
longTermWeight: number
+
+ +
majorVersion: number
+
+ +
minerTx: MoneroTx
+
+ +
minerTxHash: string
+
+ +
minorVersion: number
+
+ +
nonce: number
+
+ +
numTxs: number
+
+ +
orphanStatus: boolean
+
+ +
powHash: string
+
+ +
prevHash: string
+
+ +
reward: bigint
+
+ +
size: number
+
+ +
timestamp: number
+
+ +
txHashes: string[]
+
+ +
txs: MoneroTx[]
+
+ +
weight: number
+
+ +
DeserializationType: typeof DeserializationType = DeserializationType
+
+

Methods

+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroBlockHeader.html b/docs/typedocs/classes/MoneroBlockHeader.html new file mode 100644 index 000000000..8d39e8285 --- /dev/null +++ b/docs/typedocs/classes/MoneroBlockHeader.html @@ -0,0 +1,747 @@ +MoneroBlockHeader | monero-ts
+
+ +
+
+
+
+ +

Class MoneroBlockHeader

+
+

Models a Monero block header which contains information about the block.

+
+
+
+

Hierarchy

+
+
+
+
+ +
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
cumulativeDifficulty: bigint
+
+ +
depth: number
+
+ +
difficulty: bigint
+
+ +
hash: string
+
+ +
height: number
+
+ +
longTermWeight: number
+
+ +
majorVersion: number
+
+ +
minerTxHash: string
+
+ +
minorVersion: number
+
+ +
nonce: number
+
+ +
numTxs: number
+
+ +
orphanStatus: boolean
+
+ +
powHash: string
+
+ +
prevHash: string
+
+ +
reward: bigint
+
+ +
size: number
+
+ +
timestamp: number
+
+ +
weight: number
+
+

Methods

+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroBlockTemplate.html b/docs/typedocs/classes/MoneroBlockTemplate.html new file mode 100644 index 000000000..583efc580 --- /dev/null +++ b/docs/typedocs/classes/MoneroBlockTemplate.html @@ -0,0 +1,438 @@ +MoneroBlockTemplate | monero-ts
+
+ +
+
+
+
+ +

Class MoneroBlockTemplate

+
+

Monero block template to mine.

+
+
+
+

Hierarchy

+
    +
  • MoneroBlockTemplate
+
+
+
+ +
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
blockHashingBlob: string
+
+ +
blockTemplateBlob: string
+
+ +
difficulty: bigint
+
+ +
expectedReward: bigint
+
+ +
height: number
+
+ +
nextSeedHash: string
+
+ +
prevId: string
+
+ +
reservedOffset: number
+
+ +
seedHash: string
+
+ +
seedHeight: number
+
+

Methods

+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroCheck.html b/docs/typedocs/classes/MoneroCheck.html new file mode 100644 index 000000000..bcbf31efd --- /dev/null +++ b/docs/typedocs/classes/MoneroCheck.html @@ -0,0 +1,143 @@ +MoneroCheck | monero-ts
+
+ +
+
+
+
+ +

Class MoneroCheck

+
+

Base class for results from checking a transaction or reserve proof.

+
+
+
+

Hierarchy

+
+
+
+
+ +
+
+

Constructors

+
+
+

Properties

+
+
+

Methods

+
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
isGood?: boolean
+
+

Methods

+
+ +
+
+ +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroCheckReserve.html b/docs/typedocs/classes/MoneroCheckReserve.html new file mode 100644 index 000000000..1d570555a --- /dev/null +++ b/docs/typedocs/classes/MoneroCheckReserve.html @@ -0,0 +1,220 @@ +MoneroCheckReserve | monero-ts
+
+ +
+
+
+
+ +

Class MoneroCheckReserve

+
+

Results from checking a reserve proof.

+
+
+
+

Hierarchy

+
+
+
+
+ +
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
isGood?: boolean
+
+ +
totalAmount: bigint
+
+ +
unconfirmedSpentAmount: bigint
+
+

Methods

+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroCheckTx.html b/docs/typedocs/classes/MoneroCheckTx.html new file mode 100644 index 000000000..47a6f5e78 --- /dev/null +++ b/docs/typedocs/classes/MoneroCheckTx.html @@ -0,0 +1,252 @@ +MoneroCheckTx | monero-ts
+
+ +
+
+
+
+ +

Class MoneroCheckTx

+
+

Results from checking a transaction key.

+
+
+
+

Hierarchy

+
+
+
+
+ +
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
inTxPool: boolean
+
+ +
isGood?: boolean
+
+ +
numConfirmations: number
+
+ +
receivedAmount: bigint
+
+

Methods

+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroConnectionManager.html b/docs/typedocs/classes/MoneroConnectionManager.html new file mode 100644 index 000000000..a84c7f3bf --- /dev/null +++ b/docs/typedocs/classes/MoneroConnectionManager.html @@ -0,0 +1,896 @@ +MoneroConnectionManager | monero-ts
+
+ +
+
+
+
+ +

Class MoneroConnectionManager

+
+

Manages a collection of prioritized connections to daemon or wallet RPC endpoints.

+ +

Example usage:

+ + +// imports
+ * const MoneroRpcConnection = MoneroRpcConnection;
+const MoneroConnectionManager = MoneroConnectionManager;
+const MoneroConnectionManagerListener = MoneroConnectionManagerListener;

+ +

// create connection manager
+let connectionManager = new MoneroConnectionManager();

+

// add managed connections with priorities
+connectionManager.addConnection(new MoneroRpcConnection("http://localhost:38081").setPriority(1)); // use localhost as first priority
+connectionManager.addConnection(new MoneroRpcConnection("http://example.com")); // default priority is prioritized last

+

// set current connection
+connectionManager.setConnection(new MoneroRpcConnection("http://foo.bar", "admin", "password")); // connection is added if new

+

// check connection status
+await connectionManager.checkConnection();
+console.log("Connection manager is connected: " + connectionManager.isConnected());
+console.log("Connection is online: " + connectionManager.getConnection().getIsOnline());
+console.log("Connection is authenticated: " + connectionManager.getConnection().getIsAuthenticated());

+

// receive notifications of any changes to current connection
+connectionManager.addListener(new class extends MoneroConnectionManagerListener {
+   onConnectionChanged(connection) {
+     console.log("Connection changed to: " + connection);
+   }
+});

+

// start polling for best connection every 10 seconds and automatically switch
+connectionManager.startPolling(10000);

+

// automatically switch to best available connection if disconnected
+connectionManager.setAutoSwitch(true);

+

// get best available connection in order of priority then response time
+let bestConnection = await connectionManager.getBestAvailableConnection();

+

// check status of all connections
+await connectionManager.checkConnections();

+

// get connections in order of current connection, online status from last check, priority, and name
+let connections = connectionManager.getConnections();

+

// clear connection manager
+connectionManager.clear(); +

+
+
+
+

Hierarchy

+
    +
  • MoneroConnectionManager
+
+
+
+ +
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
autoSwitch: any
+
+ +
connections: any
+
+ +
currentConnection: any
+
+ +
listeners: any
+
+ +
poller: any
+
+ +
proxyToWorker: any
+
+ +
responseTimes: any
+
+ +
timeoutMs: any
+
+ +
DEFAULT_AUTO_SWITCH: boolean = true
+
+ +
DEFAULT_POLL_PERIOD: number = 20000
+
+ +
DEFAULT_TIMEOUT: number = 5000
+
+ +
MIN_BETTER_RESPONSES: number = 3
+
+ +
PollType: {
    ALL: number;
    CURRENT: number;
    PRIORITIZED: number;
} = ...
+

Specify behavior when polling.

+

One of PRIORITIZED (poll connections in order of priority until connected; default), CURRENT (poll current connection), or ALL (poll all connections).

+
+
+

Type declaration

+
    +
  • +
    ALL: number
  • +
  • +
    CURRENT: number
  • +
  • +
    PRIORITIZED: number
+
+
+

Methods

+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Check all managed connections, returning a promise for each connection check. +Does not auto switch if disconnected.

    +
    +

    Returns Promise<void>[]

    a promise for each connection in the order of getConnections().

    + +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Indicates if this manager has a connection with the given URI.

    +
    +
    +

    Parameters

    +
      +
    • +
      uri: string
      +

      URI of the connection to check

      +
      +
    +

    Returns boolean

    true if this manager has a connection with the given URI, false otherwise

    + +
+
+ +
    + +
  • +

    Indicates if the connection manager is connected to a node.

    +
    +

    Returns boolean

    true if the current connection is set, online, and not unauthenticated, undefined if unknown, false otherwise

    + +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Set the current connection. +Provide a URI to select an existing connection without updating its credentials. +Provide a MoneroRpcConnection to add new connection or replace existing connection with the same URI. +Notify if current connection changes. +Does not check the connection.

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional uriOrConnection: string | Partial<MoneroRpcConnection>
      +

      is the uri of the connection or the connection to make current (default undefined for no current connection)

      +
      +
    +

    Returns Promise<MoneroConnectionManager>

    this connection manager for chaining

    + +
+
+ +
+
+ +
    + +
  • +

    Start polling connections.

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional periodMs: number
      +

      poll period in milliseconds (default 20s)

      +
      +
    • +
    • +
      Optional autoSwitch: boolean
      +

      specifies to automatically switch to the best connection (default true unless changed)

      +
      +
    • +
    • +
      Optional timeoutMs: number
      +

      specifies the timeout to poll a single connection (default 5s unless changed)

      +
      +
    • +
    • +
      Optional pollType: number
      +

      one of PRIORITIZED (poll connections in order of priority until connected; default), CURRENT (poll current connection), or ALL (poll all connections)

      +
      +
    • +
    • +
      Optional excludedConnections: MoneroRpcConnection[]
      +

      connections excluded from being polled

      +
      +
    +

    Returns MoneroConnectionManager

    this connection manager for chaining

    + +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroConnectionManagerListener.html b/docs/typedocs/classes/MoneroConnectionManagerListener.html new file mode 100644 index 000000000..387458a82 --- /dev/null +++ b/docs/typedocs/classes/MoneroConnectionManagerListener.html @@ -0,0 +1,117 @@ +MoneroConnectionManagerListener | monero-ts
+
+ +
+
+
+
+ +

Class MoneroConnectionManagerListener

+
+

Default connection manager listener which takes no action on notifications.

+
+
+
+

Hierarchy

+
    +
  • MoneroConnectionManagerListener
+
+
+
+ +
+
+

Constructors

+
+
+

Methods

+
+
+

Constructors

+
+ +
+
+

Methods

+
+ +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroConnectionSpan.html b/docs/typedocs/classes/MoneroConnectionSpan.html new file mode 100644 index 000000000..156d82e47 --- /dev/null +++ b/docs/typedocs/classes/MoneroConnectionSpan.html @@ -0,0 +1,342 @@ +MoneroConnectionSpan | monero-ts
+
+ +
+
+
+
+ +

Class MoneroConnectionSpan

+
+

Monero daemon connection span.

+
+
+
+

Hierarchy

+
    +
  • MoneroConnectionSpan
+
+
+
+ +
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
connectionId: string
+
+ +
numBlocks: number
+
+ +
rate: number
+
+ +
remoteAddress: string
+
+ +
size: number
+
+ +
speed: number
+
+ +
startHeight: number
+
+

Methods

+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroDaemon.html b/docs/typedocs/classes/MoneroDaemon.html new file mode 100644 index 000000000..dd6eb47f2 --- /dev/null +++ b/docs/typedocs/classes/MoneroDaemon.html @@ -0,0 +1,1420 @@ +MoneroDaemon | monero-ts
+
+ +
+
+
+
+ +

Class MoneroDaemon

+
+

Monero daemon interface and default implementations.

+
+
+
+

Hierarchy

+
+
+
+
+ +
+
+

Constructors

+
+ +
+
+

Methods

+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Flush transactions from the tx pool.

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional hashes: string | string[]
      +

      specific transactions to flush (defaults to all)

      +
      +
    +

    Returns Promise<void>

    +
+
+ +
    + +
  • +

    Get known block hashes which are not on the main chain.

    +
    +

    Returns Promise<string[]>

    known block hashes which are not on the main chain

    + +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Get a block's hash by its height.

    +
    +
    +

    Parameters

    +
      +
    • +
      height: number
      +

      height of the block hash to get

      +
      +
    +

    Returns Promise<string>

    the block's hash at the given height

    + +
+
+ +
    + +
  • +

    Get block hashes as a binary request to the daemon.

    +
    +
    +

    Parameters

    +
      +
    • +
      blockHashes: string[]
      +

      specify block hashes to fetch; first 10 blocks hash goes + sequential, next goes in pow(2,n) offset, like 2, 4, 8, 16, 32, 64 + and so on, and the last one is always genesis block

      +
      +
    • +
    • +
      startHeight: number
      +

      starting height of block hashes to return

      +
      +
    +

    Returns Promise<string[]>

    requested block hashes

    + +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Get block headers for the given range.

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional startHeight: number
      +

      start height lower bound inclusive (optional)

      +
      +
    • +
    • +
      Optional endHeight: number
      +

      end height upper bound inclusive (optional)

      +
      +
    +

    Returns Promise<MoneroBlockHeader[]>

    for the given range

    + +
+
+ +
    + +
  • +

    Get a block template for mining a new block.

    +
    +
    +

    Parameters

    +
      +
    • +
      walletAddress: string
      +

      address of the wallet to receive miner transactions if block is successfully mined

      +
      +
    • +
    • +
      Optional reserveSize: number
      +

      reserve size (optional)

      +
      +
    +

    Returns Promise<MoneroBlockTemplate>

    is a block template for mining a new block

    + +
+
+ +
    + +
  • +

    Get blocks by hash.

    +
    +
    +

    Parameters

    +
      +
    • +
      blockHashes: string[]
      +

      array of hashes; first 10 blocks hashes goes sequential, + next goes in pow(2,n) offset, like 2, 4, 8, 16, 32, 64 and so on, + and the last one is always genesis block

      +
      +
    • +
    • +
      startHeight: number
      +

      start height to get blocks by hash

      +
      +
    • +
    • +
      Optional prune: boolean = false
      +

      specifies if returned blocks should be pruned (defaults to false) // TODO: test default

      +
      +
    +

    Returns Promise<MoneroBlock[]>

    retrieved blocks

    + +
+
+ +
+
+ +
    + +
  • +

    Get blocks in the given height range.

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional startHeight: number
      +

      start height lower bound inclusive (optional)

      +
      +
    • +
    • +
      Optional endHeight: number
      +

      end height upper bound inclusive (optional)

      +
      +
    +

    Returns Promise<MoneroBlock[]>

    are blocks in the given height range

    + +
+
+ +
    + +
  • +

    Get blocks in the given height range as chunked requests so that each request is +not too big.

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional startHeight: number
      +

      start height lower bound inclusive (optional)

      +
      +
    • +
    • +
      Optional endHeight: number
      +

      end height upper bound inclusive (optional)

      +
      +
    • +
    • +
      Optional maxChunkSize: number
      +

      maximum chunk size in any one request (default 3,000,000 bytes)

      +
      +
    +

    Returns Promise<MoneroBlock[]>

    blocks in the given height range

    + +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Get the number of blocks in the longest chain known to the node.

    +
    +

    Returns Promise<number>

    the number of blocks!

    + +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Gets the total emissions and fees from the genesis block to the current height.

    +
    +
    +

    Parameters

    +
      +
    • +
      height: number
      +

      height to start computing the miner sum

      +
      +
    • +
    • +
      numBlocks: number
      +

      number of blocks to include in the sum

      +
      +
    +

    Returns Promise<MoneroMinerTxSum>

    encapsulates the total emissions and fees since the genesis block

    + +
+
+ +
+
+ +
    + +
  • +

    Get a histogram of output amounts. For all amounts (possibly filtered by +parameters), gives the number of outputs on the chain for that amount. +RingCT outputs counts as 0 amount.

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional amounts: bigint[]
      +

      amounts of outputs to make the histogram with

      +
      +
    • +
    • +
      Optional minCount: number
      +

      TODO

      +
      +
    • +
    • +
      Optional maxCount: number
      +

      TODO

      +
      +
    • +
    • +
      Optional isUnlocked: boolean
      +

      makes a histogram with outputs with the specified lock state

      +
      +
    • +
    • +
      Optional recentCutoff: number
      +

      TODO

      +
      +
    +

    Returns Promise<MoneroOutputHistogramEntry[]>

    are entries meeting the parameters

    + +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Get a transaction by hash.

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional txHash: string
      +

      hash of the transaction to get

      +
      +
    • +
    • +
      Optional prune: boolean = false
      +

      specifies if the returned tx should be pruned (defaults to false)

      +
      +
    +

    Returns Promise<MoneroTx>

    transaction with the given hash or undefined if not found

    + +
+
+ +
    + +
  • +

    Get a transaction hex by hash.

    +
    +
    +

    Parameters

    +
      +
    • +
      txHash: string
      +

      hash of the transaction to get hex from

      +
      +
    • +
    • +
      Optional prune: boolean = false
      +

      specifies if the returned tx hex should be pruned (defaults to false)

      +
      +
    +

    Returns Promise<string>

    tx hex with the given hash

    + +
+
+ +
    + +
  • +

    Get transaction hexes by hashes.

    +
    +
    +

    Parameters

    +
      +
    • +
      txHashes: string[]
      +

      hashes of transactions to get hexes from

      +
      +
    • +
    • +
      Optional prune: boolean = false
      +

      specifies if the returned tx hexes should be pruned (defaults to false)

      +
      +
    +

    Returns Promise<string[]>

    tx hexes

    + +
+
+ +
    + +
  • +

    Get valid transactions seen by the node but not yet mined into a block, as well +as spent key image information for the tx pool.

    +
    +

    Returns Promise<MoneroTx[]>

    are transactions in the transaction pool!

    + +
+
+ +
    + +
  • +

    Get hashes of transactions in the transaction pool.

    +
    +

    Returns Promise<string[]>

    are hashes of transactions in the transaction pool

    + +
+
+ +
+
+ +
    + +
  • +

    Get transactions by hashes.

    +
    +
    +

    Parameters

    +
      +
    • +
      txHashes: string[]
      +

      hashes of transactions to get

      +
      +
    • +
    • +
      Optional prune: boolean = false
      +

      specifies if the returned txs should be pruned (defaults to false)

      +
      +
    +

    Returns Promise<MoneroTx[]>

    found transactions with the given hashes

    + +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Indicates if the client is connected to the daemon via RPC.

    +
    +

    Returns Promise<boolean>

    true if the client is connected to the daemon, false otherwise

    + +
+
+ +
    + +
  • +

    Indicates if the daemon is trusted xor untrusted.

    +
    +

    Returns Promise<boolean>

    true if the daemon is trusted, false otherwise

    + +
+
+ +
+
+ +
    + +
  • +

    Relays a transaction by hash.

    +
    +
    +

    Parameters

    +
      +
    • +
      txHash: string
      +

      hash of the transaction to relay

      +
      +
    +

    Returns Promise<void>

    +
+
+ +
    + +
  • +

    Relays transactions by hash.

    +
    +
    +

    Parameters

    +
      +
    • +
      txHashes: string[]
      +

      hashes of the transactinos to relay

      +
      +
    +

    Returns Promise<void>

    +
+
+ +
+
+ +
    + +
  • +

    Reset the download bandwidth limit.

    +
    +

    Returns Promise<number>

    download bandwidth limit after resetting

    + +
+
+ +
    + +
  • +

    Reset the upload bandwidth limit.

    +
    +

    Returns Promise<number>

    upload bandwidth limit after resetting

    + +
+
+ +
    + +
  • +

    Set the download bandwidth limit.

    +
    +
    +

    Parameters

    +
      +
    • +
      limit: number
      +

      download limit to set (-1 to reset to default)

      +
      +
    +

    Returns Promise<number>

    new download limit after setting

    + +
+
+ +
    + +
  • +

    Limit number of incoming peers.

    +
    +
    +

    Parameters

    +
      +
    • +
      limit: number
      +

      maximum number of incoming peers

      +
      +
    +

    Returns Promise<void>

    +
+
+ +
    + +
  • +

    Limit number of outgoing peers.

    +
    +
    +

    Parameters

    +
      +
    • +
      limit: number
      +

      maximum number of outgoing peers

      +
      +
    +

    Returns Promise<void>

    +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Set the upload bandwidth limit.

    +
    +
    +

    Parameters

    +
      +
    • +
      limit: number
      +

      upload limit to set (-1 to reset to default)

      +
      +
    +

    Returns Promise<number>

    new upload limit after setting

    + +
+
+ +
    + +
  • +

    Start mining.

    +
    +
    +

    Parameters

    +
      +
    • +
      address: string
      +

      address given miner rewards if the daemon mines a block

      +
      +
    • +
    • +
      Optional numThreads: number
      +

      number of mining threads to run (default 1)

      +
      +
    • +
    • +
      Optional isBackground: boolean
      +

      specifies if the miner should run in the background or not (default false)

      +
      +
    • +
    • +
      Optional ignoreBattery: boolean
      +

      specifies if the battery state (e.g. on laptop) should be ignored or not (default false)

      +
      +
    +

    Returns Promise<void>

    +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Submit a mined block to the network.

    +
    +
    +

    Parameters

    +
      +
    • +
      blockBlob: string
      +

      mined block to submit

      +
      +
    +

    Returns Promise<void>

    +
+
+ +
    + +
  • +

    Submit mined blocks to the network.

    +
    +
    +

    Parameters

    +
      +
    • +
      blockBlobs: string[]
      +

      mined blocks to submit

      +
      +
    +

    Returns Promise<void>

    +
+
+ +
    + +
  • +

    Submits a transaction to the daemon's pool.

    +
    +
    +

    Parameters

    +
      +
    • +
      txHex: string
      +

      raw transaction hex to submit

      +
      +
    • +
    • +
      doNotRelay: boolean = false
      +

      specifies if the tx should be relayed (default false, i.e. relay)

      +
      +
    +

    Returns Promise<MoneroSubmitTxResult>

    contains submission results

    + +
+
+ +
+
+ +
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroDaemonConfig.html b/docs/typedocs/classes/MoneroDaemonConfig.html new file mode 100644 index 000000000..fc2e7b2cc --- /dev/null +++ b/docs/typedocs/classes/MoneroDaemonConfig.html @@ -0,0 +1,262 @@ +MoneroDaemonConfig | monero-ts
+
+ +
+
+
+
+ +

Class MoneroDaemonConfig

+
+

Configuration to connect to monerod.

+
+
+
+

Hierarchy

+
    +
  • MoneroDaemonConfig
+
+
+
+ +
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
cmd: string[]
+
+ +
pollInterval: number
+
+ +
proxyToWorker: boolean
+
+ +
server: string | Partial<MoneroRpcConnection>
+
+

Methods

+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroDaemonInfo.html b/docs/typedocs/classes/MoneroDaemonInfo.html new file mode 100644 index 000000000..4a85bb464 --- /dev/null +++ b/docs/typedocs/classes/MoneroDaemonInfo.html @@ -0,0 +1,1174 @@ +MoneroDaemonInfo | monero-ts
+
+ +
+
+
+
+ +

Class MoneroDaemonInfo

+
+

Monero daemon info.

+
+
+
+

Hierarchy

+
    +
  • MoneroDaemonInfo
+
+
+
+ +
+
+

Constructors

+
+
+

Properties

+
+
+

Methods

+
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
adjustedTimestamp: number
+
+ +
blockSizeLimit: number
+
+ +
blockSizeMedian: number
+
+ +
blockWeightLimit: number
+
+ +
blockWeightMedian: number
+
+ +
bootstrapDaemonAddress: string
+
+ +
credits: bigint
+
+ +
cumulativeDifficulty: bigint
+
+ +
databaseSize: number
+
+ +
difficulty: bigint
+
+ +
freeSpace: bigint
+
+ +
height: number
+
+ +
heightWithoutBootstrap: number
+
+ +
isBusySyncing: boolean
+
+ +
isOffline: boolean
+
+ +
isRestricted: boolean
+
+ +
isSynchronized: boolean
+
+ +
networkType: string
+
+ +
numAltBlocks: number
+
+ +
numIncomingConnections: number
+
+ +
numOfflinePeers: number
+
+ +
numOnlinePeers: number
+
+ +
numOutgoingConnections: number
+
+ +
numRpcConnections: number
+
+ +
numTxs: number
+
+ +
numTxsPool: number
+
+ +
startTimestamp: number
+
+ +
target: number
+
+ +
targetHeight: number
+
+ +
topBlockHash: string
+
+ +
updateAvailable: boolean
+
+ +
version: string
+
+ +
wasBootstrapEverUsed: boolean
+
+

Methods

+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroDaemonListener.html b/docs/typedocs/classes/MoneroDaemonListener.html new file mode 100644 index 000000000..cf54e4cda --- /dev/null +++ b/docs/typedocs/classes/MoneroDaemonListener.html @@ -0,0 +1,143 @@ +MoneroDaemonListener | monero-ts
+
+ +
+
+
+
+ +

Class MoneroDaemonListener

+
+

Receives notifications as a daemon is updated.

+
+
+
+

Hierarchy

+
    +
  • MoneroDaemonListener
+
+
+
+ +
+
+

Constructors

+
+
+

Properties

+
+
+

Methods

+
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
lastHeader: MoneroBlockHeader
+
+

Methods

+
+ +
+
+ +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroDaemonRpc.html b/docs/typedocs/classes/MoneroDaemonRpc.html new file mode 100644 index 000000000..4881df9e9 --- /dev/null +++ b/docs/typedocs/classes/MoneroDaemonRpc.html @@ -0,0 +1,2122 @@ +MoneroDaemonRpc | monero-ts
+
+ +
+
+
+
+ +

Class MoneroDaemonRpc

+
+

Implements a MoneroDaemon as a client of monerod.

+
+
+
+

Hierarchy

+
+
+
+
+ +
+
+

Properties

+
+
+

Methods

+
addListener +checkForUpdate +downloadUpdate +flushTxPool +getAltBlockHashes +getAltChains +getBandwidthLimits +getBlockByHash +getBlockByHeight +getBlockHash +getBlockHashes +getBlockHeaderByHash +getBlockHeaderByHeight +getBlockHeaderByHeightCached +getBlockHeadersByRange +getBlockTemplate +getBlocksByHash +getBlocksByHeight +getBlocksByRange +getBlocksByRangeChunked +getDownloadLimit +getFeeEstimate +getHardForkInfo +getHeight +getInfo +getKeyImageSpentStatus +getKeyImageSpentStatuses +getKnownPeers +getLastBlockHeader +getListeners +getMaxBlocks +getMinerTxSum +getMiningStatus +getOutputDistribution +getOutputHistogram +getOutputs +getPeerBans +getPeers +getPollInterval +getProcess +getRpcConnection +getSyncInfo +getTx +getTxHex +getTxHexes +getTxPool +getTxPoolHashes +getTxPoolStats +getTxs +getUploadLimit +getVersion +isConnected +isTrusted +pruneBlockchain +refreshListening +relayTxByHash +relayTxsByHash +removeListener +resetDownloadLimit +resetUploadLimit +setBandwidthLimits +setDownloadLimit +setIncomingPeerLimit +setOutgoingPeerLimit +setPeerBan +setPeerBans +setUploadLimit +startMining +stop +stopMining +stopProcess +submitBlock +submitBlocks +submitTxHex +waitForNextBlockHeader +checkResponseStatus +connectToDaemonRpc +convertRpcAltChain +convertRpcBlock +convertRpcBlockHeader +convertRpcBlockTemplate +convertRpcConnection +convertRpcConnectionSpan +convertRpcHardForkInfo +convertRpcInfo +convertRpcMiningStatus +convertRpcOutput +convertRpcOutputHistogramEntry +convertRpcPeer +convertRpcSubmitTxResult +convertRpcSyncInfo +convertRpcTx +convertRpcTxPoolStats +convertRpcUpdateCheckResult +convertRpcUpdateDownloadResult +convertToRpcBan +normalizeConfig +prefixedHexToBI +startMonerodProcess +
+
+

Properties

+
+ +
cachedHeaders: any
+
+ +
config: Partial<MoneroDaemonConfig>
+
+ +
+
+ +
pollListener: any
+
+ +
process: any
+
+ +
proxyDaemon: any
+
+ +
DEFAULT_ID: "0000000000000000000000000000000000000000000000000000000000000000" = "0000000000000000000000000000000000000000000000000000000000000000"
+
+ +
DEFAULT_POLL_PERIOD: 20000 = 20000
+
+ +
MAX_REQ_SIZE: "3000000" = "3000000"
+
+ +
NUM_HEADERS_PER_REQ: 750 = 750
+
+

Methods

+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Get block hashes as a binary request to the daemon.

    +
    +
    +

    Parameters

    +
      +
    • +
      blockHashes: string[]
      +

      specify block hashes to fetch; first 10 blocks hash goes + sequential, next goes in pow(2,n) offset, like 2, 4, 8, 16, 32, 64 + and so on, and the last one is always genesis block

      +
      +
    • +
    • +
      startHeight: number
      +

      starting height of block hashes to return

      +
      +
    +

    Returns Promise<string[]>

    requested block hashes

    + +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Retrieves a header by height from the cache or fetches and caches a header +range if not already in the cache.

    +
    +
    +

    Parameters

    +
      +
    • +
      height: any
      +

      height of the header to retrieve from the cache

      +
      +
    • +
    • +
      maxHeight: any
      +

      maximum height of headers to cache

      +
      +
    +

    Returns Promise<any>

    +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Get blocks by hash.

    +
    +
    +

    Parameters

    +
      +
    • +
      blockHashes: string[]
      +

      array of hashes; first 10 blocks hashes goes sequential, + next goes in pow(2,n) offset, like 2, 4, 8, 16, 32, 64 and so on, + and the last one is always genesis block

      +
      +
    • +
    • +
      startHeight: number
      +

      start height to get blocks by hash

      +
      +
    • +
    • +
      Optional prune: boolean = false
      +

      specifies if returned blocks should be pruned (defaults to false) // TODO: test default

      +
      +
    +

    Returns Promise<MoneroBlock[]>

    retrieved blocks

    + +
+
+ +
+
+ +
    + +
  • +

    Get blocks in the given height range.

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional startHeight: number
      +

      start height lower bound inclusive (optional)

      +
      +
    • +
    • +
      Optional endHeight: number
      +

      end height upper bound inclusive (optional)

      +
      +
    +

    Returns Promise<MoneroBlock[]>

    are blocks in the given height range

    + +
+
+ +
    + +
  • +

    Get blocks in the given height range as chunked requests so that each request is +not too big.

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional startHeight: number
      +

      start height lower bound inclusive (optional)

      +
      +
    • +
    • +
      Optional endHeight: number
      +

      end height upper bound inclusive (optional)

      +
      +
    • +
    • +
      Optional maxChunkSize: number
      +

      maximum chunk size in any one request (default 3,000,000 bytes)

      +
      +
    +

    Returns Promise<MoneroBlock[]>

    blocks in the given height range

    + +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Get a contiguous chunk of blocks starting from a given height up to a maximum +height or amount of block data fetched from the blockchain, whichever comes first.

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional startHeight: any
      +

      start height to retrieve blocks (default 0)

      +
      +
    • +
    • +
      Optional maxHeight: any
      +

      maximum end height to retrieve blocks (default blockchain height)

      +
      +
    • +
    • +
      Optional maxReqSize: any
      +

      maximum amount of block data to fetch from the blockchain in bytes (default 3,000,000 bytes)

      +
      +
    +

    Returns Promise<MoneroBlock[]>

    are the resulting chunk of blocks

    + +
+
+ +
+
+ +
+
+ +
    + +
  • +
    +

    Parameters

    +
      +
    • +
      amounts: any
    • +
    • +
      cumulative: any
    • +
    • +
      startHeight: any
    • +
    • +
      endHeight: any
    +

    Returns Promise<any>

+
+ +
    + +
  • +

    Get a histogram of output amounts. For all amounts (possibly filtered by +parameters), gives the number of outputs on the chain for that amount. +RingCT outputs counts as 0 amount.

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional amounts: bigint[]
      +

      amounts of outputs to make the histogram with

      +
      +
    • +
    • +
      Optional minCount: number
      +

      TODO

      +
      +
    • +
    • +
      Optional maxCount: number
      +

      TODO

      +
      +
    • +
    • +
      Optional isUnlocked: boolean
      +

      makes a histogram with outputs with the specified lock state

      +
      +
    • +
    • +
      Optional recentCutoff: number
      +

      TODO

      +
      +
    +

    Returns Promise<MoneroOutputHistogramEntry[]>

    are entries meeting the parameters

    + +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Get the internal process running monerod.

    +
    +

    Returns ChildProcess

    the node process running monerod, undefined if not created from new process

    + +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Get a transaction by hash.

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional txHash: string
      +

      hash of the transaction to get

      +
      +
    • +
    • +
      prune: boolean = false
      +

      specifies if the returned tx should be pruned (defaults to false)

      +
      +
    +

    Returns Promise<MoneroTx>

    transaction with the given hash or undefined if not found

    + +
+
+ +
    + +
  • +

    Get a transaction hex by hash.

    +
    +
    +

    Parameters

    +
      +
    • +
      txHash: string
      +

      hash of the transaction to get hex from

      +
      +
    • +
    • +
      prune: boolean = false
      +

      specifies if the returned tx hex should be pruned (defaults to false)

      +
      +
    +

    Returns Promise<string>

    tx hex with the given hash

    + +
+
+ +
    + +
  • +

    Get transaction hexes by hashes.

    +
    +
    +

    Parameters

    +
      +
    • +
      txHashes: string[]
      +

      hashes of transactions to get hexes from

      +
      +
    • +
    • +
      prune: boolean = false
      +

      specifies if the returned tx hexes should be pruned (defaults to false)

      +
      +
    +

    Returns Promise<string[]>

    tx hexes

    + +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Get transactions by hashes.

    +
    +
    +

    Parameters

    +
      +
    • +
      txHashes: string[]
      +

      hashes of transactions to get

      +
      +
    • +
    • +
      prune: boolean = false
      +

      specifies if the returned txs should be pruned (defaults to false)

      +
      +
    +

    Returns Promise<MoneroTx[]>

    found transactions with the given hashes

    + +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Start mining.

    +
    +
    +

    Parameters

    +
      +
    • +
      address: string
      +

      address given miner rewards if the daemon mines a block

      +
      +
    • +
    • +
      Optional numThreads: number
      +

      number of mining threads to run (default 1)

      +
      +
    • +
    • +
      Optional isBackground: boolean
      +

      specifies if the miner should run in the background or not (default false)

      +
      +
    • +
    • +
      Optional ignoreBattery: boolean
      +

      specifies if the battery state (e.g. on laptop) should be ignored or not (default false)

      +
      +
    +

    Returns Promise<void>

    +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Stop the internal process running monerod, if applicable.

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional force: boolean = false
      +

      specifies if the process should be destroyed forcibly (default false)

      +
      +
    +

    Returns Promise<number>

    the exit code from stopping the process

    + +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Transfers RPC tx fields to a given MoneroTx without overwriting previous values.

    +

    TODO: switch from safe set

    +
    +
    +

    Parameters

    +
      +
    • +
      rpcTx: any
      +

      RPC map containing transaction fields

      +
      +
    • +
    • +
      tx: any
      +

      MoneroTx to populate with values (optional)

      +
      +
    +

    Returns any

    tx - same tx that was passed in or a new one if none given

    + +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Converts a '0x' prefixed hexidecimal string to a bigint.

    +
    +
    +

    Parameters

    +
      +
    • +
      hex: any
      +

      is the '0x' prefixed hexidecimal string to convert

      +
      +
    +

    Returns bigint

    the hexicedimal converted to decimal

    + +
+
+ +
+
+ +
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroDaemonSyncInfo.html b/docs/typedocs/classes/MoneroDaemonSyncInfo.html new file mode 100644 index 000000000..98174eec4 --- /dev/null +++ b/docs/typedocs/classes/MoneroDaemonSyncInfo.html @@ -0,0 +1,374 @@ +MoneroDaemonSyncInfo | monero-ts
+
+ +
+
+
+
+ +

Class MoneroDaemonSyncInfo

+
+

Models daemon synchronization information.

+
+
+
+

Hierarchy

+
    +
  • MoneroDaemonSyncInfo
+
+
+
+ +
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
credits: bigint
+
+ +
height: number
+
+ +
nextNeededPruningSeed: number
+
+ +
overview: string
+
+ +
peers: MoneroPeer[]
+
+ +
+
+ +
targetHeight: number
+
+ +
topBlockHash: string
+
+

Methods

+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroDaemonUpdateCheckResult.html b/docs/typedocs/classes/MoneroDaemonUpdateCheckResult.html new file mode 100644 index 000000000..a4abd6f04 --- /dev/null +++ b/docs/typedocs/classes/MoneroDaemonUpdateCheckResult.html @@ -0,0 +1,290 @@ +MoneroDaemonUpdateCheckResult | monero-ts
+
+ +
+
+
+
+ +

Class MoneroDaemonUpdateCheckResult

+
+

Models the result of checking for a daemon update.

+
+
+
+

Hierarchy

+
+
+
+
+ +
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
autoUri: string
+
+ +
hash: string
+
+ +
isUpdateAvailable: boolean
+
+ +
userUri: string
+
+ +
version: string
+
+

Methods

+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroDaemonUpdateDownloadResult.html b/docs/typedocs/classes/MoneroDaemonUpdateDownloadResult.html new file mode 100644 index 000000000..7a00894c0 --- /dev/null +++ b/docs/typedocs/classes/MoneroDaemonUpdateDownloadResult.html @@ -0,0 +1,342 @@ +MoneroDaemonUpdateDownloadResult | monero-ts
+
+ +
+
+
+
+ +

Class MoneroDaemonUpdateDownloadResult

+
+

Models the result of downloading an update.

+
+
+
+

Hierarchy

+
+
+
+
+ +
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
autoUri: string
+
+ +
downloadPath: string
+
+ +
hash: string
+
+ +
isUpdateAvailable: boolean
+
+ +
userUri: string
+
+ +
version: string
+
+

Methods

+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroDestination.html b/docs/typedocs/classes/MoneroDestination.html new file mode 100644 index 000000000..7799ff344 --- /dev/null +++ b/docs/typedocs/classes/MoneroDestination.html @@ -0,0 +1,218 @@ +MoneroDestination | monero-ts
+
+ +
+
+
+
+ +

Class MoneroDestination

+
+

Models an outgoing transfer destination.

+
+
+
+

Hierarchy

+
    +
  • MoneroDestination
+
+
+
+ +
+
+

Constructors

+
+
+

Properties

+
+
+

Methods

+
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
address: string
+
+ +
amount: bigint
+
+

Methods

+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroError.html b/docs/typedocs/classes/MoneroError.html new file mode 100644 index 000000000..9b0a83953 --- /dev/null +++ b/docs/typedocs/classes/MoneroError.html @@ -0,0 +1,232 @@ +MoneroError | monero-ts
+
+ +
+
+
+
+ +

Class MoneroError

+
+

Exception when interacting with a Monero wallet or daemon.

+
+
+
+

Hierarchy

+
+
+
+
+ +
+
+

Constructors

+
+
+

Properties

+
+
+

Methods

+
+
+

Constructors

+
+ +
    + +
  • +

    Constructs the error.

    +
    +
    +

    Parameters

    +
      +
    • +
      message: any
      +

      is a human-readable message of the error

      +
      +
    • +
    • +
      Optional code: any
      +

      is the error code (optional)

      +
      +
    +

    Returns MoneroError

    +
+
+

Properties

+
+ +
code: number
+
+ +
message: string
+
+ +
name: string
+
+ +
stack?: string
+
+ +
prepareStackTrace?: ((err, stackTraces) => any)
+
+

Type declaration

+
+
+ +
stackTraceLimit: number
+
+

Methods

+
+ +
+
+ +
+
+ +
    + +
  • +

    Create .stack property on a target object

    +
    +
    +

    Parameters

    +
      +
    • +
      targetObject: object
    • +
    • +
      Optional constructorOpt: Function
    +

    Returns void

    +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroFeeEstimate.html b/docs/typedocs/classes/MoneroFeeEstimate.html new file mode 100644 index 000000000..3b589fb9f --- /dev/null +++ b/docs/typedocs/classes/MoneroFeeEstimate.html @@ -0,0 +1,239 @@ +MoneroFeeEstimate | monero-ts
+
+ +
+
+
+
+ +

Class MoneroFeeEstimate

+
+

Models a Monero fee estimate.

+
+
+
+

Hierarchy

+
    +
  • MoneroFeeEstimate
+
+
+
+ +
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
fee: bigint
+
+ +
fees: bigint[]
+
+ +
quantizationMask: bigint
+
+

Methods

+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroHardForkInfo.html b/docs/typedocs/classes/MoneroHardForkInfo.html new file mode 100644 index 000000000..56b0fb1c3 --- /dev/null +++ b/docs/typedocs/classes/MoneroHardForkInfo.html @@ -0,0 +1,438 @@ +MoneroHardForkInfo | monero-ts
+
+ +
+
+
+
+ +

Class MoneroHardForkInfo

+
+

Monero hard fork info.

+
+
+
+

Hierarchy

+
    +
  • MoneroHardForkInfo
+
+
+
+ +
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
credits: bigint
+
+ +
earliestHeight: number
+
+ +
isEnabled: boolean
+
+ +
numVotes: number
+
+ +
state: string
+
+ +
threshold: number
+
+ +
topBlockHash: string
+
+ +
version: number
+
+ +
voting: number
+
+ +
window: number
+
+

Methods

+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroIncomingTransfer.html b/docs/typedocs/classes/MoneroIncomingTransfer.html new file mode 100644 index 000000000..4ef5051ea --- /dev/null +++ b/docs/typedocs/classes/MoneroIncomingTransfer.html @@ -0,0 +1,421 @@ +MoneroIncomingTransfer | monero-ts
+
+ +
+
+
+
+ +

Class MoneroIncomingTransfer

+
+

Models an incoming transfer of funds to the wallet.

+
+
+
+

Hierarchy

+
+
+
+
+ +
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
accountIndex: number
+
+ +
address: string
+
+ +
amount: bigint
+
+ +
numSuggestedConfirmations: number
+
+ +
subaddressIndex: number
+
+ +
+
+

Methods

+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Return how many confirmations till it's not economically worth re-writing the chain. +That is, the number of confirmations before the transaction is highly unlikely to be +double spent or overwritten and may be considered settled, e.g. for a merchant to trust +as finalized.

    +
    +

    Returns number

    is the number of confirmations before it's not worth rewriting the chain

    + +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroIntegratedAddress.html b/docs/typedocs/classes/MoneroIntegratedAddress.html new file mode 100644 index 000000000..b7d86c781 --- /dev/null +++ b/docs/typedocs/classes/MoneroIntegratedAddress.html @@ -0,0 +1,224 @@ +MoneroIntegratedAddress | monero-ts
+
+ +
+
+
+
+ +

Class MoneroIntegratedAddress

+
+

Monero integrated address model.

+
+
+
+

Hierarchy

+
    +
  • MoneroIntegratedAddress
+
+
+
+ +
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
integratedAddress: string
+
+ +
paymentId: string
+
+ +
standardAddress: string
+
+

Methods

+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroKeyImage.html b/docs/typedocs/classes/MoneroKeyImage.html new file mode 100644 index 000000000..4e4f8ba23 --- /dev/null +++ b/docs/typedocs/classes/MoneroKeyImage.html @@ -0,0 +1,230 @@ +MoneroKeyImage | monero-ts
+
+ +
+
+
+
+ +

Class MoneroKeyImage

+
+

Models a Monero key image.

+
+
+
+

Hierarchy

+
    +
  • MoneroKeyImage
+
+
+
+ +
+
+

Constructors

+
+
+

Properties

+
+
+

Methods

+
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
hex: string
+
+ +
signature: string
+
+

Methods

+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroKeyImageImportResult.html b/docs/typedocs/classes/MoneroKeyImageImportResult.html new file mode 100644 index 000000000..79d460667 --- /dev/null +++ b/docs/typedocs/classes/MoneroKeyImageImportResult.html @@ -0,0 +1,214 @@ +MoneroKeyImageImportResult | monero-ts
+
+ +
+
+
+
+ +

Class MoneroKeyImageImportResult

+
+

Models results from importing key images.

+
+
+
+

Hierarchy

+
    +
  • MoneroKeyImageImportResult
+
+
+
+ +
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
height: number
+
+ +
spentAmount: bigint
+
+ +
unspentAmount: bigint
+
+

Methods

+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroMessageSignatureResult.html b/docs/typedocs/classes/MoneroMessageSignatureResult.html new file mode 100644 index 000000000..06eb946b4 --- /dev/null +++ b/docs/typedocs/classes/MoneroMessageSignatureResult.html @@ -0,0 +1,246 @@ +MoneroMessageSignatureResult | monero-ts
+
+ +
+
+
+
+ +

Class MoneroMessageSignatureResult

+
+

Message signature verification result.

+
+
+
+

Hierarchy

+
    +
  • MoneroMessageSignatureResult
+
+
+
+ +
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
isGood: boolean
+
+ +
isOld: boolean
+
+ +
+
+ +
version: number
+
+

Methods

+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroMinerTxSum.html b/docs/typedocs/classes/MoneroMinerTxSum.html new file mode 100644 index 000000000..90014f85d --- /dev/null +++ b/docs/typedocs/classes/MoneroMinerTxSum.html @@ -0,0 +1,182 @@ +MoneroMinerTxSum | monero-ts
+
+ +
+
+
+
+ +

Class MoneroMinerTxSum

+
+

Model for the summation of miner emissions and fees.

+
+
+
+

Hierarchy

+
    +
  • MoneroMinerTxSum
+
+
+
+ +
+
+

Constructors

+
+
+

Properties

+
+
+

Methods

+
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
emissionSum: bigint
+
+ +
feeSum: bigint
+
+

Methods

+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroMiningStatus.html b/docs/typedocs/classes/MoneroMiningStatus.html new file mode 100644 index 000000000..85b285d43 --- /dev/null +++ b/docs/typedocs/classes/MoneroMiningStatus.html @@ -0,0 +1,278 @@ +MoneroMiningStatus | monero-ts
+
+ +
+
+
+
+ +

Class MoneroMiningStatus

+
+

Models daemon mining status.

+
+
+
+

Hierarchy

+
    +
  • MoneroMiningStatus
+
+
+
+ +
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
address: string
+
+ +
isActive: boolean
+
+ +
isBackground: boolean
+
+ +
numThreads: number
+
+ +
speed: number
+
+

Methods

+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroMultisigInfo.html b/docs/typedocs/classes/MoneroMultisigInfo.html new file mode 100644 index 000000000..97c5b5a06 --- /dev/null +++ b/docs/typedocs/classes/MoneroMultisigInfo.html @@ -0,0 +1,246 @@ +MoneroMultisigInfo | monero-ts
+
+ +
+
+
+
+ +

Class MoneroMultisigInfo

+
+

Models information about a multisig wallet.

+
+
+
+

Hierarchy

+
    +
  • MoneroMultisigInfo
+
+
+
+ +
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
isMultisig: boolean
+
+ +
isReady: boolean
+
+ +
numParticipants: number
+
+ +
threshold: number
+
+

Methods

+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroMultisigInitResult.html b/docs/typedocs/classes/MoneroMultisigInitResult.html new file mode 100644 index 000000000..321324da8 --- /dev/null +++ b/docs/typedocs/classes/MoneroMultisigInitResult.html @@ -0,0 +1,184 @@ +MoneroMultisigInitResult | monero-ts
+
+ +
+
+
+
+ +

Class MoneroMultisigInitResult

+
+

Models the result of initializing a multisig wallet which results in the +multisig wallet's address xor another multisig hex to share with +participants to create the wallet.

+
+
+
+

Hierarchy

+
    +
  • MoneroMultisigInitResult
+
+
+
+ +
+
+

Constructors

+
+
+

Properties

+
+
+

Methods

+
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
address: string
+
+ +
multisigHex: string
+
+

Methods

+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroMultisigSignResult.html b/docs/typedocs/classes/MoneroMultisigSignResult.html new file mode 100644 index 000000000..12816ec79 --- /dev/null +++ b/docs/typedocs/classes/MoneroMultisigSignResult.html @@ -0,0 +1,182 @@ +MoneroMultisigSignResult | monero-ts
+
+ +
+
+
+
+ +

Class MoneroMultisigSignResult

+
+

Models the result of signing multisig tx hex.

+
+
+
+

Hierarchy

+
    +
  • MoneroMultisigSignResult
+
+
+
+ +
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
signedMultisigTxHex: string
+
+ +
txHashes: string[]
+
+

Methods

+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroNetworkType.html b/docs/typedocs/classes/MoneroNetworkType.html new file mode 100644 index 000000000..c27942f49 --- /dev/null +++ b/docs/typedocs/classes/MoneroNetworkType.html @@ -0,0 +1,237 @@ +MoneroNetworkType | monero-ts
+
+ +
+
+
+
+ +

Class MoneroNetworkType

+
+

Defines the Monero network types (mainnet, testnet, and stagenet).

+
+
+
+

Hierarchy

+
    +
  • MoneroNetworkType
+
+
+
+ +
+
+

Constructors

+
+
+

Properties

+
+
+

Methods

+
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
MAINNET: 0 = 0
+

Mainnet (value=0).

+
+
+
+ +
STAGENET: 2 = 2
+

Stagnet (value=2).

+
+
+
+ +
TESTNET: 1 = 1
+

Testnet (value=1).

+
+
+
+

Methods

+
+ +
+
+ +
    + +
  • +

    Indicates if the given network type is valid or not.

    +
    +
    +

    Parameters

    +
      +
    • +
      networkType: string | number | MoneroNetworkType
      +

      the network type to validate as a numeric

      +
      +
    +

    Returns boolean

    true if the network type is valid, false otherwise

    + +
+
+ +
+
+ +
+
+ +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroOutgoingTransfer.html b/docs/typedocs/classes/MoneroOutgoingTransfer.html new file mode 100644 index 000000000..1dd5697f8 --- /dev/null +++ b/docs/typedocs/classes/MoneroOutgoingTransfer.html @@ -0,0 +1,411 @@ +MoneroOutgoingTransfer | monero-ts
+
+ +
+
+
+
+ +

Class MoneroOutgoingTransfer

+
+

Models an outgoing transfer of funds from the wallet.

+
+
+
+

Hierarchy

+
+
+
+
+ +
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
accountIndex: number
+
+ +
addresses: string[]
+
+ +
amount: bigint
+
+ +
destinations: MoneroDestination[]
+
+ +
subaddressIndices: number[]
+
+ +
+
+

Methods

+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroOutput.html b/docs/typedocs/classes/MoneroOutput.html new file mode 100644 index 000000000..89785806b --- /dev/null +++ b/docs/typedocs/classes/MoneroOutput.html @@ -0,0 +1,358 @@ +MoneroOutput | monero-ts
+
+ +
+
+
+
+ +

Class MoneroOutput

+
+

Models a Monero transaction output.

+
+
+
+

Hierarchy

+
+
+
+
+ +
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
amount: bigint
+
+ +
index: number
+
+ +
keyImage: Partial<MoneroKeyImage>
+
+ +
ringOutputIndices: number[]
+
+ +
stealthPublicKey: string
+
+ +
+
+

Methods

+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroOutputHistogramEntry.html b/docs/typedocs/classes/MoneroOutputHistogramEntry.html new file mode 100644 index 000000000..ca84e5cc8 --- /dev/null +++ b/docs/typedocs/classes/MoneroOutputHistogramEntry.html @@ -0,0 +1,246 @@ +MoneroOutputHistogramEntry | monero-ts
+
+ +
+
+
+
+ +

Class MoneroOutputHistogramEntry

+
+

Entry in a Monero output histogram (see get_output_histogram of Daemon RPC documentation).

+
+
+
+

Hierarchy

+
    +
  • MoneroOutputHistogramEntry
+
+
+
+ +
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
amount: bigint
+
+ +
numInstances: number
+
+ +
numRecentInstances: number
+
+ +
numUnlockedInstances: number
+
+

Methods

+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroOutputQuery.html b/docs/typedocs/classes/MoneroOutputQuery.html new file mode 100644 index 000000000..d31071a7e --- /dev/null +++ b/docs/typedocs/classes/MoneroOutputQuery.html @@ -0,0 +1,709 @@ +MoneroOutputQuery | monero-ts
+
+ +
+
+
+
+ +

Class MoneroOutputQuery

+
+

Configuration to query wallet outputs.

+
+
+
+

Hierarchy

+
+
+
+
+ +
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
accountIndex: number
+
+ +
amount: bigint
+
+ +
index: number
+
+ +
isFrozen: boolean
+
+ +
isLocked: boolean
+
+ +
isSpent: boolean
+
+ +
keyImage: Partial<MoneroKeyImage>
+
+ +
maxAmount: bigint
+
+ +
minAmount: bigint
+
+ +
ringOutputIndices: number[]
+
+ +
stealthPublicKey: string
+
+ +
subaddressIndex: number
+
+ +
subaddressIndices: number[]
+
+ +
+
+ +
txQuery: Partial<MoneroTxQuery>
+
+

Methods

+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroOutputWallet.html b/docs/typedocs/classes/MoneroOutputWallet.html new file mode 100644 index 000000000..e1dc9e9bf --- /dev/null +++ b/docs/typedocs/classes/MoneroOutputWallet.html @@ -0,0 +1,542 @@ +MoneroOutputWallet | monero-ts
+
+ +
+
+
+
+ +

Class MoneroOutputWallet

+
+

Models a Monero output with wallet extensions.

+
+
+
+

Hierarchy

+
+
+
+
+ +
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
accountIndex: number
+
+ +
amount: bigint
+
+ +
index: number
+
+ +
isFrozen: boolean
+
+ +
isLocked: boolean
+
+ +
isSpent: boolean
+
+ +
keyImage: Partial<MoneroKeyImage>
+
+ +
ringOutputIndices: number[]
+
+ +
stealthPublicKey: string
+
+ +
subaddressIndex: number
+
+ +
+
+

Methods

+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Indicates if this output has been deemed 'malicious' and will therefore +not be spent by the wallet.

    +
    +

    Returns boolean

    Boolean is whether or not this output is frozen

    + +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroPeer.html b/docs/typedocs/classes/MoneroPeer.html new file mode 100644 index 000000000..807ffff33 --- /dev/null +++ b/docs/typedocs/classes/MoneroPeer.html @@ -0,0 +1,923 @@ +MoneroPeer | monero-ts
+
+ +
+
+
+
+ +

Class MoneroPeer

+
+

Models a peer to the daemon.

+
+
+
+

Hierarchy

+
    +
  • MoneroPeer
+
+
+
+ +
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
address: string
+
+ +
avgDownload: number
+
+ +
avgUpload: number
+
+ +
currentDownload: number
+
+ +
currentUpload: number
+
+ +
height: number
+
+ +
host: string
+
+ +
id: string
+
+ +
isIncoming: boolean
+
+ +
isLocalHost: boolean
+
+ +
isLocalIp: boolean
+
+ +
isOnline: boolean
+
+ +
lastSeenTimestamp: number
+
+ +
liveTime: number
+
+ +
numReceives: number
+
+ +
numSends: number
+
+ +
numSupportFlags: number
+
+ +
port: number
+
+ +
pruningSeed: number
+
+ +
receiveIdleTime: number
+
+ +
rpcCreditsPerHash: bigint
+
+ +
rpcPort: number
+
+ +
sendIdleTime: number
+
+ +
state: string
+
+ +
+
+

Methods

+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Indicates if the peer was online when last checked (aka "white listed" as +opposed to "gray listed").

    +
    +

    Returns boolean

    true if peer was online when last checked, false otherwise

    + +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroPruneResult.html b/docs/typedocs/classes/MoneroPruneResult.html new file mode 100644 index 000000000..3643e3325 --- /dev/null +++ b/docs/typedocs/classes/MoneroPruneResult.html @@ -0,0 +1,182 @@ +MoneroPruneResult | monero-ts
+
+ +
+
+
+
+ +

Class MoneroPruneResult

+
+

Result of pruning the blockchain.

+
+
+
+

Hierarchy

+
    +
  • MoneroPruneResult
+
+
+
+ +
+
+

Constructors

+
+
+

Properties

+
+
+

Methods

+
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
isPruned: boolean
+
+ +
pruningSeed: number
+
+

Methods

+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroRpcConnection.html b/docs/typedocs/classes/MoneroRpcConnection.html new file mode 100644 index 000000000..ea07ebef3 --- /dev/null +++ b/docs/typedocs/classes/MoneroRpcConnection.html @@ -0,0 +1,628 @@ +MoneroRpcConnection | monero-ts
+
+ +
+
+
+
+ +

Class MoneroRpcConnection

+
+

Maintains a connection and sends requests to a Monero RPC API.

+
+
+
+

Hierarchy

+
    +
  • MoneroRpcConnection
+
+
+
+ +
+
+

Constructors

+
+ +
    + +
  • +

    Construct a RPC connection.

    + +

    Examples:

    + + +let connection1 = new MoneroRpcConnection("http://localhost:38081", "daemon_user", "daemon_password_123")

    + +

    let connection2 = new MoneroRpcConnection({
    +   uri: http://localhost:38081,
    +   username: "daemon_user",
    +   password: "daemon_password_123",
    +   rejectUnauthorized: false, // accept self-signed certificates e.g. for local development
    +   proxyToWorker: true // proxy request to worker (default false)
    +}); +

    +
    +
    +

    Parameters

    +
      +
    • +
      uriOrConnection: string | Partial<MoneroRpcConnection>
      +

      MoneroRpcConnection or URI of the RPC endpoint

      +
      +
    • +
    • +
      Optional username: string
      +

      username to authenticate with the RPC endpoint (optional)

      +
      +
    • +
    • +
      Optional password: string
      +

      password to authenticate with the RPC endpoint (optional)

      +
      +
    +

    Returns MoneroRpcConnection

    +
+
+

Properties

+
+ +
attributes: any
+
+ +
fakeDisconnected: boolean
+
+ +
isAuthenticated: boolean
+
+ +
isOnline: boolean
+
+ +
password: string
+
+ +
priority: number
+
+ +
proxyToWorker: boolean
+
+ +
rejectUnauthorized: boolean
+
+ +
responseTime: number
+
+ +
uri: string
+
+ +
username: string
+
+

Methods

+
+ +
    + +
  • +

    Check the connection status to update isOnline, isAuthenticated, and response time.

    +
    +
    +

    Parameters

    +
      +
    • +
      timeoutMs: any
      +

      maximum response time before considered offline

      +
      +
    +

    Returns Promise<boolean>

    true if there is a change in status, false otherwise

    + +
+
+ +
+
+ +
    + +
  • +

    Returns {
        password: string;
        priority: number;
        proxyToWorker: boolean;
        rejectUnauthorized: boolean;
        uri: string;
        username: string;
    }

    +
      +
    • +
      password: string
    • +
    • +
      priority: number
    • +
    • +
      proxyToWorker: boolean
    • +
    • +
      rejectUnauthorized: boolean
    • +
    • +
      uri: string
    • +
    • +
      username: string
+
+ +
    + +
  • +

    Indicates if the connection is authenticated according to the last call to checkConnection().

    +

    Note: must call checkConnection() manually unless using MoneroConnectionManager.

    +
    +

    Returns boolean

    true if authenticated or no authentication, false if not authenticated, or undefined if checkConnection() has not been called

    + +
+
+ +
    + +
  • +

    Indicates if the connection is online according to the last call to checkConnection().

    +

    Note: must call checkConnection() manually unless using MoneroConnectionManager.

    +
    +

    Returns boolean

    true or false to indicate if online, or undefined if checkConnection() has not been called

    + +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Indicates if the connection is connected according to the last call to checkConnection().

    +

    Note: must call checkConnection() manually unless using MoneroConnectionManager.

    +
    +

    Returns boolean

    true or false to indicate if connected, or undefined if checkConnection() has not been called

    + +
+
+ +
    + +
  • +

    Send a binary RPC request.

    +
    +
    +

    Parameters

    +
      +
    • +
      path: any
      +

      path of the binary RPC method to invoke

      +
      +
    • +
    • +
      Optional params: any
      +

      request parameters

      +
      +
    • +
    • +
      Optional timeoutInMs: any
      +

      request timeout in milliseconds

      +
      +
    +

    Returns Promise<any>

    the binary response

    + +
+
+ +
    + +
  • +

    Send a JSON RPC request.

    +
    +
    +

    Parameters

    +
      +
    • +
      method: any
      +

      JSON RPC method to invoke

      +
      +
    • +
    • +
      Optional params: any
      +

      request parameters

      +
      +
    • +
    • +
      Optional timeoutInMs: any
      +

      request timeout in milliseconds

      +
      +
    +

    Returns Promise<any>

    is the response map

    + +
+
+ +
    + +
  • +

    Send a RPC request to the given path and with the given paramters.

    +

    E.g. "/get_transactions" with params

    +
    +
    +

    Parameters

    +
      +
    • +
      path: any
      +

      JSON RPC path to invoke

      +
      +
    • +
    • +
      Optional params: any
      +

      request parameters

      +
      +
    • +
    • +
      Optional timeoutInMs: any
      +

      request timeout in milliseconds

      +
      +
    +

    Returns Promise<any>

    is the response map

    + +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroRpcError.html b/docs/typedocs/classes/MoneroRpcError.html new file mode 100644 index 000000000..21b93a50c --- /dev/null +++ b/docs/typedocs/classes/MoneroRpcError.html @@ -0,0 +1,277 @@ +MoneroRpcError | monero-ts
+
+ +
+
+
+
+ +

Class MoneroRpcError

+
+

Error when interacting with Monero RPC.

+
+
+
+

Hierarchy

+
+
+
+
+ +
+
+

Constructors

+
+ +
    + +
  • +

    Constructs the error.

    +
    +
    +

    Parameters

    +
      +
    • +
      rpcDescription: any
      +

      is a description of the error from rpc

      +
      +
    • +
    • +
      rpcCode: any
      +

      is the error code from rpc

      +
      +
    • +
    • +
      Optional rpcMethod: any
      +

      is the rpc method invoked

      +
      +
    • +
    • +
      Optional rpcParams: any
      +

      are parameters sent with the rpc request

      +
      +
    +

    Returns MoneroRpcError

    +
+
+

Properties

+
+ +
code: number
+
+ +
message: string
+
+ +
name: string
+
+ +
rpcMethod: any
+
+ +
rpcParams: any
+
+ +
stack?: string
+
+ +
prepareStackTrace?: ((err, stackTraces) => any)
+
+

Type declaration

+
+
+ +
stackTraceLimit: number
+
+

Methods

+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Create .stack property on a target object

    +
    +
    +

    Parameters

    +
      +
    • +
      targetObject: object
    • +
    • +
      Optional constructorOpt: Function
    +

    Returns void

    +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroSubaddress.html b/docs/typedocs/classes/MoneroSubaddress.html new file mode 100644 index 000000000..463b676b5 --- /dev/null +++ b/docs/typedocs/classes/MoneroSubaddress.html @@ -0,0 +1,421 @@ +MoneroSubaddress | monero-ts
+
+ +
+
+
+
+ +

Class MoneroSubaddress

+
+

Monero subaddress model.

+
+
+
+

Hierarchy

+
    +
  • MoneroSubaddress
+
+
+
+ +
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
accountIndex: number
+
+ +
address: string
+
+ +
balance: bigint
+
+ +
index: number
+
+ +
isUsed: boolean
+
+ +
label: string
+
+ +
numBlocksToUnlock: number
+
+ +
numUnspentOutputs: number
+
+ +
unlockedBalance: bigint
+
+

Methods

+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroSubmitTxResult.html b/docs/typedocs/classes/MoneroSubmitTxResult.html new file mode 100644 index 000000000..57d52516c --- /dev/null +++ b/docs/typedocs/classes/MoneroSubmitTxResult.html @@ -0,0 +1,598 @@ +MoneroSubmitTxResult | monero-ts
+
+ +
+
+
+
+ +

Class MoneroSubmitTxResult

+
+

Models the result from submitting a tx to a daemon.

+
+
+
+

Hierarchy

+
    +
  • MoneroSubmitTxResult
+
+
+
+ +
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
credits: bigint
+
+ +
hasInvalidInput: boolean
+
+ +
hasInvalidOutput: boolean
+
+ +
hasTooFewOutputs: boolean
+
+ +
isDoubleSpendSeen: boolean
+
+ +
isFeeTooLow: boolean
+
+ +
isGood: boolean
+
+ +
isMixinTooLow: boolean
+
+ +
isOverspend: boolean
+
+ +
isRelayed: boolean
+
+ +
isTooBig: boolean
+
+ +
isTxExtraTooBig: boolean
+
+ +
reason: string
+
+ +
sanityCheckFailed: boolean
+
+ +
topBlockHash: string
+
+

Methods

+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroSyncResult.html b/docs/typedocs/classes/MoneroSyncResult.html new file mode 100644 index 000000000..2087c29eb --- /dev/null +++ b/docs/typedocs/classes/MoneroSyncResult.html @@ -0,0 +1,174 @@ +MoneroSyncResult | monero-ts
+
+ +
+
+
+
+ +

Class MoneroSyncResult

+
+

Result from syncing a Monero wallet.

+
+
+
+

Hierarchy

+
    +
  • MoneroSyncResult
+
+
+
+ +
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
numBlocksFetched: number
+
+ +
receivedMoney: bigint
+
+

Methods

+
+ +
+
+ +
+
+ +
+
+ +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroTransfer.html b/docs/typedocs/classes/MoneroTransfer.html new file mode 100644 index 000000000..d360de7c4 --- /dev/null +++ b/docs/typedocs/classes/MoneroTransfer.html @@ -0,0 +1,304 @@ +MoneroTransfer | monero-ts
+
+ +
+
+
+
+ +

Class MoneroTransfer

+
+

Models a base transfer of funds to or from the wallet.

+
+
+
+

Hierarchy

+
+
+
+
+ +
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
accountIndex: number
+
+ +
amount: bigint
+
+ +
+
+

Methods

+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Updates this transaction by merging the latest information from the given +transaction.

    +

    Merging can modify or build references to the transfer given so it +should not be re-used or it should be copied before calling this method.

    +
    +
    +

    Parameters

    +
      +
    • +
      transfer: MoneroTransfer
      +

      is the transfer to merge into this one

      +
      +
    +

    Returns MoneroTransfer

    the merged transfer

    + +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroTransferQuery.html b/docs/typedocs/classes/MoneroTransferQuery.html new file mode 100644 index 000000000..affc0d513 --- /dev/null +++ b/docs/typedocs/classes/MoneroTransferQuery.html @@ -0,0 +1,630 @@ +MoneroTransferQuery | monero-ts
+
+ +
+
+
+
+ +

Class MoneroTransferQuery

+
+

Configuration to query wallet transfers.

+
+
+
+

Hierarchy

+
+
+
+
+ +
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
accountIndex: number
+
+ +
address: string
+
+ +
addresses: string[]
+
+ +
amount: bigint
+
+ +
destinations: MoneroDestination[]
+
+ +
hasDestinations: boolean
+
+ +
isIncoming: boolean
+
+ +
subaddressIndex: number
+
+ +
subaddressIndices: number[]
+
+ +
+
+ +
txQuery: Partial<MoneroTxQuery>
+
+

Methods

+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroTx.html b/docs/typedocs/classes/MoneroTx.html new file mode 100644 index 000000000..ef01adceb --- /dev/null +++ b/docs/typedocs/classes/MoneroTx.html @@ -0,0 +1,1640 @@ +MoneroTx | monero-ts
+
+ +
+
+
+
+ +

Class MoneroTx

+
+

Represents a transaction on the Monero network.

+
+
+
+

Hierarchy

+
+
+
+
+ +
+
+

Constructors

+
+
+

Properties

+
+
+

Methods

+
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
+
+ +
extra: Uint8Array
+
+ +
fee: bigint
+
+ +
fullHex: string
+
+ +
hash: string
+
+ +
inTxPool: boolean
+
+ +
inputs: MoneroOutput[]
+
+ +
isConfirmed: boolean
+
+ +
isDoubleSpendSeen: boolean
+
+ +
isFailed: boolean
+
+ +
isKeptByBlock: boolean
+
+ +
isMinerTx: boolean
+
+ +
isRelayed: boolean
+
+ +
key: string
+
+ +
lastFailedHash: string
+
+ +
lastFailedHeight: number
+
+ +
lastRelayedTimestamp: number
+
+ +
maxUsedBlockHash: string
+
+ +
maxUsedBlockHeight: number
+
+ +
metadata: string
+
+ +
numConfirmations: number
+
+ +
outputIndices: number[]
+
+ +
outputs: MoneroOutput[]
+
+ +
paymentId: string
+
+ +
prunableHash: string
+
+ +
prunableHex: string
+
+ +
prunedHex: string
+
+ +
rctSigPrunable: any
+
+ +
rctSignatures: any
+
+ +
receivedTimestamp: number
+
+ +
relay: boolean
+
+ +
ringSize: number
+
+ +
signatures: string[]
+
+ +
size: number
+
+ +
unlockTime: bigint
+
+ +
version: number
+
+ +
weight: number
+
+ +
DEFAULT_PAYMENT_ID: "0000000000000000" = "0000000000000000"
+
+

Methods

+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Get prunable transaction hex which is hex that is removed from a pruned +transaction. Full hex = pruned hex + prunable hex.

    +
    +

    Returns string

    prunable tx hex

    + +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Get the minimum height or timestamp for the transactions to unlock.

    +
    +

    Returns bigint

    the minimum height or timestamp for the transactin to unlock

    + +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +
    +

    Parameters

    +
      +
    • +
      Optional indent: number = 0
      +

      starting indentation

      +
      +
    +

    Returns string

    string representation of this tx

    + +
+
+ +
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroTxConfig.html b/docs/typedocs/classes/MoneroTxConfig.html new file mode 100644 index 000000000..4ccffa50a --- /dev/null +++ b/docs/typedocs/classes/MoneroTxConfig.html @@ -0,0 +1,775 @@ +MoneroTxConfig | monero-ts
+
+ +
+
+
+
+ +

Class MoneroTxConfig

+
+

Configures a transaction to send, sweep, or create a payment URI.

+
+
+
+

Hierarchy

+
    +
  • MoneroTxConfig
+
+
+
+ +
+
+

Constructors

+
+ +
    + +
  • +

    Generic request to transfer funds from a wallet.

    + +

    Example:

    + + +let config1 = new MoneroTxConfig({
    +   accountIndex: 0,
    +   address: "59aZULsUF3YN...",
    +   amount: BigInt("500000"),
    +   priority: MoneroTxPriority.NORMAL,
    +   relay: true
    +}); +
    +
    +

    Parameters

    +
      +
    • +
      Optional config: Partial<MoneroTxConfig>
      +

      configures the transaction to create (optional)

      +
      +
    +

    Returns MoneroTxConfig

    +
+
+

Properties

+
+ +
accountIndex: number
+
+ +
address: string
+
+ +
amount: bigint
+
+ +
belowAmount: bigint
+
+ +
canSplit: boolean
+
+ +
destinations: Partial<MoneroDestination>[]
+
+ +
fee: bigint
+
+ +
keyImage: string
+
+ +
note: string
+
+ +
paymentId: string
+
+ +
priority: number
+
+ +
recipientName: string
+
+ +
relay: boolean
+
+ +
subaddressIndex: number
+
+ +
subaddressIndices: number[]
+
+ +
subtractFeeFrom: number[]
+
+ +
sweepEachSubaddress: boolean
+
+ +
unlockTime: bigint
+
+

Methods

+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroTxPoolStats.html b/docs/typedocs/classes/MoneroTxPoolStats.html new file mode 100644 index 000000000..62470399b --- /dev/null +++ b/docs/typedocs/classes/MoneroTxPoolStats.html @@ -0,0 +1,534 @@ +MoneroTxPoolStats | monero-ts
+
+ +
+
+
+
+ +

Class MoneroTxPoolStats

+
+

Models transaction pool statistics.

+
+
+
+

Hierarchy

+
    +
  • MoneroTxPoolStats
+
+
+
+ +
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
bytesMax: number
+
+ +
bytesMed: number
+
+ +
bytesMin: number
+
+ +
bytesTotal: number
+
+ +
feeTotal: bigint
+
+ +
histo: Map<number, number>
+
+ +
histo98pc: number
+
+ +
num10m: number
+
+ +
numDoubleSpends: number
+
+ +
numFailing: number
+
+ +
numNotRelayed: number
+
+ +
numTxs: number
+
+ +
oldestTimestamp: number
+
+

Methods

+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroTxQuery.html b/docs/typedocs/classes/MoneroTxQuery.html new file mode 100644 index 000000000..ebc004606 --- /dev/null +++ b/docs/typedocs/classes/MoneroTxQuery.html @@ -0,0 +1,2847 @@ +MoneroTxQuery | monero-ts
+
+ +
+
+
+
+ +

Class MoneroTxQuery

+
+

Configuration to query transactions.

+
+
+

Hierarchy

+
+
+
+
+ +
+
+

Constructors

+
+
+

Properties

+
+
+

Methods

+
copy +filterOutputs +filterTransfers +getBlock +getChangeAddress +getChangeAmount +getExtra +getExtraHex +getFee +getFullHex +getHasPaymentId +getHash +getHashes +getHeight +getInTxPool +getIncludeOutputs +getIncomingAmount +getIncomingTransfers +getInputQuery +getInputSum +getInputs +getInputsWallet +getIsConfirmed +getIsDoubleSpendSeen +getIsFailed +getIsIncoming +getIsKeptByBlock +getIsLocked +getIsMinerTx +getIsOutgoing +getIsRelayed +getKey +getLastFailedHash +getLastFailedHeight +getLastRelayedTimestamp +getMaxHeight +getMaxUsedBlockHash +getMaxUsedBlockHeight +getMetadata +getMinHeight +getNote +getNumConfirmations +getNumDummyOutputs +getOutgoingAmount +getOutgoingTransfer +getOutputIndices +getOutputQuery +getOutputSum +getOutputs +getOutputsWallet +getPaymentId +getPaymentIds +getPrunableHash +getPrunableHex +getPrunedHex +getRctSigPrunable +getRctSignatures +getReceivedTimestamp +getRelay +getRingSize +getSignatures +getSize +getTransferQuery +getTransfers +getTxSet +getUnlockTime +getVersion +getWeight +meetsCriteria +merge +setBlock +setChangeAddress +setChangeAmount +setExtra +setExtraHex +setFee +setFullHex +setHasPaymentId +setHash +setHashes +setHeight +setInTxPool +setIncludeOutputs +setIncomingTransfers +setInputQuery +setInputSum +setInputs +setInputsWallet +setIsConfirmed +setIsDoubleSpendSeen +setIsFailed +setIsIncoming +setIsKeptByBlock +setIsLocked +setIsMinerTx +setIsOutgoing +setIsRelayed +setKey +setLastFailedHash +setLastFailedHeight +setLastRelayedTimestamp +setMaxHeight +setMaxUsedBlockHash +setMaxUsedBlockHeight +setMetadata +setMinHeight +setNote +setNumConfirmations +setNumDummyOutputs +setOutgoingTransfer +setOutputIndices +setOutputQuery +setOutputSum +setOutputs +setOutputsWallet +setPaymentId +setPaymentIds +setPrunableHash +setPrunableHex +setPrunedHex +setRctSigPrunable +setRctSignatures +setReceivedTimestamp +setRelay +setRingSize +setSignatures +setSize +setTransferQuery +setTxSet +setUnlockTime +setVersion +setWeight +toJson +toString +mergeIncomingTransfer +
+
+

Constructors

+
+ +
    + +
  • +

    Construct the transaction query.

    + +

    Example:

    + + +// get transactions with unlocked incoming transfers to account 0
    +let txs = await wallet.getTxs({
    +   isLocked: false,
    +   transferQuery: {
    +     isIncoming: true,
    +     accountIndex: 0
    +   }
    +}); +
    + +

    All configuration is optional. All transactions are returned except those that don't meet criteria defined in this query.

    +
    +

    Parameters

    +
      +
    • +
      Optional query: Partial<MoneroTxQuery>
      +

      tx query configuration

      +
      +
    +

    Returns MoneroTxQuery

    +
+
+

Properties

+
+ +
+
+ +
changeAddress: string
+
+ +
changeAmount: bigint
+
+ +
extra: Uint8Array
+
+ +
extraHex: string
+
+ +
fee: bigint
+
+ +
fullHex: string
+
+ +
hasPaymentId: boolean
+
+ +
hash: string
+
+ +
hashes: string[]
+
+ +
height: number
+
+ +
inTxPool: boolean
+
+ +
includeOutputs: boolean
+
+ +
incomingTransfers: MoneroIncomingTransfer[]
+
+ +
inputQuery: Partial<MoneroOutputQuery>
+
+ +
inputSum: bigint
+
+ +
inputs: MoneroOutput[]
+
+ +
isConfirmed: boolean
+
+ +
isDoubleSpendSeen: boolean
+
+ +
isFailed: boolean
+
+ +
isIncoming: boolean
+
+ +
isKeptByBlock: boolean
+
+ +
isLocked: boolean
+
+ +
isMinerTx: boolean
+
+ +
isOutgoing: boolean
+
+ +
isRelayed: boolean
+
+ +
key: string
+
+ +
lastFailedHash: string
+
+ +
lastFailedHeight: number
+
+ +
lastRelayedTimestamp: number
+
+ +
maxHeight: number
+
+ +
maxUsedBlockHash: string
+
+ +
maxUsedBlockHeight: number
+
+ +
metadata: string
+
+ +
minHeight: number
+
+ +
note: string
+
+ +
numConfirmations: number
+
+ +
numDummyOutputs: number
+
+ +
outgoingTransfer: MoneroOutgoingTransfer
+
+ +
outputIndices: number[]
+
+ +
outputQuery: Partial<MoneroOutputQuery>
+
+ +
outputSum: bigint
+
+ +
outputs: MoneroOutput[]
+
+ +
paymentId: string
+
+ +
paymentIds: string[]
+
+ +
prunableHash: string
+
+ +
prunableHex: string
+
+ +
prunedHex: string
+
+ +
rctSigPrunable: any
+
+ +
rctSignatures: any
+
+ +
receivedTimestamp: number
+
+ +
relay: boolean
+
+ +
ringSize: number
+
+ +
signatures: string[]
+
+ +
size: number
+
+ +
transferQuery: Partial<MoneroTransferQuery>
+
+ +
+
+ +
unlockTime: bigint
+
+ +
version: number
+
+ +
weight: number
+
+ +
DEFAULT_PAYMENT_ID: "0000000000000000" = "0000000000000000"
+
+

Methods

+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +
    +

    Parameters

    +
      +
    • +
      Optional indent: number = 0
      +

      starting indentation

      +
      +
    • +
    • +
      Optional oneLine: boolean = false
      +

      string is one line if true, multiple lines if false

      +
      +
    +

    Returns string

    string representation of this tx

    + +
+
+ +
+
+ +
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroTxSet.html b/docs/typedocs/classes/MoneroTxSet.html new file mode 100644 index 000000000..5743b9be6 --- /dev/null +++ b/docs/typedocs/classes/MoneroTxSet.html @@ -0,0 +1,280 @@ +MoneroTxSet | monero-ts
+
+ +
+
+
+
+ +

Class MoneroTxSet

+
+

Groups transactions who share common hex data which is needed in order to +sign and submit the transactions.

+

For example, multisig transactions created from createTxs() share a common +hex string which is needed in order to sign and submit the multisig +transactions.

+
+
+
+

Hierarchy

+
    +
  • MoneroTxSet
+
+
+
+ +
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
multisigTxHex: string
+
+ +
signedTxHex: string
+
+ +
+
+ +
unsignedTxHex: string
+
+

Methods

+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroTxWallet.html b/docs/typedocs/classes/MoneroTxWallet.html new file mode 100644 index 000000000..7ef594dff --- /dev/null +++ b/docs/typedocs/classes/MoneroTxWallet.html @@ -0,0 +1,2460 @@ +MoneroTxWallet | monero-ts
+
+ +
+
+
+
+ +

Class MoneroTxWallet

+
+

Models a Monero transaction with wallet extensions.

+
+
+
+

Hierarchy

+
+
+
+
+ +
+
+

Constructors

+
+
+

Properties

+
+
+

Methods

+
copy +filterOutputs +filterTransfers +getBlock +getChangeAddress +getChangeAmount +getExtra +getExtraHex +getFee +getFullHex +getHash +getHeight +getInTxPool +getIncomingAmount +getIncomingTransfers +getInputSum +getInputs +getInputsWallet +getIsConfirmed +getIsDoubleSpendSeen +getIsFailed +getIsIncoming +getIsKeptByBlock +getIsLocked +getIsMinerTx +getIsOutgoing +getIsRelayed +getKey +getLastFailedHash +getLastFailedHeight +getLastRelayedTimestamp +getMaxUsedBlockHash +getMaxUsedBlockHeight +getMetadata +getNote +getNumConfirmations +getNumDummyOutputs +getOutgoingAmount +getOutgoingTransfer +getOutputIndices +getOutputSum +getOutputs +getOutputsWallet +getPaymentId +getPrunableHash +getPrunableHex +getPrunedHex +getRctSigPrunable +getRctSignatures +getReceivedTimestamp +getRelay +getRingSize +getSignatures +getSize +getTransfers +getTxSet +getUnlockTime +getVersion +getWeight +merge +setBlock +setChangeAddress +setChangeAmount +setExtra +setExtraHex +setFee +setFullHex +setHash +setInTxPool +setIncomingTransfers +setInputSum +setInputs +setInputsWallet +setIsConfirmed +setIsDoubleSpendSeen +setIsFailed +setIsIncoming +setIsKeptByBlock +setIsLocked +setIsMinerTx +setIsOutgoing +setIsRelayed +setKey +setLastFailedHash +setLastFailedHeight +setLastRelayedTimestamp +setMaxUsedBlockHash +setMaxUsedBlockHeight +setMetadata +setNote +setNumConfirmations +setNumDummyOutputs +setOutgoingTransfer +setOutputIndices +setOutputSum +setOutputs +setOutputsWallet +setPaymentId +setPrunableHash +setPrunableHex +setPrunedHex +setRctSigPrunable +setRctSignatures +setReceivedTimestamp +setRelay +setRingSize +setSignatures +setSize +setTxSet +setUnlockTime +setVersion +setWeight +toJson +toString +mergeIncomingTransfer +
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
+
+ +
changeAddress: string
+
+ +
changeAmount: bigint
+
+ +
extra: Uint8Array
+
+ +
extraHex: string
+
+ +
fee: bigint
+
+ +
fullHex: string
+
+ +
hash: string
+
+ +
inTxPool: boolean
+
+ +
incomingTransfers: MoneroIncomingTransfer[]
+
+ +
inputSum: bigint
+
+ +
inputs: MoneroOutput[]
+
+ +
isConfirmed: boolean
+
+ +
isDoubleSpendSeen: boolean
+
+ +
isFailed: boolean
+
+ +
isIncoming: boolean
+
+ +
isKeptByBlock: boolean
+
+ +
isLocked: boolean
+
+ +
isMinerTx: boolean
+
+ +
isOutgoing: boolean
+
+ +
isRelayed: boolean
+
+ +
key: string
+
+ +
lastFailedHash: string
+
+ +
lastFailedHeight: number
+
+ +
lastRelayedTimestamp: number
+
+ +
maxUsedBlockHash: string
+
+ +
maxUsedBlockHeight: number
+
+ +
metadata: string
+
+ +
note: string
+
+ +
numConfirmations: number
+
+ +
numDummyOutputs: number
+
+ +
outgoingTransfer: MoneroOutgoingTransfer
+
+ +
outputIndices: number[]
+
+ +
outputSum: bigint
+
+ +
outputs: MoneroOutput[]
+
+ +
paymentId: string
+
+ +
prunableHash: string
+
+ +
prunableHex: string
+
+ +
prunedHex: string
+
+ +
rctSigPrunable: any
+
+ +
rctSignatures: any
+
+ +
receivedTimestamp: number
+
+ +
relay: boolean
+
+ +
ringSize: number
+
+ +
signatures: string[]
+
+ +
size: number
+
+ +
+
+ +
unlockTime: bigint
+
+ +
version: number
+
+ +
weight: number
+
+ +
DEFAULT_PAYMENT_ID: "0000000000000000" = "0000000000000000"
+
+

Methods

+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +
    +

    Parameters

    +
      +
    • +
      Optional indent: number = 0
      +

      starting indentation

      +
      +
    • +
    • +
      Optional oneLine: boolean = false
      +

      string is one line if true, multiple lines if false

      +
      +
    +

    Returns string

    string representation of this tx

    + +
+
+ +
+
+ +
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroUtils.html b/docs/typedocs/classes/MoneroUtils.html new file mode 100644 index 000000000..c0d168eca --- /dev/null +++ b/docs/typedocs/classes/MoneroUtils.html @@ -0,0 +1,686 @@ +MoneroUtils | monero-ts
+
+ +
+
+
+
+ +

Class MoneroUtils

+
+

Collection of Monero utilities. Runs in a worker thread by default.

+
+
+
+

Hierarchy

+
    +
  • MoneroUtils
+
+
+
+ +
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
AU_PER_XMR: bigint = ...
+
+ +
NUM_MNEMONIC_WORDS: number = 25
+
+ +
PROXY_TO_WORKER: boolean = false
+
+ +
RING_SIZE: number = 12
+
+

Methods

+
+ +
    + +
  • +

    Convert atomic units to XMR.

    +
    +
    +

    Parameters

    +
      +
    • +
      amountAtomicUnits: string | bigint
      +

      amount in atomic units to convert to XMR

      +
      +
    +

    Returns number

    amount in XMR

    + +
+
+ +
    + +
  • +

    Convert the binary response from daemon RPC block retrieval to JSON.

    +
    +
    +

    Parameters

    +
      +
    • +
      uint8arr: any
      +

      binary response from daemon RPC when getting blocks

      +
      +
    +

    Returns Promise<any>

    JSON object with the blocks data

    + +
+
+ +
    + +
  • +

    Convert the given portable storage binary to JSON.

    +
    +
    +

    Parameters

    +
      +
    • +
      uint8arr: any
      +

      binary data in Monero's portable storage format

      +
      +
    +

    Returns Promise<any>

    JSON object converted from the binary data

    + +
+
+ +
    + +
  • +

    Get an integrated address.

    +
    +
    +

    Parameters

    +
      +
    • +
      networkType: MoneroNetworkType
      +

      network type of the integrated address

      +
      +
    • +
    • +
      standardAddress: string
      +

      address to derive the integrated address from

      +
      +
    • +
    • +
      Optional paymentId: string
      +

      optionally specifies the integrated address's payment id (defaults to random payment id)

      +
      +
    +

    Returns Promise<any>

    the integrated address

    + +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Determine if the given address is valid.

    +
    +
    +

    Parameters

    +
      +
    • +
      address: any
      +

      address

      +
      +
    • +
    • +
      networkType: any
      +

      network type of the address to validate

      +
      +
    +

    Returns Promise<boolean>

    true if the address is valid, false otherwise

    + +
+
+ +
    + +
  • +

    Determine if the given payment id is valid.

    +
    +
    +

    Parameters

    +
      +
    • +
      paymentId: any
      +

      payment id to determine if valid

      +
      +
    +

    Returns Promise<boolean>

    true if the payment id is valid, false otherwise

    + +
+
+ +
    + +
  • +

    Indicates if a private spend key is valid.

    +
    +
    +

    Parameters

    +
      +
    • +
      privateSpendKey: any
      +

      is the private spend key to validate

      +
      +
    +

    Returns Promise<boolean>

    true if the private spend key is valid, false otherwise

    + +
+
+ +
    + +
  • +

    Indicates if a private view key is valid.

    +
    +
    +

    Parameters

    +
      +
    • +
      privateViewKey: any
      +

      is the private view key to validate

      +
      +
    +

    Returns Promise<boolean>

    true if the private view key is valid, false otherwise

    + +
+
+ +
    + +
  • +

    Indicates if a public spend key is valid.

    +
    +
    +

    Parameters

    +
      +
    • +
      publicSpendKey: any
      +

      is the public spend key to validate

      +
      +
    +

    Returns Promise<boolean>

    true if the public spend key is valid, false otherwise

    + +
+
+ +
    + +
  • +

    Indicates if a public view key is valid.

    +
    +
    +

    Parameters

    +
      +
    • +
      publicViewKey: any
      +

      is the public view key to validate

      +
      +
    +

    Returns Promise<boolean>

    true if the public view key is valid, false otherwise

    + +
+
+ +
    + +
  • +

    Convert the given JSON to a binary Uint8Array using Monero's portable storage format.

    +
    +
    +

    Parameters

    +
      +
    • +
      json: any
      +

      json to convert to binary

      +
      +
    +

    Returns Promise<any>

    the json converted to portable storage binary

    + +
+
+ +
    + +
  • +

    Merges a transaction into a list of existing transactions.

    +
    +
    +

    Parameters

    +
      +
    • +
      txs: any
      +

      existing transactions to merge into

      +
      +
    • +
    • +
      tx: any
      +

      transaction to merge into the list

      +
      +
    +

    Returns void

    +
+
+ +
    + +
  • +

    Determines if two payment ids are functionally equal.

    +

    For example, 03284e41c342f032 and 03284e41c342f032000000000000000000000000000000000000000000000000 are considered equal.

    +
    +
    +

    Parameters

    +
      +
    • +
      paymentId1: any
      +

      is a payment id to compare

      +
      +
    • +
    • +
      paymentId2: any
      +

      is a payment id to compare

      +
      +
    +

    Returns boolean

    true if the payment ids are equal, false otherwise

    + +
+
+ +
    + +
  • +

    Enable or disable proxying these utilities to a worker thread.

    +
    +
    +

    Parameters

    +
      +
    • +
      proxyToWorker: any
      +

      specifies if utilities should be proxied to a worker

      +
      +
    +

    Returns void

    +
+
+ +
    + +
  • +

    Validate the given address, throw an error if invalid.

    +
    +
    +

    Parameters

    +
      +
    • +
      address: any
      +

      address to validate

      +
      +
    • +
    • +
      networkType: any
      +

      network type of the address to validate

      +
      +
    +

    Returns Promise<any>

    +
+
+ +
    + +
  • +

    Validate the given mnemonic, throw an error if invalid.

    +

    TODO: improve validation, use network type

    +
    +
    +

    Parameters

    +
      +
    • +
      mnemonic: any
      +

      mnemonic to validate

      +
      +
    +

    Returns Promise<void>

    +
+
+ +
    + +
  • +

    Validate the given payment id, throw an error if invalid.

    +

    TODO: improve validation

    +
    +
    +

    Parameters

    +
      +
    • +
      paymentId: any
      +

      payment id to validate

      +
      +
    +

    Returns Promise<void>

    +
+
+ +
    + +
  • +

    Validate the given private spend key, throw an error if invalid.

    +
    +
    +

    Parameters

    +
      +
    • +
      privateSpendKey: any
      +

      private spend key to validate

      +
      +
    +

    Returns Promise<void>

    +
+
+ +
    + +
  • +

    Validate the given private view key, throw an error if invalid.

    +
    +
    +

    Parameters

    +
      +
    • +
      privateViewKey: any
      +

      private view key to validate

      +
      +
    +

    Returns Promise<void>

    +
+
+ +
    + +
  • +

    Validate the given public spend key, throw an error if invalid.

    +
    +
    +

    Parameters

    +
      +
    • +
      publicSpendKey: any
      +

      public spend key to validate

      +
      +
    +

    Returns Promise<void>

    +
+
+ +
    + +
  • +

    Validate the given public view key, throw an error if invalid.

    +
    +
    +

    Parameters

    +
      +
    • +
      publicViewKey: any
      +

      public view key to validate

      +
      +
    +

    Returns Promise<void>

    +
+
+ +
    + +
  • +

    Convert XMR to atomic units.

    +
    +
    +

    Parameters

    +
      +
    • +
      amountXmr: string | number
      +

      amount in XMR to convert to atomic units

      +
      +
    +

    Returns bigint

    amount in atomic units

    + +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroVersion.html b/docs/typedocs/classes/MoneroVersion.html new file mode 100644 index 000000000..34058fffe --- /dev/null +++ b/docs/typedocs/classes/MoneroVersion.html @@ -0,0 +1,194 @@ +MoneroVersion | monero-ts
+
+ +
+
+
+
+ +

Class MoneroVersion

+
+

Models a Monero version.

+
+
+
+

Hierarchy

+
    +
  • MoneroVersion
+
+
+
+ +
+
+

Constructors

+
+
+

Properties

+
+
+

Methods

+
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
isRelease: boolean
+
+ +
number: number
+
+

Methods

+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroWallet.html b/docs/typedocs/classes/MoneroWallet.html new file mode 100644 index 000000000..47434970e --- /dev/null +++ b/docs/typedocs/classes/MoneroWallet.html @@ -0,0 +1,2673 @@ +MoneroWallet | monero-ts
+
+ +
+
+
+
+ +

Class MoneroWalletInterface

+
+

Monero wallet interface and default implementations.

+
+
+
+

Hierarchy

+
+
+
+
+ +
+
+

Constructors

+
+
+

Properties

+
+
+

Methods

+
addAddressBookEntry +addListener +changePassword +checkReserveProof +checkSpendProof +checkTxKey +checkTxProof +close +createAccount +createSubaddress +createTx +createTxs +decodeIntegratedAddress +deleteAddressBookEntry +describeMultisigTxSet +describeTxSet +describeUnsignedTxSet +editAddressBookEntry +exchangeMultisigKeys +exportKeyImages +exportMultisigHex +exportOutputs +freezeOutput +getAccount +getAccountTags +getAccounts +getAddress +getAddressBookEntries +getAddressIndex +getAttribute +getBalance +getConnectionManager +getDaemonConnection +getDaemonHeight +getHeight +getHeightByDate +getIncomingTransfers +getIntegratedAddress +getListeners +getMultisigInfo +getNewKeyImagesFromLastImport +getNumBlocksToUnlock +getOutgoingTransfers +getOutputs +getPath +getPaymentUri +getPrimaryAddress +getPrivateSpendKey +getPrivateViewKey +getPublicSpendKey +getPublicViewKey +getReserveProofAccount +getReserveProofWallet +getSeed +getSeedLanguage +getSpendProof +getSubaddress +getSubaddresses +getTransfers +getTx +getTxKey +getTxNote +getTxNotes +getTxProof +getTxs +getUnlockedBalance +getVersion +importKeyImages +importMultisigHex +importOutputs +isClosed +isConnectedToDaemon +isMultisig +isMultisigImportNeeded +isOutputFrozen +isViewOnly +makeMultisig +parsePaymentUri +prepareMultisig +relayTx +relayTxs +removeListener +rescanBlockchain +rescanSpent +save +scanTxs +setAccountLabel +setAccountTagLabel +setAttribute +setConnectionManager +setDaemonConnection +setSubaddressLabel +setTxNote +setTxNotes +signMessage +signMultisigTxHex +signTxs +startMining +startSyncing +stopMining +stopSyncing +submitMultisigTxHex +submitTxs +sweepDust +sweepOutput +sweepUnlocked +sync +tagAccounts +thawOutput +untagAccounts +verifyMessage +normalizeCreateTxsConfig +normalizeOutputQuery +normalizeSweepOutputConfig +normalizeSweepUnlockedConfig +normalizeTransferQuery +normalizeTxQuery +
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
connectionManager: MoneroConnectionManager
+
+ +
connectionManagerListener: MoneroConnectionManagerListener
+
+ +
DEFAULT_LANGUAGE: "English" = "English"
+
+

Methods

+
+ +
    + +
  • +

    Add an address book entry.

    +
    +
    +

    Parameters

    +
      +
    • +
      address: string
      +

      entry address

      +
      +
    • +
    • +
      Optional description: string
      +

      entry description (optional)

      +
      +
    +

    Returns Promise<number>

    the index of the added entry

    + +
+
+ +
+
+ +
    + +
  • +

    Change the wallet password.

    +
    +
    +

    Parameters

    +
      +
    • +
      oldPassword: string
      +

      the wallet's old password

      +
      +
    • +
    • +
      newPassword: string
      +

      the wallet's new password

      +
      +
    +

    Returns Promise<void>

    +
+
+ +
    + +
  • +

    Proves a wallet has a disposable reserve using a signature.

    +
    +
    +

    Parameters

    +
      +
    • +
      address: string
      +

      public wallet address

      +
      +
    • +
    • +
      message: string
      +

      message included with the signature to further authenticate the proof (optional)

      +
      +
    • +
    • +
      signature: string
      +

      reserve proof signature to check

      +
      +
    +

    Returns Promise<MoneroCheckReserve>

    the result of checking the signature proof

    + +
+
+ +
    + +
  • +

    Prove a spend using a signature. Unlike proving a transaction, it does not require the destination public address.

    +
    +
    +

    Parameters

    +
      +
    • +
      txHash: string
      +

      transaction to prove

      +
      +
    • +
    • +
      message: string
      +

      message included with the signature to further authenticate the proof (optional)

      +
      +
    • +
    • +
      signature: string
      +

      transaction signature to confirm

      +
      +
    +

    Returns Promise<boolean>

    true if the signature is good, false otherwise

    + +
+
+ +
    + +
  • +

    Check a transaction in the blockchain with its secret key.

    +
    +
    +

    Parameters

    +
      +
    • +
      txHash: string
      +

      transaction to check

      +
      +
    • +
    • +
      txKey: string
      +

      transaction's secret key

      +
      +
    • +
    • +
      address: string
      +

      destination public address of the transaction

      +
      +
    +

    Returns Promise<MoneroCheckTx>

    the result of the check

    + +
+
+ +
    + +
  • +

    Prove a transaction by checking its signature.

    +
    +
    +

    Parameters

    +
      +
    • +
      txHash: string
      +

      transaction to prove

      +
      +
    • +
    • +
      address: string
      +

      destination public address of the transaction

      +
      +
    • +
    • +
      message: string
      +

      message included with the signature to further authenticate the proof

      +
      +
    • +
    • +
      signature: string
      +

      transaction signature to confirm

      +
      +
    +

    Returns Promise<MoneroCheckTx>

    the result of the check

    + +
+
+ +
    + +
  • +

    Optionally save then close the wallet.

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional save: boolean = false
      +

      specifies if the wallet should be saved before being closed (default false)

      +
      +
    +

    Returns Promise<void>

    +
+
+ +
+
+ +
    + +
  • +

    Create a subaddress within an account.

    +
    +
    +

    Parameters

    +
      +
    • +
      accountIdx: number
      +

      index of the account to create the subaddress within

      +
      +
    • +
    • +
      Optional label: string
      +

      the label for the subaddress (optional)

      +
      +
    +

    Returns Promise<MoneroSubaddress>

    the created subaddress

    + +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Delete an address book entry.

    +
    +
    +

    Parameters

    +
      +
    • +
      entryIdx: number
      +

      index of the entry to delete

      +
      +
    +

    Returns Promise<void>

    +
+
+ +
+
+ +
    + +
  • +

    Describe a tx set containing unsigned or multisig tx hex to a new tx set containing structured transactions.

    +
    +
    +

    Parameters

    +
      +
    • +
      txSet: MoneroTxSet
      +

      a tx set containing unsigned or multisig tx hex

      +
      +
    +

    Returns Promise<MoneroTxSet>

    txSet - the tx set containing structured transactions

    + +
+
+ +
+
+ +
    + +
  • +

    Edit an address book entry.

    +
    +
    +

    Parameters

    +
      +
    • +
      index: number
      +

      index of the address book entry to edit

      +
      +
    • +
    • +
      setAddress: boolean
      +

      specifies if the address should be updated

      +
      +
    • +
    • +
      address: string
      +

      updated address

      +
      +
    • +
    • +
      setDescription: boolean
      +

      specifies if the description should be updated

      +
      +
    • +
    • +
      description: string
      +

      updated description

      +
      +
    +

    Returns Promise<void>

    +
+
+ +
    + +
  • +

    Exchange multisig hex with participants in a M/N multisig wallet.

    +

    This process must be repeated with participants exactly N-M times.

    +
    +
    +

    Parameters

    +
      +
    • +
      multisigHexes: string[]
      +

      are multisig hex from each participant

      +
      +
    • +
    • +
      password: string
      +

      wallet's password // TODO monero-project: redundant? wallet is created with password

      +
      +
    +

    Returns Promise<MoneroMultisigInitResult>

    the result which has the multisig's address xor this wallet's multisig hex to share with participants iff not done

    + +
+
+ +
    + +
  • +

    Export signed key images.

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional all: boolean = false
      +

      export all key images if true, else export the key images since the last export (default false)

      +
      +
    +

    Returns Promise<MoneroKeyImage[]>

    the wallet's signed key images

    + +
+
+ +
    + +
  • +

    Export this wallet's multisig info as hex for other participants.

    +
    +

    Returns Promise<string>

    this wallet's multisig info as hex for other participants

    + +
+
+ +
    + +
  • +

    Export outputs in hex format.

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional all: boolean = false
      +

      export all outputs if true, else export the outputs since the last export (default false)

      +
      +
    +

    Returns Promise<string>

    outputs in hex format

    + +
+
+ +
    + +
  • +

    Freeze an output.

    +
    +
    +

    Parameters

    +
      +
    • +
      keyImage: string
      +

      key image of the output to freeze

      +
      +
    +

    Returns Promise<void>

    +
+
+ +
    + +
  • +

    Get an account.

    +
    +
    +

    Parameters

    +
      +
    • +
      accountIdx: number
      +

      index of the account to get

      +
      +
    • +
    • +
      Optional includeSubaddresses: boolean
      +

      include subaddresses if true

      +
      +
    +

    Returns Promise<MoneroAccount>

    the retrieved account

    + +
+
+ +
+
+ +
    + +
  • +

    Get accounts with a given tag.

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional includeSubaddresses: boolean
      +

      include subaddresses if true

      +
      +
    • +
    • +
      Optional tag: string
      +

      tag for filtering accounts, all accounts if undefined

      +
      +
    +

    Returns Promise<MoneroAccount[]>

    all accounts with the given tag

    + +
+
+ +
    + +
  • +

    Get the address of a specific subaddress.

    +
    +
    +

    Parameters

    +
      +
    • +
      accountIdx: number
      +

      the account index of the address's subaddress

      +
      +
    • +
    • +
      subaddressIdx: number
      +

      the subaddress index within the account

      +
      +
    +

    Returns Promise<string>

    the receive address of the specified subaddress

    + +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Get an attribute.

    +
    +
    +

    Parameters

    +
      +
    • +
      key: string
      +

      attribute to get the value of

      +
      +
    +

    Returns Promise<string>

    the attribute's value

    + +
+
+ +
    + +
  • +

    Get the balance of the wallet, account, or subaddress.

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional accountIdx: number
      +

      index of the account to get the balance of (default all accounts)

      +
      +
    • +
    • +
      Optional subaddressIdx: number
      +

      index of the subaddress to get the balance of (default all subaddresses)

      +
      +
    +

    Returns Promise<bigint>

    the balance of the wallet, account, or subaddress

    + +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Get the block height that the wallet is synced to.

    +
    +

    Returns Promise<number>

    the block height that the wallet is synced to

    + +
+
+ +
    + +
  • +

    Get the blockchain's height by date as a conservative estimate for scanning.

    +
    +
    +

    Parameters

    +
      +
    • +
      year: number
      +

      year of the height to get

      +
      +
    • +
    • +
      month: number
      +

      month of the height to get as a number between 1 and 12

      +
      +
    • +
    • +
      day: number
      +

      day of the height to get as a number between 1 and 31

      +
      +
    +

    Returns Promise<number>

    the blockchain's approximate height at the given date

    + +
+
+ +
+
+ +
    + +
  • +

    Get an integrated address based on the given standard address and payment +ID. Uses the wallet's primary address if an address is not given. +Generates a random payment ID if a payment ID is not given.

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional standardAddress: string
      +

      is the standard address to generate the integrated address from (wallet's primary address if undefined)

      +
      +
    • +
    • +
      Optional paymentId: string
      +

      is the payment ID to generate an integrated address from (randomly generated if undefined)

      +
      +
    +

    Returns Promise<MoneroIntegratedAddress>

    the integrated address

    + +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Get the number of blocks until the next and last funds unlock.

    +
    +

    Returns Promise<number[]>

    the number of blocks until the next and last funds unlock in elements 0 and 1, respectively, or undefined if no balance

    + +
+
+ +
+
+ +
    + +
  • +

    Get outputs created from previous transactions that belong to the wallet +(i.e. that the wallet can spend one time). Outputs are part of +transactions which are stored in blocks on the blockchain.

    + +

    Results can be filtered by passing a query object. Outputs must +meet every criteria defined in the query in order to be returned. All +filtering is optional and no filtering is applied when not defined.

    +
    +

    Parameters

    +
    +

    Returns Promise<MoneroOutputWallet[]>

    the queried outputs

    + +
+
+ +
+
+ +
    + +
  • +

    Creates a payment URI from a send configuration.

    +
    +
    +

    Parameters

    +
      +
    • +
      config: MoneroTxConfig
      +

      specifies configuration for a potential tx

      +
      +
    +

    Returns Promise<string>

    the payment uri

    + +
+
+ +
+
+ +
    + +
  • +

    Get the wallet's private spend key.

    +
    +

    Returns Promise<string>

    the wallet's private spend key

    + +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Generate a signature to prove an available amount in an account.

    +
    +
    +

    Parameters

    +
      +
    • +
      accountIdx: number
      +

      account to prove ownership of the amount

      +
      +
    • +
    • +
      amount: bigint
      +

      minimum amount to prove as available in the account

      +
      +
    • +
    • +
      Optional message: string
      +

      message to include with the signature to further authenticate the proof (optional)

      +
      +
    +

    Returns Promise<string>

    the reserve proof signature

    + +
+
+ +
    + +
  • +

    Generate a signature to prove the entire balance of the wallet.

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional message: string
      +

      message included with the signature to further authenticate the proof (optional)

      +
      +
    +

    Returns Promise<string>

    the reserve proof signature

    + +
+
+ +
    + +
  • +

    Get the wallet's mnemonic phrase or seed.

    +
    +

    Returns Promise<string>

    the wallet's mnemonic phrase or seed.

    + +
+
+ +
    + +
  • +

    Get the language of the wallet's mnemonic phrase or seed.

    +
    +

    Returns Promise<string>

    the language of the wallet's mnemonic phrase or seed.

    + +
+
+ +
    + +
  • +

    Generate a signature to prove a spend. Unlike proving a transaction, it does not require the destination public address.

    +
    +
    +

    Parameters

    +
      +
    • +
      txHash: string
      +

      transaction to prove

      +
      +
    • +
    • +
      Optional message: string
      +

      message to include with the signature to further authenticate the proof (optional)

      +
      +
    +

    Returns Promise<string>

    the transaction signature

    + +
+
+ +
    + +
  • +

    Get a subaddress.

    +
    +
    +

    Parameters

    +
      +
    • +
      accountIdx: number
      +

      index of the subaddress's account

      +
      +
    • +
    • +
      subaddressIdx: number
      +

      index of the subaddress within the account

      +
      +
    +

    Returns Promise<MoneroSubaddress>

    the retrieved subaddress

    + +
+
+ +
    + +
  • +

    Get subaddresses in an account.

    +
    +
    +

    Parameters

    +
      +
    • +
      accountIdx: number
      +

      account to get subaddresses within

      +
      +
    • +
    • +
      Optional subaddressIndices: number[]
      +

      indices of subaddresses to get (optional)

      +
      +
    +

    Returns Promise<MoneroSubaddress[]>

    the retrieved subaddresses

    + +
+
+ +
    + +
  • +

    Get incoming and outgoing transfers to and from this wallet. An outgoing +transfer represents a total amount sent from one or more subaddresses +within an account to individual destination addresses, each with their +own amount. An incoming transfer represents a total amount received into +a subaddress within an account. Transfers belong to transactions which +are stored on the blockchain.

    + +

    Results can be filtered by passing a query object. Transfers must +meet every criteria defined in the query in order to be returned. All +criteria are optional and no filtering is applied when not defined.

    +
    +

    Parameters

    +
    +

    Returns Promise<MoneroTransfer[]>

    wallet transfers that meet the query

    + +
+
+ +
+
+ +
    + +
  • +

    Get a transaction's secret key from its hash.

    +
    +
    +

    Parameters

    +
      +
    • +
      txHash: string
      +

      transaction's hash

      +
      +
    +

    Returns Promise<string>

      +
    • transaction's secret key
    • +
    + +
+
+ +
    + +
  • +

    Get a transaction note.

    +
    +
    +

    Parameters

    +
      +
    • +
      txHash: string
      +

      transaction to get the note of

      +
      +
    +

    Returns Promise<string>

    the tx note

    + +
+
+ +
    + +
  • +

    Get notes for multiple transactions.

    +
    +
    +

    Parameters

    +
      +
    • +
      txHashes: string[]
      +

      hashes of the transactions to get notes for

      +
      +
    +

    Returns Promise<string[]>

    notes for the transactions

    + +
+
+ +
    + +
  • +

    Get a transaction signature to prove it.

    +
    +
    +

    Parameters

    +
      +
    • +
      txHash: string
      +

      transaction to prove

      +
      +
    • +
    • +
      address: string
      +

      destination public address of the transaction

      +
      +
    • +
    • +
      Optional message: string
      +

      message to include with the signature to further authenticate the proof (optional)

      +
      +
    +

    Returns Promise<string>

    the transaction signature

    + +
+
+ +
    + +
  • +

    Get wallet transactions. Wallet transactions contain one or more +transfers that are either incoming or outgoing to the wallet.

    + +

    Results can be filtered by passing a query object. Transactions must +meet every criteria defined in the query in order to be returned. All +criteria are optional and no filtering is applied when not defined.

    +
    +

    Parameters

    +
      +
    • +
      Optional query: string[] | Partial<MoneroTxQuery>
      +

      configures the query (optional)

      +
      +
    +

    Returns Promise<MoneroTxWallet[]>

    wallet transactions per the configuration

    + +
+
+ +
    + +
  • +

    Get the unlocked balance of the wallet, account, or subaddress.

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional accountIdx: number
      +

      index of the account to get the unlocked balance of (optional)

      +
      +
    • +
    • +
      Optional subaddressIdx: number
      +

      index of the subaddress to get the unlocked balance of (optional)

      +
      +
    +

    Returns Promise<bigint>

    the unlocked balance of the wallet, account, or subaddress

    + +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Import multisig info as hex from other participants.

    +
    +
    +

    Parameters

    +
      +
    • +
      multisigHexes: string[]
      +

      multisig hex from each participant

      +
      +
    +

    Returns Promise<number>

    the number of outputs signed with the given multisig hex

    + +
+
+ +
    + +
  • +

    Import outputs in hex format.

    +
    +
    +

    Parameters

    +
      +
    • +
      outputsHex: string
      +

      outputs in hex format

      +
      +
    +

    Returns Promise<number>

    the number of outputs imported

    + +
+
+ +
    + +
  • +

    Indicates if this wallet is closed or not.

    +
    +

    Returns Promise<boolean>

    true if the wallet is closed, false otherwise

    + +
+
+ +
    + +
  • +

    Indicates if the wallet is connected to daemon.

    +
    +

    Returns Promise<boolean>

    true if the wallet is connected to a daemon, false otherwise

    + +
+
+ +
    + +
  • +

    Indicates if this wallet is a multisig wallet.

    +
    +

    Returns Promise<boolean>

    true if this is a multisig wallet, false otherwise

    + +
+
+ +
    + +
  • +

    Indicates if importing multisig data is needed for returning a correct balance.

    +
    +

    Returns Promise<boolean>

    true if importing multisig data is needed for returning a correct balance, false otherwise

    + +
+
+ +
    + +
  • +

    Check if an output is frozen.

    +
    +
    +

    Parameters

    +
      +
    • +
      keyImage: string
      +

      key image of the output to check if frozen

      +
      +
    +

    Returns Promise<boolean>

    true if the output is frozen, false otherwise

    + +
+
+ +
    + +
  • +

    Indicates if the wallet is view-only, meaning it does not have the private +spend key and can therefore only observe incoming outputs.

    +
    +

    Returns Promise<boolean>

    true if the wallet is view-only, false otherwise

    + +
+
+ +
    + +
  • +

    Make this wallet multisig by importing multisig hex from participants.

    +
    +
    +

    Parameters

    +
      +
    • +
      multisigHexes: string[]
      +

      multisig hex from each participant

      +
      +
    • +
    • +
      threshold: number
      +

      number of signatures needed to sign transfers

      +
      +
    • +
    • +
      password: string
      +

      wallet password

      +
      +
    +

    Returns Promise<string>

    this wallet's multisig hex to share with participants

    + +
+
+ +
+
+ +
    + +
  • +

    Get multisig info as hex to share with participants to begin creating a +multisig wallet.

    +
    +

    Returns Promise<string>

    this wallet's multisig hex to share with participants

    + +
+
+ +
    + +
  • +

    Relay a previously created transaction.

    +
    +
    +

    Parameters

    +
      +
    • +
      txOrMetadata: string | MoneroTxWallet
      +

      transaction or its metadata to relay

      +
      +
    +

    Returns Promise<string>

    the hash of the relayed tx

    + +
+
+ +
    + +
  • +

    Relay previously created transactions.

    +
    +
    +

    Parameters

    +
      +
    • +
      txsOrMetadatas: (string | MoneroTxWallet)[]
      +

      transactions or their metadata to relay

      +
      +
    +

    Returns Promise<string[]>

    the hashes of the relayed txs

    + +
+
+ +
    + +
  • +

    Unregister a listener to receive wallet notifications.

    +
    +
    +

    Parameters

    +
      +
    • +
      listener: any
      +

      listener to unregister

      +
      +
    +

    Returns Promise<void>

    +
+
+ +
    + +
  • +

    Rescan the blockchain from scratch, losing any information which cannot be recovered from +the blockchain itself.

    + +

    WARNING: This method discards local wallet data like destination addresses, tx secret keys, +tx notes, etc.

    +

    Returns Promise<void>

    +
+
+ +
    + +
  • +

    Rescan the blockchain for spent outputs.

    + +

    Note: this can only be called with a trusted daemon.

    + +

    Example use case: peer multisig hex is import when connected to an untrusted daemon, +so the wallet will not rescan spent outputs. Then the wallet connects to a trusted +daemon. This method should be manually invoked to rescan outputs.

    +

    Returns Promise<void>

    +
+
+ +
+
+ +
    + +
  • +

    Scan transactions by their hash/id.

    +
    +
    +

    Parameters

    +
      +
    • +
      txHashes: string[]
      +

      tx hashes to scan

      +
      +
    +

    Returns Promise<void>

    +
+
+ +
    + +
  • +

    Set an account label.

    +
    +
    +

    Parameters

    +
      +
    • +
      accountIdx: number
      +

      index of the account to set the label for

      +
      +
    • +
    • +
      label: string
      +

      the label to set

      +
      +
    +

    Returns Promise<void>

    +
+
+ +
    + +
  • +

    Sets a human-readable description for a tag.

    +
    +
    +

    Parameters

    +
      +
    • +
      tag: string
      +

      tag to set a description for

      +
      +
    • +
    • +
      label: string
      +

      label to set for the tag

      +
      +
    +

    Returns Promise<void>

    +
+
+ +
    + +
  • +

    Set an arbitrary attribute.

    +
    +
    +

    Parameters

    +
      +
    • +
      key: string
      +

      attribute key

      +
      +
    • +
    • +
      val: string
      +

      attribute value

      +
      +
    +

    Returns Promise<void>

    +
+
+ +
+
+ +
    + +
  • +

    Set the wallet's daemon connection.

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional uriOrConnection: string | MoneroRpcConnection
      +

      daemon's URI or connection (defaults to offline)

      +
      +
    +

    Returns Promise<void>

    +
+
+ +
    + +
  • +

    Set a subaddress label.

    +
    +
    +

    Parameters

    +
      +
    • +
      accountIdx: number
      +

      index of the account to set the label for

      +
      +
    • +
    • +
      subaddressIdx: number
      +

      index of the subaddress to set the label for

      +
      +
    • +
    • +
      label: string
      +

      the label to set

      +
      +
    +

    Returns Promise<void>

    +
+
+ +
    + +
  • +

    Set a note for a specific transaction.

    +
    +
    +

    Parameters

    +
      +
    • +
      txHash: string
      +

      hash of the transaction to set a note for

      +
      +
    • +
    • +
      note: string
      +

      the transaction note

      +
      +
    +

    Returns Promise<void>

    +
+
+ +
    + +
  • +

    Set notes for multiple transactions.

    +
    +
    +

    Parameters

    +
      +
    • +
      txHashes: string[]
      +

      transactions to set notes for

      +
      +
    • +
    • +
      notes: string[]
      +

      notes to set for the transactions

      +
      +
    +

    Returns Promise<void>

    +
+
+ +
    + +
  • +

    Sign a message.

    +
    +
    +

    Parameters

    +
      +
    • +
      message: string
      +

      the message to sign

      +
      +
    • +
    • +
      Optional signatureType: MoneroMessageSignatureType = MoneroMessageSignatureType.SIGN_WITH_SPEND_KEY
      +

      sign with spend key or view key (default spend key)

      +
      +
    • +
    • +
      Optional accountIdx: number = 0
      +

      the account index of the message signature (default 0)

      +
      +
    • +
    • +
      Optional subaddressIdx: number = 0
      +

      the subaddress index of the message signature (default 0)

      +
      +
    +

    Returns Promise<string>

    the signature

    + +
+
+ +
+
+ +
    + +
  • +

    Sign unsigned transactions from a view-only wallet.

    +
    +
    +

    Parameters

    +
      +
    • +
      unsignedTxHex: string
      +

      unsigned transaction hex from when the transactions were created

      +
      +
    +

    Returns Promise<string>

    the signed transaction hex

    + +
+
+ +
    + +
  • +

    Start mining.

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional numThreads: number
      +

      number of threads created for mining (optional)

      +
      +
    • +
    • +
      Optional backgroundMining: boolean
      +

      specifies if mining should occur in the background (optional)

      +
      +
    • +
    • +
      Optional ignoreBattery: boolean
      +

      specifies if the battery should be ignored for mining (optional)

      +
      +
    +

    Returns Promise<void>

    +
+
+ +
    + +
  • +

    Start background synchronizing with a maximum period between syncs.

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional syncPeriodInMs: number
      +

      maximum period between syncs in milliseconds (default is wallet-specific)

      +
      +
    +

    Returns Promise<void>

    +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Submit signed multisig transactions from a multisig wallet.

    +
    +
    +

    Parameters

    +
      +
    • +
      signedMultisigTxHex: string
      +

      signed multisig hex returned from signMultisigTxHex()

      +
      +
    +

    Returns Promise<string[]>

    the resulting transaction hashes

    + +
+
+ +
    + +
  • +

    Submit signed transactions from a view-only wallet.

    +
    +
    +

    Parameters

    +
      +
    • +
      signedTxHex: string
      +

      signed transaction hex from signTxs()

      +
      +
    +

    Returns Promise<string[]>

    the resulting transaction hashes

    + +
+
+ +
    + +
  • +

    Sweep all unmixable dust outputs back to the wallet to make them easier to spend and mix.

    + +

    NOTE: Dust only exists pre RCT, so this method will throw "no dust to sweep" on new wallets.

    +
    +

    Parameters

    +
      +
    • +
      Optional relay: boolean
      +

      specifies if the resulting transaction should be relayed (default false)

      +
      +
    +

    Returns Promise<MoneroTxWallet[]>

    the created transactions

    + +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Synchronize the wallet with the daemon as a one-time synchronous process.

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional listenerOrStartHeight: number | MoneroWalletListener
      +

      listener xor start height (defaults to no sync listener, the last synced block)

      +
      +
    • +
    • +
      Optional startHeight: number
      +

      startHeight if not given in first arg (defaults to last synced block)

      +
      +
    +

    Returns Promise<MoneroSyncResult>

    +
+
+ +
    + +
  • +

    Tag accounts.

    +
    +
    +

    Parameters

    +
      +
    • +
      tag: string
      +

      tag to apply to the specified accounts

      +
      +
    • +
    • +
      accountIndices: number[]
      +

      indices of the accounts to tag

      +
      +
    +

    Returns Promise<void>

    +
+
+ +
    + +
  • +

    Thaw a frozen output.

    +
    +
    +

    Parameters

    +
      +
    • +
      keyImage: string
      +

      key image of the output to thaw

      +
      +
    +

    Returns Promise<void>

    +
+
+ +
    + +
  • +

    Untag accounts.

    +
    +
    +

    Parameters

    +
      +
    • +
      accountIndices: number[]
      +

      indices of the accounts to untag

      +
      +
    +

    Returns Promise<void>

    +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroWalletConfig.html b/docs/typedocs/classes/MoneroWalletConfig.html new file mode 100644 index 000000000..97a08d13a --- /dev/null +++ b/docs/typedocs/classes/MoneroWalletConfig.html @@ -0,0 +1,781 @@ +MoneroWalletConfig | monero-ts
+
+ +
+
+
+
+ +

Class MoneroWalletConfig

+
+

Configuration to create a Monero wallet.

+
+
+
+

Hierarchy

+
    +
  • MoneroWalletConfig
+
+
+
+ +
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
accountLookahead: number
+
+ +
cacheData: Uint8Array
+
+ +
cmd: string[]
+
+ +
connectionManager: MoneroConnectionManager
+
+ +
fs: any
+
+ +
isMultisig: boolean
+
+ +
keysData: Uint8Array
+
+ +
language: string
+
+ +
networkType: MoneroNetworkType
+
+ +
password: string
+
+ +
path: string
+
+ +
primaryAddress: string
+
+ +
privateSpendKey: string
+
+ +
privateViewKey: string
+
+ +
proxyToWorker: boolean
+
+ +
restoreHeight: number
+
+ +
saveCurrent: boolean
+
+ +
seed: string
+
+ +
seedOffset: string
+
+ +
server: string | Partial<MoneroRpcConnection>
+
+ +
subaddressLookahead: number
+
+

Methods

+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroWalletFull.html b/docs/typedocs/classes/MoneroWalletFull.html new file mode 100644 index 000000000..a591b7f7c --- /dev/null +++ b/docs/typedocs/classes/MoneroWalletFull.html @@ -0,0 +1,3406 @@ +MoneroWalletFull | monero-ts
+
+ +
+
+
+
+ +

Class MoneroWalletFull

+
+

Implements a Monero wallet using client-side WebAssembly bindings to monero-project's wallet2 in C++.

+
+
+
+

Hierarchy

+
+
+
+
+ +
+
+

Properties

+
+
+

Methods

+
addAddressBookEntry +addListener +assertNotClosed +backgroundSync +changePassword +checkReserveProof +checkSpendProof +checkTxKey +checkTxProof +close +createAccount +createSubaddress +createTx +createTxs +decodeIntegratedAddress +deleteAddressBookEntry +describeMultisigTxSet +describeTxSet +describeUnsignedTxSet +editAddressBookEntry +exchangeMultisigKeys +exportKeyImages +exportMultisigHex +exportOutputs +freezeOutput +getAccount +getAccountTags +getAccounts +getAddress +getAddressBookEntries +getAddressIndex +getAttribute +getBalance +getConnectionManager +getDaemonConnection +getDaemonHeight +getDaemonMaxPeerHeight +getData +getHeight +getHeightByDate +getIncomingTransfers +getIntegratedAddress +getListeners +getMultisigInfo +getNetworkType +getNewKeyImagesFromLastImport +getNumBlocksToUnlock +getOutgoingTransfers +getOutputs +getPath +getPaymentUri +getPrimaryAddress +getPrivateSpendKey +getPrivateViewKey +getPublicSpendKey +getPublicViewKey +getReserveProofAccount +getReserveProofWallet +getRestoreHeight +getSeed +getSeedLanguage +getSpendProof +getSubaddress +getSubaddresses +getTransfers +getTx +getTxKey +getTxNote +getTxNotes +getTxProof +getTxs +getUnlockedBalance +getVersion +getWalletProxy +importKeyImages +importMultisigHex +importOutputs +isClosed +isConnectedToDaemon +isDaemonSynced +isMultisig +isMultisigImportNeeded +isOutputFrozen +isSynced +isViewOnly +makeMultisig +moveTo +parsePaymentUri +prepareMultisig +refreshListening +relayTx +relayTxs +removeListener +rescanBlockchain +rescanSpent +save +scanTxs +setAccountLabel +setAccountTagLabel +setAttribute +setBrowserMainPath +setConnectionManager +setDaemonConnection +setRestoreHeight +setSubaddressLabel +setTxNote +setTxNotes +signMessage +signMultisigTxHex +signTxs +startMining +startSyncing +stopMining +stopSyncing +submitMultisigTxHex +submitTxs +sweepDust +sweepOutput +sweepUnlocked +sync +tagAccounts +thawOutput +untagAccounts +verifyMessage +createWallet +createWalletFromKeys +createWalletFromSeed +createWalletRandom +deserializeBlocks +deserializeOutputs +deserializeTransfers +deserializeTxs +getFs +getSeedLanguages +moveTo +normalizeCreateTxsConfig +normalizeOutputQuery +normalizeSweepOutputConfig +normalizeSweepUnlockedConfig +normalizeTransferQuery +normalizeTxQuery +openWallet +openWalletData +sanitizeAccount +sanitizeBlock +sanitizeSubaddress +sanitizeTxWallet +save +walletExists +
+
+

Properties

+
+ +
_isClosed: boolean
+
+ +
browserMainPath: string
+
+ +
connectionManager: MoneroConnectionManager
+
+ +
connectionManagerListener: MoneroConnectionManagerListener
+
+ +
cppAddress: string
+
+ +
fs: any
+
+ +
fullListener: WalletFullListener
+
+ +
fullListenerHandle: number
+
+ +
+
+ +
module: any
+
+ +
password: string
+
+ +
path: string
+
+ +
rejectUnauthorized: boolean
+
+ +
rejectUnauthorizedConfigId: string
+
+ +
syncLooper: TaskLooper
+
+ +
syncPeriodInMs: number
+
+ +
walletProxy: MoneroWalletKeysProxy
+
+ +
DEFAULT_LANGUAGE: "English" = "English"
+
+ +
DEFAULT_SYNC_PERIOD_IN_MS: 20000 = 20000
+
+ +
FS: any
+
+

Methods

+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Prove a spend using a signature. Unlike proving a transaction, it does not require the destination public address.

    +
    +
    +

    Parameters

    +
      +
    • +
      txHash: string
      +

      transaction to prove

      +
      +
    • +
    • +
      message: string
      +

      message included with the signature to further authenticate the proof (optional)

      +
      +
    • +
    • +
      signature: string
      +

      transaction signature to confirm

      +
      +
    +

    Returns Promise<boolean>

    true if the signature is good, false otherwise

    + +
+
+ +
+
+ +
    + +
  • +

    Prove a transaction by checking its signature.

    +
    +
    +

    Parameters

    +
      +
    • +
      txHash: string
      +

      transaction to prove

      +
      +
    • +
    • +
      address: string
      +

      destination public address of the transaction

      +
      +
    • +
    • +
      message: string
      +

      message included with the signature to further authenticate the proof

      +
      +
    • +
    • +
      signature: string
      +

      transaction signature to confirm

      +
      +
    +

    Returns Promise<MoneroCheckTx>

    the result of the check

    + +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Edit an address book entry.

    +
    +
    +

    Parameters

    +
      +
    • +
      index: number
      +

      index of the address book entry to edit

      +
      +
    • +
    • +
      setAddress: boolean
      +

      specifies if the address should be updated

      +
      +
    • +
    • +
      address: string
      +

      updated address

      +
      +
    • +
    • +
      setDescription: boolean
      +

      specifies if the description should be updated

      +
      +
    • +
    • +
      description: string
      +

      updated description

      +
      +
    +

    Returns Promise<void>

    +
+
+ +
    + +
  • +

    Exchange multisig hex with participants in a M/N multisig wallet.

    +

    This process must be repeated with participants exactly N-M times.

    +
    +
    +

    Parameters

    +
      +
    • +
      multisigHexes: string[]
      +

      are multisig hex from each participant

      +
      +
    • +
    • +
      password: string
      +

      wallet's password // TODO monero-project: redundant? wallet is created with password

      +
      +
    +

    Returns Promise<MoneroMultisigInitResult>

    the result which has the multisig's address xor this wallet's multisig hex to share with participants iff not done

    + +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Export outputs in hex format.

    +
    +
    +

    Parameters

    +
      +
    • +
      all: boolean = false
      +

      export all outputs if true, else export the outputs since the last export (default false)

      +
      +
    +

    Returns Promise<string>

    outputs in hex format

    + +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Get the address of a specific subaddress.

    +
    +
    +

    Parameters

    +
      +
    • +
      accountIdx: number
      +

      the account index of the address's subaddress

      +
      +
    • +
    • +
      subaddressIdx: number
      +

      the subaddress index within the account

      +
      +
    +

    Returns Promise<string>

    the receive address of the specified subaddress

    + +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Get the balance of the wallet, account, or subaddress.

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional accountIdx: number
      +

      index of the account to get the balance of (default all accounts)

      +
      +
    • +
    • +
      Optional subaddressIdx: number
      +

      index of the subaddress to get the balance of (default all subaddresses)

      +
      +
    +

    Returns Promise<bigint>

    the balance of the wallet, account, or subaddress

    + +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Get the maximum height of the peers the wallet's daemon is connected to.

    +
    +

    Returns Promise<number>

    the maximum height of the peers the wallet's daemon is connected to

    + +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Get the blockchain's height by date as a conservative estimate for scanning.

    +
    +
    +

    Parameters

    +
      +
    • +
      year: number
      +

      year of the height to get

      +
      +
    • +
    • +
      month: number
      +

      month of the height to get as a number between 1 and 12

      +
      +
    • +
    • +
      day: number
      +

      day of the height to get as a number between 1 and 31

      +
      +
    +

    Returns Promise<number>

    the blockchain's approximate height at the given date

    + +
+
+ +
+
+ +
    + +
  • +

    Get an integrated address based on the given standard address and payment +ID. Uses the wallet's primary address if an address is not given. +Generates a random payment ID if a payment ID is not given.

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional standardAddress: string
      +

      is the standard address to generate the integrated address from (wallet's primary address if undefined)

      +
      +
    • +
    • +
      Optional paymentId: string
      +

      is the payment ID to generate an integrated address from (randomly generated if undefined)

      +
      +
    +

    Returns Promise<MoneroIntegratedAddress>

    the integrated address

    + +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Get outputs created from previous transactions that belong to the wallet +(i.e. that the wallet can spend one time). Outputs are part of +transactions which are stored in blocks on the blockchain.

    + +

    Results can be filtered by passing a query object. Outputs must +meet every criteria defined in the query in order to be returned. All +filtering is optional and no filtering is applied when not defined.

    +
    +

    Parameters

    +
    +

    Returns Promise<MoneroOutputWallet[]>

    the queried outputs

    + +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Generate a signature to prove an available amount in an account.

    +
    +
    +

    Parameters

    +
      +
    • +
      accountIdx: number
      +

      account to prove ownership of the amount

      +
      +
    • +
    • +
      amount: bigint
      +

      minimum amount to prove as available in the account

      +
      +
    • +
    • +
      Optional message: string
      +

      message to include with the signature to further authenticate the proof (optional)

      +
      +
    +

    Returns Promise<string>

    the reserve proof signature

    + +
+
+ +
    + +
  • +

    Generate a signature to prove the entire balance of the wallet.

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional message: string
      +

      message included with the signature to further authenticate the proof (optional)

      +
      +
    +

    Returns Promise<string>

    the reserve proof signature

    + +
+
+ +
    + +
  • +

    Get the height of the first block that the wallet scans.

    +
    +

    Returns Promise<number>

    the height of the first block that the wallet scans

    + +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Generate a signature to prove a spend. Unlike proving a transaction, it does not require the destination public address.

    +
    +
    +

    Parameters

    +
      +
    • +
      txHash: string
      +

      transaction to prove

      +
      +
    • +
    • +
      Optional message: string
      +

      message to include with the signature to further authenticate the proof (optional)

      +
      +
    +

    Returns Promise<string>

    the transaction signature

    + +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Get incoming and outgoing transfers to and from this wallet. An outgoing +transfer represents a total amount sent from one or more subaddresses +within an account to individual destination addresses, each with their +own amount. An incoming transfer represents a total amount received into +a subaddress within an account. Transfers belong to transactions which +are stored on the blockchain.

    + +

    Results can be filtered by passing a query object. Transfers must +meet every criteria defined in the query in order to be returned. All +criteria are optional and no filtering is applied when not defined.

    +
    +

    Parameters

    +
    +

    Returns Promise<MoneroTransfer[]>

    wallet transfers that meet the query

    + +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Get a transaction signature to prove it.

    +
    +
    +

    Parameters

    +
      +
    • +
      txHash: string
      +

      transaction to prove

      +
      +
    • +
    • +
      address: string
      +

      destination public address of the transaction

      +
      +
    • +
    • +
      Optional message: string
      +

      message to include with the signature to further authenticate the proof (optional)

      +
      +
    +

    Returns Promise<string>

    the transaction signature

    + +
+
+ +
    + +
  • +

    Get wallet transactions. Wallet transactions contain one or more +transfers that are either incoming or outgoing to the wallet.

    + +

    Results can be filtered by passing a query object. Transactions must +meet every criteria defined in the query in order to be returned. All +criteria are optional and no filtering is applied when not defined.

    +
    +

    Parameters

    +
      +
    • +
      Optional query: string[] | Partial<MoneroTxQuery>
      +

      configures the query (optional)

      +
      +
    +

    Returns Promise<MoneroTxWallet[]>

    wallet transactions per the configuration

    + +
+
+ +
    + +
  • +

    Get the unlocked balance of the wallet, account, or subaddress.

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional accountIdx: number
      +

      index of the account to get the unlocked balance of (optional)

      +
      +
    • +
    • +
      Optional subaddressIdx: number
      +

      index of the subaddress to get the unlocked balance of (optional)

      +
      +
    +

    Returns Promise<bigint>

    the unlocked balance of the wallet, account, or subaddress

    + +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Import multisig info as hex from other participants.

    +
    +
    +

    Parameters

    +
      +
    • +
      multisigHexes: string[]
      +

      multisig hex from each participant

      +
      +
    +

    Returns Promise<number>

    the number of outputs signed with the given multisig hex

    + +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Indicates if the wallet's daemon is synced with the network.

    +
    +

    Returns Promise<boolean>

    true if the daemon is synced with the network, false otherwise

    + +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Indicates if the wallet is synced with the daemon.

    +
    +

    Returns Promise<boolean>

    true if the wallet is synced with the daemon, false otherwise

    + +
+
+ +
    + +
  • +

    Indicates if the wallet is view-only, meaning it does not have the private +spend key and can therefore only observe incoming outputs.

    +
    +

    Returns Promise<boolean>

    true if the wallet is view-only, false otherwise

    + +
+
+ +
    + +
  • +

    Make this wallet multisig by importing multisig hex from participants.

    +
    +
    +

    Parameters

    +
      +
    • +
      multisigHexes: string[]
      +

      multisig hex from each participant

      +
      +
    • +
    • +
      threshold: number
      +

      number of signatures needed to sign transfers

      +
      +
    • +
    • +
      password: string
      +

      wallet password

      +
      +
    +

    Returns Promise<string>

    this wallet's multisig hex to share with participants

    + +
+
+ +
    + +
  • +

    Move the wallet from its current path to the given path.

    +
    +
    +

    Parameters

    +
      +
    • +
      path: string
      +

      the wallet's destination path

      +
      +
    +

    Returns Promise<void>

    +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Rescan the blockchain from scratch, losing any information which cannot be recovered from +the blockchain itself.

    + +

    WARNING: This method discards local wallet data like destination addresses, tx secret keys, +tx notes, etc.

    +

    Returns Promise<void>

    +
+
+ +
    + +
  • +

    Rescan the blockchain for spent outputs.

    + +

    Note: this can only be called with a trusted daemon.

    + +

    Example use case: peer multisig hex is import when connected to an untrusted daemon, +so the wallet will not rescan spent outputs. Then the wallet connects to a trusted +daemon. This method should be manually invoked to rescan outputs.

    +

    Returns Promise<void>

    +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Set the path of the wallet on the browser main thread if run as a worker.

    +
    +
    +

    Parameters

    +
      +
    • +
      browserMainPath: any
      +

      path of the wallet on the browser main thread

      +
      +
    +

    Returns void

    +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Set the height of the first block that the wallet scans.

    +
    +
    +

    Parameters

    +
      +
    • +
      restoreHeight: number
      +

      height of the first block that the wallet scans

      +
      +
    +

    Returns Promise<void>

    +
+
+ +
    + +
  • +

    Set a subaddress label.

    +
    +
    +

    Parameters

    +
      +
    • +
      accountIdx: number
      +

      index of the account to set the label for

      +
      +
    • +
    • +
      subaddressIdx: number
      +

      index of the subaddress to set the label for

      +
      +
    • +
    • +
      label: string
      +

      the label to set

      +
      +
    +

    Returns Promise<void>

    +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Sign a message.

    +
    +
    +

    Parameters

    +
      +
    • +
      message: string
      +

      the message to sign

      +
      +
    • +
    • +
      signatureType: MoneroMessageSignatureType = MoneroMessageSignatureType.SIGN_WITH_SPEND_KEY
      +

      sign with spend key or view key (default spend key)

      +
      +
    • +
    • +
      accountIdx: number = 0
      +

      the account index of the message signature (default 0)

      +
      +
    • +
    • +
      subaddressIdx: number = 0
      +

      the subaddress index of the message signature (default 0)

      +
      +
    +

    Returns Promise<string>

    the signature

    + +
+
+ +
+
+ +
    + +
  • +

    Sign unsigned transactions from a view-only wallet.

    +
    +
    +

    Parameters

    +
      +
    • +
      unsignedTxHex: string
      +

      unsigned transaction hex from when the transactions were created

      +
      +
    +

    Returns Promise<string>

    the signed transaction hex

    + +
+
+ +
    + +
  • +

    Start mining.

    +
    +
    +

    Parameters

    +
      +
    • +
      numThreads: number
      +

      number of threads created for mining (optional)

      +
      +
    • +
    • +
      Optional backgroundMining: boolean
      +

      specifies if mining should occur in the background (optional)

      +
      +
    • +
    • +
      Optional ignoreBattery: boolean
      +

      specifies if the battery should be ignored for mining (optional)

      +
      +
    +

    Returns Promise<void>

    +
+
+ +
    + +
  • +

    Start background synchronizing with a maximum period between syncs.

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional syncPeriodInMs: number
      +

      maximum period between syncs in milliseconds (default is wallet-specific)

      +
      +
    +

    Returns Promise<void>

    +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Submit signed multisig transactions from a multisig wallet.

    +
    +
    +

    Parameters

    +
      +
    • +
      signedMultisigTxHex: string
      +

      signed multisig hex returned from signMultisigTxHex()

      +
      +
    +

    Returns Promise<string[]>

    the resulting transaction hashes

    + +
+
+ +
    + +
  • +

    Submit signed transactions from a view-only wallet.

    +
    +
    +

    Parameters

    +
      +
    • +
      signedTxHex: string
      +

      signed transaction hex from signTxs()

      +
      +
    +

    Returns Promise<string[]>

    the resulting transaction hashes

    + +
+
+ +
    + +
  • +

    Sweep all unmixable dust outputs back to the wallet to make them easier to spend and mix.

    + +

    NOTE: Dust only exists pre RCT, so this method will throw "no dust to sweep" on new wallets.

    +
    +

    Parameters

    +
      +
    • +
      Optional relay: boolean
      +

      specifies if the resulting transaction should be relayed (default false)

      +
      +
    +

    Returns Promise<MoneroTxWallet[]>

    the created transactions

    + +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Synchronize the wallet with the daemon as a one-time synchronous process.

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional listenerOrStartHeight: number | MoneroWalletListener
      +

      listener xor start height (defaults to no sync listener, the last synced block)

      +
      +
    • +
    • +
      Optional startHeight: number
      +

      startHeight if not given in first arg (defaults to last synced block)

      +
      +
    • +
    • +
      Optional allowConcurrentCalls: boolean = false
      +

      allow other wallet methods to be processed simultaneously during sync (default false)

      WARNING: enabling this option will crash wallet execution if another call makes a simultaneous network request. TODO: possible to sync wasm network requests in http_client_wasm.cpp?

      +
      +
    +

    Returns Promise<MoneroSyncResult>

    +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Check if a wallet exists at a given path.

    +
    +
    +

    Parameters

    +
      +
    • +
      path: any
      +

      path of the wallet on the file system

      +
      +
    • +
    • +
      fs: any
    +

    Returns any

    true if a wallet exists at the given path, false otherwise

    + +
+
+ +
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroWalletKeys.html b/docs/typedocs/classes/MoneroWalletKeys.html new file mode 100644 index 000000000..9d2adb8e3 --- /dev/null +++ b/docs/typedocs/classes/MoneroWalletKeys.html @@ -0,0 +1,2915 @@ +MoneroWalletKeys | monero-ts
+
+ +
+
+
+
+ +

Class MoneroWalletKeys

+
+

Implements a MoneroWallet which only manages keys using WebAssembly.

+
+
+
+

Hierarchy

+
+
+
+
+ +
+
+

Properties

+
+
+

Methods

+
addAddressBookEntry +addListener +assertNotClosed +changePassword +checkReserveProof +checkSpendProof +checkTxKey +checkTxProof +close +createAccount +createSubaddress +createTx +createTxs +decodeIntegratedAddress +deleteAddressBookEntry +describeMultisigTxSet +describeTxSet +describeUnsignedTxSet +editAddressBookEntry +exchangeMultisigKeys +exportKeyImages +exportMultisigHex +exportOutputs +freezeOutput +getAccount +getAccountTags +getAccounts +getAddress +getAddressBookEntries +getAddressIndex +getAttribute +getBalance +getConnectionManager +getDaemonConnection +getDaemonHeight +getHeight +getHeightByDate +getIncomingTransfers +getIntegratedAddress +getListeners +getMultisigInfo +getNewKeyImagesFromLastImport +getNumBlocksToUnlock +getOutgoingTransfers +getOutputs +getPaymentUri +getPrimaryAddress +getPrivateSpendKey +getPrivateViewKey +getPublicSpendKey +getPublicViewKey +getReserveProofAccount +getReserveProofWallet +getSeed +getSeedLanguage +getSpendProof +getSubaddress +getSubaddresses +getTransfers +getTx +getTxKey +getTxNote +getTxNotes +getTxProof +getTxs +getUnlockedBalance +getVersion +getWalletProxy +importKeyImages +importMultisigHex +importOutputs +isClosed +isConnectedToDaemon +isMultisig +isMultisigImportNeeded +isOutputFrozen +isViewOnly +makeMultisig +parsePaymentUri +prepareMultisig +relayTx +relayTxs +removeListener +rescanBlockchain +rescanSpent +save +scanTxs +setAccountLabel +setAccountTagLabel +setAttribute +setConnectionManager +setDaemonConnection +setSubaddressLabel +setTxNote +setTxNotes +signMessage +signMultisigTxHex +signTxs +startMining +startSyncing +stopMining +stopSyncing +submitMultisigTxHex +submitTxs +sweepDust +sweepOutput +sweepUnlocked +sync +tagAccounts +thawOutput +untagAccounts +verifyMessage +createWallet +createWalletFromKeys +createWalletFromSeed +createWalletRandom +getSeedLanguages +normalizeCreateTxsConfig +normalizeOutputQuery +normalizeSweepOutputConfig +normalizeSweepUnlockedConfig +normalizeTransferQuery +normalizeTxQuery +sanitizeSubaddress +
+
+

Properties

+
+ +
_isClosed: boolean
+
+ +
connectionManager: MoneroConnectionManager
+
+ +
connectionManagerListener: MoneroConnectionManagerListener
+
+ +
cppAddress: string
+
+ +
module: any
+
+ +
walletProxy: MoneroWalletKeysProxy
+
+ +
DEFAULT_LANGUAGE: "English" = "English"
+
+

Methods

+
+ +
    + +
  • +

    Add an address book entry.

    +
    +
    +

    Parameters

    +
      +
    • +
      address: string
      +

      entry address

      +
      +
    • +
    • +
      Optional description: string
      +

      entry description (optional)

      +
      +
    +

    Returns Promise<number>

    the index of the added entry

    + +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Change the wallet password.

    +
    +
    +

    Parameters

    +
      +
    • +
      oldPassword: string
      +

      the wallet's old password

      +
      +
    • +
    • +
      newPassword: string
      +

      the wallet's new password

      +
      +
    +

    Returns Promise<void>

    +
+
+ +
    + +
  • +

    Proves a wallet has a disposable reserve using a signature.

    +
    +
    +

    Parameters

    +
      +
    • +
      address: string
      +

      public wallet address

      +
      +
    • +
    • +
      message: string
      +

      message included with the signature to further authenticate the proof (optional)

      +
      +
    • +
    • +
      signature: string
      +

      reserve proof signature to check

      +
      +
    +

    Returns Promise<MoneroCheckReserve>

    the result of checking the signature proof

    + +
+
+ +
    + +
  • +

    Prove a spend using a signature. Unlike proving a transaction, it does not require the destination public address.

    +
    +
    +

    Parameters

    +
      +
    • +
      txHash: string
      +

      transaction to prove

      +
      +
    • +
    • +
      message: string
      +

      message included with the signature to further authenticate the proof (optional)

      +
      +
    • +
    • +
      signature: string
      +

      transaction signature to confirm

      +
      +
    +

    Returns Promise<boolean>

    true if the signature is good, false otherwise

    + +
+
+ +
    + +
  • +

    Check a transaction in the blockchain with its secret key.

    +
    +
    +

    Parameters

    +
      +
    • +
      txHash: string
      +

      transaction to check

      +
      +
    • +
    • +
      txKey: string
      +

      transaction's secret key

      +
      +
    • +
    • +
      address: string
      +

      destination public address of the transaction

      +
      +
    +

    Returns Promise<MoneroCheckTx>

    the result of the check

    + +
+
+ +
    + +
  • +

    Prove a transaction by checking its signature.

    +
    +
    +

    Parameters

    +
      +
    • +
      txHash: string
      +

      transaction to prove

      +
      +
    • +
    • +
      address: string
      +

      destination public address of the transaction

      +
      +
    • +
    • +
      message: string
      +

      message included with the signature to further authenticate the proof

      +
      +
    • +
    • +
      signature: string
      +

      transaction signature to confirm

      +
      +
    +

    Returns Promise<MoneroCheckTx>

    the result of the check

    + +
+
+ +
    + +
  • +

    Optionally save then close the wallet.

    +
    +
    +

    Parameters

    +
      +
    • +
      save: boolean = false
      +

      specifies if the wallet should be saved before being closed (default false)

      +
      +
    +

    Returns Promise<void>

    +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Edit an address book entry.

    +
    +
    +

    Parameters

    +
      +
    • +
      index: number
      +

      index of the address book entry to edit

      +
      +
    • +
    • +
      setAddress: boolean
      +

      specifies if the address should be updated

      +
      +
    • +
    • +
      address: string
      +

      updated address

      +
      +
    • +
    • +
      setDescription: boolean
      +

      specifies if the description should be updated

      +
      +
    • +
    • +
      description: string
      +

      updated description

      +
      +
    +

    Returns Promise<void>

    +
+
+ +
    + +
  • +

    Exchange multisig hex with participants in a M/N multisig wallet.

    +

    This process must be repeated with participants exactly N-M times.

    +
    +
    +

    Parameters

    +
      +
    • +
      multisigHexes: string[]
      +

      are multisig hex from each participant

      +
      +
    • +
    • +
      password: string
      +

      wallet's password // TODO monero-project: redundant? wallet is created with password

      +
      +
    +

    Returns Promise<MoneroMultisigInitResult>

    the result which has the multisig's address xor this wallet's multisig hex to share with participants iff not done

    + +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Export outputs in hex format.

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional all: boolean = false
      +

      export all outputs if true, else export the outputs since the last export (default false)

      +
      +
    +

    Returns Promise<string>

    outputs in hex format

    + +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Get the address of a specific subaddress.

    +
    +
    +

    Parameters

    +
      +
    • +
      accountIdx: number
      +

      the account index of the address's subaddress

      +
      +
    • +
    • +
      subaddressIdx: number
      +

      the subaddress index within the account

      +
      +
    +

    Returns Promise<string>

    the receive address of the specified subaddress

    + +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Get the balance of the wallet, account, or subaddress.

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional accountIdx: number
      +

      index of the account to get the balance of (default all accounts)

      +
      +
    • +
    • +
      Optional subaddressIdx: number
      +

      index of the subaddress to get the balance of (default all subaddresses)

      +
      +
    +

    Returns Promise<bigint>

    the balance of the wallet, account, or subaddress

    + +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Get the blockchain's height by date as a conservative estimate for scanning.

    +
    +
    +

    Parameters

    +
      +
    • +
      year: number
      +

      year of the height to get

      +
      +
    • +
    • +
      month: number
      +

      month of the height to get as a number between 1 and 12

      +
      +
    • +
    • +
      day: number
      +

      day of the height to get as a number between 1 and 31

      +
      +
    +

    Returns Promise<number>

    the blockchain's approximate height at the given date

    + +
+
+ +
+
+ +
    + +
  • +

    Get an integrated address based on the given standard address and payment +ID. Uses the wallet's primary address if an address is not given. +Generates a random payment ID if a payment ID is not given.

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional standardAddress: string
      +

      is the standard address to generate the integrated address from (wallet's primary address if undefined)

      +
      +
    • +
    • +
      Optional paymentId: string
      +

      is the payment ID to generate an integrated address from (randomly generated if undefined)

      +
      +
    +

    Returns Promise<MoneroIntegratedAddress>

    the integrated address

    + +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Get the number of blocks until the next and last funds unlock.

    +
    +

    Returns Promise<number[]>

    the number of blocks until the next and last funds unlock in elements 0 and 1, respectively, or undefined if no balance

    + +
+
+ +
+
+ +
    + +
  • +

    Get outputs created from previous transactions that belong to the wallet +(i.e. that the wallet can spend one time). Outputs are part of +transactions which are stored in blocks on the blockchain.

    + +

    Results can be filtered by passing a query object. Outputs must +meet every criteria defined in the query in order to be returned. All +filtering is optional and no filtering is applied when not defined.

    +
    +

    Parameters

    +
    +

    Returns Promise<MoneroOutputWallet[]>

    the queried outputs

    + +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Generate a signature to prove an available amount in an account.

    +
    +
    +

    Parameters

    +
      +
    • +
      accountIdx: number
      +

      account to prove ownership of the amount

      +
      +
    • +
    • +
      amount: bigint
      +

      minimum amount to prove as available in the account

      +
      +
    • +
    • +
      Optional message: string
      +

      message to include with the signature to further authenticate the proof (optional)

      +
      +
    +

    Returns Promise<string>

    the reserve proof signature

    + +
+
+ +
    + +
  • +

    Generate a signature to prove the entire balance of the wallet.

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional message: string
      +

      message included with the signature to further authenticate the proof (optional)

      +
      +
    +

    Returns Promise<string>

    the reserve proof signature

    + +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Generate a signature to prove a spend. Unlike proving a transaction, it does not require the destination public address.

    +
    +
    +

    Parameters

    +
      +
    • +
      txHash: string
      +

      transaction to prove

      +
      +
    • +
    • +
      Optional message: string
      +

      message to include with the signature to further authenticate the proof (optional)

      +
      +
    +

    Returns Promise<string>

    the transaction signature

    + +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Get incoming and outgoing transfers to and from this wallet. An outgoing +transfer represents a total amount sent from one or more subaddresses +within an account to individual destination addresses, each with their +own amount. An incoming transfer represents a total amount received into +a subaddress within an account. Transfers belong to transactions which +are stored on the blockchain.

    + +

    Results can be filtered by passing a query object. Transfers must +meet every criteria defined in the query in order to be returned. All +criteria are optional and no filtering is applied when not defined.

    +
    +

    Parameters

    +
    +

    Returns Promise<MoneroTransfer[]>

    wallet transfers that meet the query

    + +
+
+ +
+
+ +
    + +
  • +

    Get a transaction's secret key from its hash.

    +
    +
    +

    Parameters

    +
      +
    • +
      txHash: string
      +

      transaction's hash

      +
      +
    +

    Returns Promise<string>

      +
    • transaction's secret key
    • +
    + +
+
+ +
+
+ +
    + +
  • +

    Get notes for multiple transactions.

    +
    +
    +

    Parameters

    +
      +
    • +
      txHashes: string[]
      +

      hashes of the transactions to get notes for

      +
      +
    +

    Returns Promise<string[]>

    notes for the transactions

    + +
+
+ +
    + +
  • +

    Get a transaction signature to prove it.

    +
    +
    +

    Parameters

    +
      +
    • +
      txHash: string
      +

      transaction to prove

      +
      +
    • +
    • +
      address: string
      +

      destination public address of the transaction

      +
      +
    • +
    • +
      Optional message: string
      +

      message to include with the signature to further authenticate the proof (optional)

      +
      +
    +

    Returns Promise<string>

    the transaction signature

    + +
+
+ +
    + +
  • +

    Get wallet transactions. Wallet transactions contain one or more +transfers that are either incoming or outgoing to the wallet.

    + +

    Results can be filtered by passing a query object. Transactions must +meet every criteria defined in the query in order to be returned. All +criteria are optional and no filtering is applied when not defined.

    +
    +

    Parameters

    +
      +
    • +
      Optional query: string[] | Partial<MoneroTxQuery>
      +

      configures the query (optional)

      +
      +
    +

    Returns Promise<MoneroTxWallet[]>

    wallet transactions per the configuration

    + +
+
+ +
    + +
  • +

    Get the unlocked balance of the wallet, account, or subaddress.

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional accountIdx: number
      +

      index of the account to get the unlocked balance of (optional)

      +
      +
    • +
    • +
      Optional subaddressIdx: number
      +

      index of the subaddress to get the unlocked balance of (optional)

      +
      +
    +

    Returns Promise<bigint>

    the unlocked balance of the wallet, account, or subaddress

    + +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Import multisig info as hex from other participants.

    +
    +
    +

    Parameters

    +
      +
    • +
      multisigHexes: string[]
      +

      multisig hex from each participant

      +
      +
    +

    Returns Promise<number>

    the number of outputs signed with the given multisig hex

    + +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Check if an output is frozen.

    +
    +
    +

    Parameters

    +
      +
    • +
      keyImage: string
      +

      key image of the output to check if frozen

      +
      +
    +

    Returns Promise<boolean>

    true if the output is frozen, false otherwise

    + +
+
+ +
    + +
  • +

    Indicates if the wallet is view-only, meaning it does not have the private +spend key and can therefore only observe incoming outputs.

    +
    +

    Returns Promise<boolean>

    true if the wallet is view-only, false otherwise

    + +
+
+ +
    + +
  • +

    Make this wallet multisig by importing multisig hex from participants.

    +
    +
    +

    Parameters

    +
      +
    • +
      multisigHexes: string[]
      +

      multisig hex from each participant

      +
      +
    • +
    • +
      threshold: number
      +

      number of signatures needed to sign transfers

      +
      +
    • +
    • +
      password: string
      +

      wallet password

      +
      +
    +

    Returns Promise<string>

    this wallet's multisig hex to share with participants

    + +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Rescan the blockchain from scratch, losing any information which cannot be recovered from +the blockchain itself.

    + +

    WARNING: This method discards local wallet data like destination addresses, tx secret keys, +tx notes, etc.

    +

    Returns Promise<void>

    +
+
+ +
    + +
  • +

    Rescan the blockchain for spent outputs.

    + +

    Note: this can only be called with a trusted daemon.

    + +

    Example use case: peer multisig hex is import when connected to an untrusted daemon, +so the wallet will not rescan spent outputs. Then the wallet connects to a trusted +daemon. This method should be manually invoked to rescan outputs.

    +

    Returns Promise<void>

    +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Set an account label.

    +
    +
    +

    Parameters

    +
      +
    • +
      accountIdx: number
      +

      index of the account to set the label for

      +
      +
    • +
    • +
      label: string
      +

      the label to set

      +
      +
    +

    Returns Promise<void>

    +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Set a subaddress label.

    +
    +
    +

    Parameters

    +
      +
    • +
      accountIdx: number
      +

      index of the account to set the label for

      +
      +
    • +
    • +
      subaddressIdx: number
      +

      index of the subaddress to set the label for

      +
      +
    • +
    • +
      label: string
      +

      the label to set

      +
      +
    +

    Returns Promise<void>

    +
+
+ +
    + +
  • +

    Set a note for a specific transaction.

    +
    +
    +

    Parameters

    +
      +
    • +
      txHash: string
      +

      hash of the transaction to set a note for

      +
      +
    • +
    • +
      note: string
      +

      the transaction note

      +
      +
    +

    Returns Promise<void>

    +
+
+ +
    + +
  • +

    Set notes for multiple transactions.

    +
    +
    +

    Parameters

    +
      +
    • +
      txHashes: string[]
      +

      transactions to set notes for

      +
      +
    • +
    • +
      notes: string[]
      +

      notes to set for the transactions

      +
      +
    +

    Returns Promise<void>

    +
+
+ +
    + +
  • +

    Sign a message.

    +
    +
    +

    Parameters

    +
      +
    • +
      message: string
      +

      the message to sign

      +
      +
    • +
    • +
      Optional signatureType: MoneroMessageSignatureType = MoneroMessageSignatureType.SIGN_WITH_SPEND_KEY
      +

      sign with spend key or view key (default spend key)

      +
      +
    • +
    • +
      Optional accountIdx: number = 0
      +

      the account index of the message signature (default 0)

      +
      +
    • +
    • +
      Optional subaddressIdx: number = 0
      +

      the subaddress index of the message signature (default 0)

      +
      +
    +

    Returns Promise<string>

    the signature

    + +
+
+ +
+
+ +
    + +
  • +

    Sign unsigned transactions from a view-only wallet.

    +
    +
    +

    Parameters

    +
      +
    • +
      unsignedTxHex: string
      +

      unsigned transaction hex from when the transactions were created

      +
      +
    +

    Returns Promise<string>

    the signed transaction hex

    + +
+
+ +
    + +
  • +

    Start mining.

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional numThreads: number
      +

      number of threads created for mining (optional)

      +
      +
    • +
    • +
      Optional backgroundMining: boolean
      +

      specifies if mining should occur in the background (optional)

      +
      +
    • +
    • +
      Optional ignoreBattery: boolean
      +

      specifies if the battery should be ignored for mining (optional)

      +
      +
    +

    Returns Promise<void>

    +
+
+ +
    + +
  • +

    Start background synchronizing with a maximum period between syncs.

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional syncPeriodInMs: number
      +

      maximum period between syncs in milliseconds (default is wallet-specific)

      +
      +
    +

    Returns Promise<void>

    +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Submit signed multisig transactions from a multisig wallet.

    +
    +
    +

    Parameters

    +
      +
    • +
      signedMultisigTxHex: string
      +

      signed multisig hex returned from signMultisigTxHex()

      +
      +
    +

    Returns Promise<string[]>

    the resulting transaction hashes

    + +
+
+ +
    + +
  • +

    Submit signed transactions from a view-only wallet.

    +
    +
    +

    Parameters

    +
      +
    • +
      signedTxHex: string
      +

      signed transaction hex from signTxs()

      +
      +
    +

    Returns Promise<string[]>

    the resulting transaction hashes

    + +
+
+ +
    + +
  • +

    Sweep all unmixable dust outputs back to the wallet to make them easier to spend and mix.

    + +

    NOTE: Dust only exists pre RCT, so this method will throw "no dust to sweep" on new wallets.

    +
    +

    Parameters

    +
      +
    • +
      Optional relay: boolean
      +

      specifies if the resulting transaction should be relayed (default false)

      +
      +
    +

    Returns Promise<MoneroTxWallet[]>

    the created transactions

    + +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Synchronize the wallet with the daemon as a one-time synchronous process.

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional listenerOrStartHeight: number | MoneroWalletListener
      +

      listener xor start height (defaults to no sync listener, the last synced block)

      +
      +
    • +
    • +
      Optional startHeight: number
      +

      startHeight if not given in first arg (defaults to last synced block)

      +
      +
    +

    Returns Promise<MoneroSyncResult>

    +
+
+ +
    + +
  • +

    Tag accounts.

    +
    +
    +

    Parameters

    +
      +
    • +
      tag: string
      +

      tag to apply to the specified accounts

      +
      +
    • +
    • +
      accountIndices: number[]
      +

      indices of the accounts to tag

      +
      +
    +

    Returns Promise<void>

    +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Create a wallet using WebAssembly bindings to monero-project.

    + +

    Example:

    + + +let wallet = await MoneroWalletKeys.createWallet({
    +   password: "abc123",
    +   networkType: MoneroNetworkType.STAGENET,
    +   seed: "coexist igloo pamphlet lagoon..."
    +}); +
    +
    +

    Parameters

    +
      +
    • +
      config: Partial<MoneroWalletConfig>
      +

      MoneroWalletConfig or equivalent config object

      +
      +
    +

    Returns Promise<any>

    the created wallet

    + +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroWalletListener.html b/docs/typedocs/classes/MoneroWalletListener.html new file mode 100644 index 000000000..6168ea67d --- /dev/null +++ b/docs/typedocs/classes/MoneroWalletListener.html @@ -0,0 +1,229 @@ +MoneroWalletListener | monero-ts
+
+ +
+
+
+
+ +

Class MoneroWalletListener

+
+

Default wallet listener which takes no action on notifications.

+
+
+
+

Hierarchy

+
    +
  • MoneroWalletListener
+
+
+
+ +
+
+

Constructors

+
+ +
+
+

Methods

+
+ +
    + +
  • +

    Invoked when the wallet's balances change.

    +
    +
    +

    Parameters

    +
      +
    • +
      newBalance: bigint
      +

      new wallet balance

      +
      +
    • +
    • +
      newUnlockedBalance: bigint
      +

      new unlocked wallet balance

      +
      +
    +

    Returns Promise<void>

    +
+
+ +
    + +
  • +

    Invoked when a new block is added to the chain.

    +
    +
    +

    Parameters

    +
      +
    • +
      height: number
      +

      the height of the new block (i.e. the number of blocks before it).

      +
      +
    +

    Returns Promise<void>

    +
+
+ +
    + +
  • +

    Invoked 3 times per received output: once when unconfirmed, once when confirmed, and +once when unlocked.

    +

    The notified output includes basic fields only, so the output or its transaction should be fetched to get all available fields.

    +
    +
    +

    Parameters

    +
    +

    Returns Promise<void>

    +
+
+ +
    + +
  • +

    Invoked twice per spent output: once when confirmed and once when unlocked.

    +

    The notified output includes basic fields only, so the output or its transaction should be fetched to get all available fields.

    +
    +
    +

    Parameters

    +
      +
    • +
      output: any
      +

      the spent output

      +
      +
    +

    Returns Promise<void>

    +
+
+ +
    + +
  • +

    Invoked as the wallet is synchronized.

    +
    +
    +

    Parameters

    +
      +
    • +
      height: number
      +

      height of the synced block

      +
      +
    • +
    • +
      startHeight: number
      +

      starting height of the sync request

      +
      +
    • +
    • +
      endHeight: number
      +

      ending height of the sync request

      +
      +
    • +
    • +
      percentDone: number
      +

      sync progress as a percentage

      +
      +
    • +
    • +
      message: string
      +

      human-readable description of the current progress

      +
      +
    +

    Returns Promise<void>

    +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/MoneroWalletRpc.html b/docs/typedocs/classes/MoneroWalletRpc.html new file mode 100644 index 000000000..6a53cb786 --- /dev/null +++ b/docs/typedocs/classes/MoneroWalletRpc.html @@ -0,0 +1,3676 @@ +MoneroWalletRpc | monero-ts
+
+ +
+
+
+
+ +

Class MoneroWalletRpc

+
+

Implements a MoneroWallet as a client of monero-wallet-rpc.

+
+
+

Implements

+
+

Hierarchy

+
+
+
+
+ +
+
+

Properties

+
+
+

Methods

+
addAddressBookEntry +addListener +changePassword +checkReserveProof +checkSpendProof +checkTxKey +checkTxProof +clear +close +createAccount +createSubaddress +createTx +createTxs +createWallet +createWalletFromKeys +createWalletFromSeed +createWalletRandom +decodeIntegratedAddress +deleteAddressBookEntry +describeMultisigTxSet +describeTxSet +describeUnsignedTxSet +editAddressBookEntry +exchangeMultisigKeys +exportKeyImages +exportMultisigHex +exportOutputs +freezeOutput +getAccount +getAccountIndices +getAccountTags +getAccounts +getAddress +getAddressBookEntries +getAddressIndex +getAttribute +getBalance +getBalances +getConnectionManager +getDaemonConnection +getDaemonHeight +getHeight +getHeightByDate +getIncomingTransfers +getIntegratedAddress +getListeners +getMultisigInfo +getNewKeyImagesFromLastImport +getNumBlocksToUnlock +getOutgoingTransfers +getOutputs +getOutputsAux +getPath +getPaymentUri +getPrimaryAddress +getPrivateSpendKey +getPrivateViewKey +getProcess +getPublicSpendKey +getPublicViewKey +getReserveProofAccount +getReserveProofWallet +getRpcConnection +getSeed +getSeedLanguage +getSeedLanguages +getSpendProof +getSubaddress +getSubaddressIndices +getSubaddresses +getSyncPeriodInMs +getTransfers +getTransfersAux +getTx +getTxKey +getTxNote +getTxNotes +getTxProof +getTxs +getUnlockedBalance +getVersion +handleCreateWalletError +importKeyImages +importMultisigHex +importOutputs +isClosed +isConnectedToDaemon +isMultisig +isMultisigImportNeeded +isOutputFrozen +isViewOnly +makeMultisig +openWallet +parsePaymentUri +poll +prepareMultisig +refreshListening +relayTx +relayTxs +removeListener +rescanBlockchain +rescanSpent +rpcExportKeyImages +rpcSweepAccount +save +scanTxs +setAccountLabel +setAccountTagLabel +setAttribute +setConnectionManager +setDaemonConnection +setSubaddressLabel +setTxNote +setTxNotes +signMessage +signMultisigTxHex +signTxs +startMining +startSyncing +stop +stopMining +stopProcess +stopSyncing +submitMultisigTxHex +submitTxs +sweepDust +sweepOutput +sweepUnlocked +sync +tagAccounts +thawOutput +untagAccounts +verifyMessage +compareIncomingTransfers +compareOutputs +compareTxsByHeight +connectToWalletRpc +convertRpcAccount +convertRpcDescribeTransfer +convertRpcSentTxsToTxSet +convertRpcSubaddress +convertRpcTxSet +convertRpcTxToTxSet +convertRpcTxWalletWithOutput +convertRpcTxWithTransfer +decodeRpcType +decontextualize +initSentTxWallet +isContextual +mergeTx +normalizeConfig +normalizeCreateTxsConfig +normalizeOutputQuery +normalizeSweepOutputConfig +normalizeSweepUnlockedConfig +normalizeTransferQuery +normalizeTxQuery +startWalletRpcProcess +
+
+

Properties

+
+ +
addressCache: any
+
+ +
config: Partial<MoneroWalletConfig>
+
+ +
connectionManager: MoneroConnectionManager
+
+ +
connectionManagerListener: MoneroConnectionManagerListener
+
+ +
daemonConnection: MoneroRpcConnection
+
+ +
+
+ +
path: string
+
+ +
process: any
+
+ +
syncPeriodInMs: number
+
+ +
walletPoller: WalletPoller
+
+ +
DEFAULT_LANGUAGE: "English" = "English"
+
+ +
DEFAULT_SYNC_PERIOD_IN_MS: 20000 = 20000
+
+

Methods

+
+ +
    + +
  • +

    Add an address book entry.

    +
    +
    +

    Parameters

    +
      +
    • +
      address: string
      +

      entry address

      +
      +
    • +
    • +
      Optional description: string
      +

      entry description (optional)

      +
      +
    +

    Returns Promise<number>

    the index of the added entry

    + +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Proves a wallet has a disposable reserve using a signature.

    +
    +
    +

    Parameters

    +
      +
    • +
      address: string
      +

      public wallet address

      +
      +
    • +
    • +
      message: string
      +

      message included with the signature to further authenticate the proof (optional)

      +
      +
    • +
    • +
      signature: string
      +

      reserve proof signature to check

      +
      +
    +

    Returns Promise<MoneroCheckReserve>

    the result of checking the signature proof

    + +
+
+ +
    + +
  • +

    Prove a spend using a signature. Unlike proving a transaction, it does not require the destination public address.

    +
    +
    +

    Parameters

    +
      +
    • +
      txHash: string
      +

      transaction to prove

      +
      +
    • +
    • +
      message: string
      +

      message included with the signature to further authenticate the proof (optional)

      +
      +
    • +
    • +
      signature: string
      +

      transaction signature to confirm

      +
      +
    +

    Returns Promise<boolean>

    true if the signature is good, false otherwise

    + +
+
+ +
    + +
  • +

    Check a transaction in the blockchain with its secret key.

    +
    +
    +

    Parameters

    +
      +
    • +
      txHash: string
      +

      transaction to check

      +
      +
    • +
    • +
      txKey: string
      +

      transaction's secret key

      +
      +
    • +
    • +
      address: string
      +

      destination public address of the transaction

      +
      +
    +

    Returns Promise<MoneroCheckTx>

    the result of the check

    + +
+
+ +
    + +
  • +

    Prove a transaction by checking its signature.

    +
    +
    +

    Parameters

    +
      +
    • +
      txHash: string
      +

      transaction to prove

      +
      +
    • +
    • +
      address: string
      +

      destination public address of the transaction

      +
      +
    • +
    • +
      message: string
      +

      message included with the signature to further authenticate the proof

      +
      +
    • +
    • +
      signature: string
      +

      transaction signature to confirm

      +
      +
    +

    Returns Promise<MoneroCheckTx>

    the result of the check

    + +
+
+ +
+
+ +
    + +
  • +

    Optionally save then close the wallet.

    +
    +
    +

    Parameters

    +
      +
    • +
      save: boolean = false
      +

      specifies if the wallet should be saved before being closed (default false)

      +
      +
    +

    Returns Promise<void>

    +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Create and open a wallet on the monero-wallet-rpc server.

    + +

    Example:

    + + +// construct client to monero-wallet-rpc
    +let walletRpc = new MoneroWalletRpc("http://localhost:38084", "rpc_user", "abc123");

    + +

    // create and open wallet on monero-wallet-rpc
    +await walletRpc.createWallet({
    +   path: "mywallet",
    +   password: "abc123",
    +   seed: "coexist igloo pamphlet lagoon...",
    +   restoreHeight: 1543218l
    +}); +

    +
    +
    +

    Parameters

    +
    +

    Returns Promise<MoneroWalletRpc>

    this wallet client

    + +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Edit an address book entry.

    +
    +
    +

    Parameters

    +
      +
    • +
      index: number
      +

      index of the address book entry to edit

      +
      +
    • +
    • +
      setAddress: boolean
      +

      specifies if the address should be updated

      +
      +
    • +
    • +
      address: string
      +

      updated address

      +
      +
    • +
    • +
      setDescription: boolean
      +

      specifies if the description should be updated

      +
      +
    • +
    • +
      description: string
      +

      updated description

      +
      +
    +

    Returns Promise<void>

    +
+
+ +
    + +
  • +

    Exchange multisig hex with participants in a M/N multisig wallet.

    +

    This process must be repeated with participants exactly N-M times.

    +
    +
    +

    Parameters

    +
      +
    • +
      multisigHexes: string[]
      +

      are multisig hex from each participant

      +
      +
    • +
    • +
      password: string
      +

      wallet's password // TODO monero-project: redundant? wallet is created with password

      +
      +
    +

    Returns Promise<MoneroMultisigInitResult>

    the result which has the multisig's address xor this wallet's multisig hex to share with participants iff not done

    + +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Export outputs in hex format.

    +
    +
    +

    Parameters

    +
      +
    • +
      all: boolean = false
      +

      export all outputs if true, else export the outputs since the last export (default false)

      +
      +
    +

    Returns Promise<string>

    outputs in hex format

    + +
+
+ +
+
+ +
+
+ +
    + +
  • +
    +

    Parameters

    +
      +
    • +
      Optional getSubaddressIndices: any
    +

    Returns Promise<Map<any, any>>

+
+ +
+
+ +
    + +
  • +

    Get accounts with a given tag.

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional includeSubaddresses: boolean
      +

      include subaddresses if true

      +
      +
    • +
    • +
      Optional tag: string
      +

      tag for filtering accounts, all accounts if undefined

      +
      +
    • +
    • +
      Optional skipBalances: boolean
    +

    Returns Promise<MoneroAccount[]>

    all accounts with the given tag

    + +
+
+ +
    + +
  • +

    Get the address of a specific subaddress.

    +
    +
    +

    Parameters

    +
      +
    • +
      accountIdx: number
      +

      the account index of the address's subaddress

      +
      +
    • +
    • +
      subaddressIdx: number
      +

      the subaddress index within the account

      +
      +
    +

    Returns Promise<string>

    the receive address of the specified subaddress

    + +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Get the balance of the wallet, account, or subaddress.

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional accountIdx: number
      +

      index of the account to get the balance of (default all accounts)

      +
      +
    • +
    • +
      Optional subaddressIdx: number
      +

      index of the subaddress to get the balance of (default all subaddresses)

      +
      +
    +

    Returns Promise<bigint>

    the balance of the wallet, account, or subaddress

    + +
+
+ +
    + +
  • +

    Get the locked and unlocked balances in a single request.

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional accountIdx: number
      +

      account index

      +
      +
    • +
    • +
      Optional subaddressIdx: number
      +

      subaddress index

      +
      +
    +

    Returns Promise<bigint[]>

    is the locked and unlocked balances in an array, respectively

    + +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Get the blockchain's height by date as a conservative estimate for scanning.

    +
    +
    +

    Parameters

    +
      +
    • +
      year: number
      +

      year of the height to get

      +
      +
    • +
    • +
      month: number
      +

      month of the height to get as a number between 1 and 12

      +
      +
    • +
    • +
      day: number
      +

      day of the height to get as a number between 1 and 31

      +
      +
    +

    Returns Promise<number>

    the blockchain's approximate height at the given date

    + +
+
+ +
+
+ +
    + +
  • +

    Get an integrated address based on the given standard address and payment +ID. Uses the wallet's primary address if an address is not given. +Generates a random payment ID if a payment ID is not given.

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional standardAddress: string
      +

      is the standard address to generate the integrated address from (wallet's primary address if undefined)

      +
      +
    • +
    • +
      Optional paymentId: string
      +

      is the payment ID to generate an integrated address from (randomly generated if undefined)

      +
      +
    +

    Returns Promise<MoneroIntegratedAddress>

    the integrated address

    + +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Get outputs created from previous transactions that belong to the wallet +(i.e. that the wallet can spend one time). Outputs are part of +transactions which are stored in blocks on the blockchain.

    + +

    Results can be filtered by passing a query object. Outputs must +meet every criteria defined in the query in order to be returned. All +filtering is optional and no filtering is applied when not defined.

    +
    +

    Parameters

    +
    +

    Returns Promise<MoneroOutputWallet[]>

    the queried outputs

    + +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Get the internal process running monero-wallet-rpc.

    +
    +

    Returns ChildProcess

    the process running monero-wallet-rpc, undefined if not created from new process

    + +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Generate a signature to prove an available amount in an account.

    +
    +
    +

    Parameters

    +
      +
    • +
      accountIdx: number
      +

      account to prove ownership of the amount

      +
      +
    • +
    • +
      amount: bigint
      +

      minimum amount to prove as available in the account

      +
      +
    • +
    • +
      Optional message: string
      +

      message to include with the signature to further authenticate the proof (optional)

      +
      +
    +

    Returns Promise<string>

    the reserve proof signature

    + +
+
+ +
    + +
  • +

    Generate a signature to prove the entire balance of the wallet.

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional message: string
      +

      message included with the signature to further authenticate the proof (optional)

      +
      +
    +

    Returns Promise<string>

    the reserve proof signature

    + +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Get a list of available languages for the wallet's seed.

    +
    +

    Returns Promise<any>

    the available languages for the wallet's seed.

    + +
+
+ +
    + +
  • +

    Generate a signature to prove a spend. Unlike proving a transaction, it does not require the destination public address.

    +
    +
    +

    Parameters

    +
      +
    • +
      txHash: string
      +

      transaction to prove

      +
      +
    • +
    • +
      Optional message: string
      +

      message to include with the signature to further authenticate the proof (optional)

      +
      +
    +

    Returns Promise<string>

    the transaction signature

    + +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Get incoming and outgoing transfers to and from this wallet. An outgoing +transfer represents a total amount sent from one or more subaddresses +within an account to individual destination addresses, each with their +own amount. An incoming transfer represents a total amount received into +a subaddress within an account. Transfers belong to transactions which +are stored on the blockchain.

    + +

    Results can be filtered by passing a query object. Transfers must +meet every criteria defined in the query in order to be returned. All +criteria are optional and no filtering is applied when not defined.

    +
    +

    Parameters

    +
    +

    Returns Promise<MoneroTransfer[]>

    wallet transfers that meet the query

    + +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Get a transaction signature to prove it.

    +
    +
    +

    Parameters

    +
      +
    • +
      txHash: string
      +

      transaction to prove

      +
      +
    • +
    • +
      address: string
      +

      destination public address of the transaction

      +
      +
    • +
    • +
      Optional message: string
      +

      message to include with the signature to further authenticate the proof (optional)

      +
      +
    +

    Returns Promise<string>

    the transaction signature

    + +
+
+ +
    + +
  • +

    Get wallet transactions. Wallet transactions contain one or more +transfers that are either incoming or outgoing to the wallet.

    + +

    Results can be filtered by passing a query object. Transactions must +meet every criteria defined in the query in order to be returned. All +criteria are optional and no filtering is applied when not defined.

    +
    +

    Parameters

    +
      +
    • +
      Optional query: string[] | Partial<MoneroTxQuery>
      +

      configures the query (optional)

      +
      +
    +

    Returns Promise<MoneroTxWallet[]>

    wallet transactions per the configuration

    + +
+
+ +
    + +
  • +

    Get the unlocked balance of the wallet, account, or subaddress.

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional accountIdx: number
      +

      index of the account to get the unlocked balance of (optional)

      +
      +
    • +
    • +
      Optional subaddressIdx: number
      +

      index of the subaddress to get the unlocked balance of (optional)

      +
      +
    +

    Returns Promise<bigint>

    the unlocked balance of the wallet, account, or subaddress

    + +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Import multisig info as hex from other participants.

    +
    +
    +

    Parameters

    +
      +
    • +
      multisigHexes: string[]
      +

      multisig hex from each participant

      +
      +
    +

    Returns Promise<number>

    the number of outputs signed with the given multisig hex

    + +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Indicates if the wallet is view-only, meaning it does not have the private +spend key and can therefore only observe incoming outputs.

    +
    +

    Returns Promise<boolean>

    true if the wallet is view-only, false otherwise

    + +
+
+ +
    + +
  • +

    Make this wallet multisig by importing multisig hex from participants.

    +
    +
    +

    Parameters

    +
      +
    • +
      multisigHexes: string[]
      +

      multisig hex from each participant

      +
      +
    • +
    • +
      threshold: number
      +

      number of signatures needed to sign transfers

      +
      +
    • +
    • +
      password: string
      +

      wallet password

      +
      +
    +

    Returns Promise<string>

    this wallet's multisig hex to share with participants

    + +
+
+ +
    + +
  • +

    Open an existing wallet on the monero-wallet-rpc server.

    + +

    Example:

    + + +let wallet = new MoneroWalletRpc("http://localhost:38084", "rpc_user", "abc123");
    +await wallet.openWallet("mywallet1", "supersecretpassword");
    +
    +await wallet.openWallet({
    +   path: "mywallet2",
    +   password: "supersecretpassword",
    +   server: "http://locahost:38081", // or object with uri, username, password, etc
    +   rejectUnauthorized: false
    +});
    +

    +
    +

    Parameters

    +
      +
    • +
      pathOrConfig: string | Partial<MoneroWalletConfig>
      +

      the wallet's name or configuration to open

      +
      +
    • +
    • +
      Optional password: string
      +

      the wallet's password

      +
      +
    +

    Returns Promise<MoneroWalletRpc>

    this wallet client

    + +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Rescan the blockchain from scratch, losing any information which cannot be recovered from +the blockchain itself.

    + +

    WARNING: This method discards local wallet data like destination addresses, tx secret keys, +tx notes, etc.

    +

    Returns Promise<void>

    +
+
+ +
    + +
  • +

    Rescan the blockchain for spent outputs.

    + +

    Note: this can only be called with a trusted daemon.

    + +

    Example use case: peer multisig hex is import when connected to an untrusted daemon, +so the wallet will not rescan spent outputs. Then the wallet connects to a trusted +daemon. This method should be manually invoked to rescan outputs.

    +

    Returns Promise<void>

    +
+
+ +
    + +
  • +

    Common method to get key images.

    +
    +
    +

    Parameters

    +
      +
    • +
      all: any
      +

      pecifies to get all xor only new images from last import

      +
      +
    +

    Returns Promise<any>

    are the key images

    + +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Set an account label.

    +
    +
    +

    Parameters

    +
      +
    • +
      accountIdx: number
      +

      index of the account to set the label for

      +
      +
    • +
    • +
      label: string
      +

      the label to set

      +
      +
    +

    Returns Promise<void>

    +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Set the wallet's daemon connection.

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional uriOrConnection: string | MoneroRpcConnection
      +

      the daemon's URI or connection (defaults to offline)

      +
      +
    • +
    • +
      Optional isTrusted: boolean
      +

      indicates if the daemon in trusted

      +
      +
    • +
    • +
      Optional sslOptions: SslOptions
      +

      custom SSL configuration

      +
      +
    +

    Returns Promise<void>

    +
+
+ +
    + +
  • +

    Set a subaddress label.

    +
    +
    +

    Parameters

    +
      +
    • +
      accountIdx: number
      +

      index of the account to set the label for

      +
      +
    • +
    • +
      subaddressIdx: number
      +

      index of the subaddress to set the label for

      +
      +
    • +
    • +
      label: string
      +

      the label to set

      +
      +
    +

    Returns Promise<void>

    +
+
+ +
    + +
  • +

    Set a note for a specific transaction.

    +
    +
    +

    Parameters

    +
      +
    • +
      txHash: string
      +

      hash of the transaction to set a note for

      +
      +
    • +
    • +
      note: string
      +

      the transaction note

      +
      +
    +

    Returns Promise<void>

    +
+
+ +
    + +
  • +

    Set notes for multiple transactions.

    +
    +
    +

    Parameters

    +
      +
    • +
      txHashes: string[]
      +

      transactions to set notes for

      +
      +
    • +
    • +
      notes: string[]
      +

      notes to set for the transactions

      +
      +
    +

    Returns Promise<void>

    +
+
+ +
    + +
  • +

    Sign a message.

    +
    +
    +

    Parameters

    +
      +
    • +
      message: string
      +

      the message to sign

      +
      +
    • +
    • +
      signatureType: MoneroMessageSignatureType = MoneroMessageSignatureType.SIGN_WITH_SPEND_KEY
      +

      sign with spend key or view key (default spend key)

      +
      +
    • +
    • +
      accountIdx: number = 0
      +

      the account index of the message signature (default 0)

      +
      +
    • +
    • +
      subaddressIdx: number = 0
      +

      the subaddress index of the message signature (default 0)

      +
      +
    +

    Returns Promise<string>

    the signature

    + +
+
+ +
+
+ +
    + +
  • +

    Sign unsigned transactions from a view-only wallet.

    +
    +
    +

    Parameters

    +
      +
    • +
      unsignedTxHex: string
      +

      unsigned transaction hex from when the transactions were created

      +
      +
    +

    Returns Promise<string>

    the signed transaction hex

    + +
+
+ +
    + +
  • +

    Start mining.

    +
    +
    +

    Parameters

    +
      +
    • +
      numThreads: number
      +

      number of threads created for mining (optional)

      +
      +
    • +
    • +
      Optional backgroundMining: boolean
      +

      specifies if mining should occur in the background (optional)

      +
      +
    • +
    • +
      Optional ignoreBattery: boolean
      +

      specifies if the battery should be ignored for mining (optional)

      +
      +
    +

    Returns Promise<void>

    +
+
+ +
    + +
  • +

    Start background synchronizing with a maximum period between syncs.

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional syncPeriodInMs: number
      +

      maximum period between syncs in milliseconds (default is wallet-specific)

      +
      +
    +

    Returns Promise<void>

    +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Stop the internal process running monero-wallet-rpc, if applicable.

    +
    +
    +

    Parameters

    +
      +
    • +
      force: boolean = false
      +

      specifies if the process should be destroyed forcibly (default false)

      +
      +
    +

    Returns Promise<number>

    the exit code from stopping the process

    + +
+
+ +
+
+ +
    + +
  • +

    Submit signed multisig transactions from a multisig wallet.

    +
    +
    +

    Parameters

    +
      +
    • +
      signedMultisigTxHex: string
      +

      signed multisig hex returned from signMultisigTxHex()

      +
      +
    +

    Returns Promise<string[]>

    the resulting transaction hashes

    + +
+
+ +
    + +
  • +

    Submit signed transactions from a view-only wallet.

    +
    +
    +

    Parameters

    +
      +
    • +
      signedTxHex: string
      +

      signed transaction hex from signTxs()

      +
      +
    +

    Returns Promise<string[]>

    the resulting transaction hashes

    + +
+
+ +
    + +
  • +

    Sweep all unmixable dust outputs back to the wallet to make them easier to spend and mix.

    + +

    NOTE: Dust only exists pre RCT, so this method will throw "no dust to sweep" on new wallets.

    +
    +

    Parameters

    +
      +
    • +
      Optional relay: boolean
      +

      specifies if the resulting transaction should be relayed (default false)

      +
      +
    +

    Returns Promise<MoneroTxWallet[]>

    the created transactions

    + +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Synchronize the wallet with the daemon as a one-time synchronous process.

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional listenerOrStartHeight: number | MoneroWalletListener
      +

      listener xor start height (defaults to no sync listener, the last synced block)

      +
      +
    • +
    • +
      Optional startHeight: number
      +

      startHeight if not given in first arg (defaults to last synced block)

      +
      +
    +

    Returns Promise<MoneroSyncResult>

    +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Compares two transfers by ascending account and subaddress indices.

    +
    +
    +

    Parameters

    +
      +
    • +
      t1: any
    • +
    • +
      t2: any
    +

    Returns number

    +
+
+ +
    + +
  • +

    Compares two outputs by ascending account and subaddress indices.

    +
    +
    +

    Parameters

    +
      +
    • +
      o1: any
    • +
    • +
      o2: any
    +

    Returns any

    +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Initializes a MoneroTxSet from a list of rpc txs.

    +
    +
    +

    Parameters

    +
      +
    • +
      rpcTxs: any
      +

      rpc txs to initialize the set from

      +
      +
    • +
    • +
      Optional txs: any
      +

      existing txs to further initialize (optional)

      +
      +
    • +
    • +
      Optional config: any
      +

      tx config

      +
      +
    +

    Returns MoneroTxSet

    the converted tx set

    + +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Converts a rpc tx with a transfer to a tx set with a tx and transfer.

    +
    +
    +

    Parameters

    +
      +
    • +
      rpcTx: any
      +

      rpc tx to build from

      +
      +
    • +
    • +
      tx: any
      +

      existing tx to continue initializing (optional)

      +
      +
    • +
    • +
      isOutgoing: any
      +

      specifies if the tx is outgoing if true, incoming if false, or decodes from type if undefined

      +
      +
    • +
    • +
      config: any
      +

      tx config

      +
      +
    +

    Returns MoneroTxSet

    the initialized tx set with a tx

    + +
+
+ +
+
+ +
    + +
  • +

    Builds a MoneroTxWallet from a RPC tx.

    +
    +
    +

    Parameters

    +
      +
    • +
      rpcTx: any
      +

      rpc tx to build from

      +
      +
    • +
    • +
      Optional tx: any
      +

      existing tx to continue initializing (optional)

      +
      +
    • +
    • +
      Optional isOutgoing: any
      +

      specifies if the tx is outgoing if true, incoming if false, or decodes from type if undefined

      +
      +
    • +
    • +
      Optional config: any
      +

      tx config

      +
      +
    +

    Returns any

    is the initialized tx

    + +
+
+ +
    + +
  • +

    Decodes a "type" from monero-wallet-rpc to initialize type and state +fields in the given transaction.

    +

    TODO: these should be safe set

    +
    +
    +

    Parameters

    +
      +
    • +
      rpcType: any
      +

      is the type to decode

      +
      +
    • +
    • +
      tx: any
      +

      is the transaction to decode known fields to

      +
      +
    +

    Returns any

    true if the rpc type indicates outgoing xor incoming

    + +
+
+ +
    + +
  • +

    Remove criteria which requires looking up other transfers/outputs to +fulfill query.

    +
    +
    +

    Parameters

    +
      +
    • +
      query: any
      +

      the query to decontextualize

      +
      +
    +

    Returns any

    a reference to the query for convenience

    + +
+
+ +
    + +
  • +

    Initializes a sent transaction.

    +

    TODO: remove copyDestinations after >18.2.2 when subtractFeeFrom fully supported

    +
    +
    +

    Parameters

    +
      +
    • +
      config: any
      +

      send config

      +
      +
    • +
    • +
      Optional tx: any
      +

      existing transaction to initialize (optional)

      +
      +
    • +
    • +
      copyDestinations: any
      +

      copies config destinations if true

      +
      +
    +

    Returns any

    is the initialized send tx

    + +
+
+ +
+
+ +
    + +
  • +

    Merges a transaction into a unique set of transactions.

    +
    +
    +

    Parameters

    +
      +
    • +
      tx: any
      +

      the transaction to merge into the existing txs

      +
      +
    • +
    • +
      txMap: any
      +

      maps tx hashes to txs

      +
      +
    • +
    • +
      blockMap: any
      +

      maps block heights to blocks

      +
      +
    +

    Returns void

    +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/SslOptions.html b/docs/typedocs/classes/SslOptions.html new file mode 100644 index 000000000..6e8ffefaf --- /dev/null +++ b/docs/typedocs/classes/SslOptions.html @@ -0,0 +1,268 @@ +SslOptions | monero-ts
+
+ +
+
+
+
+ +

Class SslOptions

+
+

SSL options for remote endpoints.

+
+
+
+

Hierarchy

+
    +
  • SslOptions
+
+
+
+ +
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
allowAnyCert: boolean
+
+ +
allowedFingerprints: string[]
+
+ +
certificateAuthorityFile: string
+
+ +
certificatePath: string
+
+ +
privateKeyPath: string
+
+

Methods

+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/TaskLooper.html b/docs/typedocs/classes/TaskLooper.html new file mode 100644 index 000000000..4991957cd --- /dev/null +++ b/docs/typedocs/classes/TaskLooper.html @@ -0,0 +1,236 @@ +TaskLooper | monero-ts
+
+ +
+
+
+
+ +

Class TaskLooper

+
+

Run a task in a fixed period loop.

+
+
+
+

Hierarchy

+
    +
  • TaskLooper
+
+
+
+ +
+
+

Constructors

+
+
+

Properties

+
+
+

Methods

+
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
_isStarted: any
+
+ +
isLooping: any
+
+ +
periodInMs: any
+
+ +
task: any
+
+

Methods

+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Set the loop period in milliseconds.

    +
    +
    +

    Parameters

    +
      +
    • +
      periodInMs: any
      +

      the loop period in milliseconds

      +
      +
    +

    Returns void

    +
+
+ +
+
+ +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/classes/ThreadPool.html b/docs/typedocs/classes/ThreadPool.html new file mode 100644 index 000000000..4ccf60656 --- /dev/null +++ b/docs/typedocs/classes/ThreadPool.html @@ -0,0 +1,169 @@ +ThreadPool | monero-ts
+
+ +
+
+
+
+ +

Class ThreadPool

+
+

Simple thread pool using the async library.

+
+
+
+

Hierarchy

+
    +
  • ThreadPool
+
+
+
+ +
+
+

Constructors

+
+
+

Properties

+
+
+

Methods

+
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
drainListeners: any
+
+ +
taskQueue: any
+
+

Methods

+
+ +
    + +
  • +

    Await all functions to complete.

    +
    +

    Returns Promise<void>

    resolves when all functions complete

    + +
+
+ +
    + +
  • +

    Submit an asynchronous function to run using the thread pool.

    +
    +
    +

    Type Parameters

    +
      +
    • +

      T

    +
    +

    Parameters

    +
      +
    • +
      asyncFn: any
      +

      asynchronous function to run with the thread pool

      +
      +
    +

    Returns Promise<T>

    resolves when the function completes execution

    + +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/enums/ConnectionType.html b/docs/typedocs/enums/ConnectionType.html new file mode 100644 index 000000000..1d20c338d --- /dev/null +++ b/docs/typedocs/enums/ConnectionType.html @@ -0,0 +1,130 @@ +ConnectionType | monero-ts
+
+ +
+
+
+
+ +

Enumeration ConnectionType

+
+

Enumerates connection types.

+

Based on enums.h in monero-project.

+
+
+
+
+
+ +
+
+

Enumeration Members

+
+
+

Enumeration Members

+
+ +
I2P: 4
+

I2P connection type (value=4).

+
+
+
+ +
INVALID: 0
+

Invalid connection type (value=0).

+
+
+
+ +
IPV4: 1
+

IPV4 connection type (value=1).

+
+
+
+ +
IPV6: 2
+

IPV6 connection type (value=2).

+
+
+
+ +
TOR: 3
+

TOR connection type (value=3).

+
+
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/enums/MoneroKeyImageSpentStatus.html b/docs/typedocs/enums/MoneroKeyImageSpentStatus.html new file mode 100644 index 000000000..e2f2dc7a5 --- /dev/null +++ b/docs/typedocs/enums/MoneroKeyImageSpentStatus.html @@ -0,0 +1,110 @@ +MoneroKeyImageSpentStatus | monero-ts
+
+ +
+
+
+
+ +

Enumeration MoneroKeyImageSpentStatus

+
+

Enumerates connection types.

+

Based on enums.h in monero-project.

+
+
+
+
+
+ +
+
+

Enumeration Members

+
+
+

Enumeration Members

+
+ +
CONFIRMED: 1
+

Key image is confirmed (value=1).

+
+
+
+ +
NOT_SPENT: 0
+

Key image is not spent (value=0).

+
+
+
+ +
TX_POOL: 2
+

Key image is in the pool (value=2).

+
+
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/enums/MoneroMessageSignatureType.html b/docs/typedocs/enums/MoneroMessageSignatureType.html new file mode 100644 index 000000000..b3d4aa4bd --- /dev/null +++ b/docs/typedocs/enums/MoneroMessageSignatureType.html @@ -0,0 +1,99 @@ +MoneroMessageSignatureType | monero-ts
+
+ +
+
+
+
+ +

Enumeration MoneroMessageSignatureType

+
+

Enumerate message signature types.

+
+
+
+
+
+ +
+
+

Enumeration Members

+
+
+

Enumeration Members

+
+ +
SIGN_WITH_SPEND_KEY: 0
+

Sign with spend key (value=0).

+
+
+
+ +
SIGN_WITH_VIEW_KEY: 1
+

Sign with the view key (value=1).

+
+
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/enums/MoneroTxPriority.html b/docs/typedocs/enums/MoneroTxPriority.html new file mode 100644 index 000000000..c3a0e0aee --- /dev/null +++ b/docs/typedocs/enums/MoneroTxPriority.html @@ -0,0 +1,119 @@ +MoneroTxPriority | monero-ts
+
+ +
+
+
+
+ +

Enumeration MoneroTxPriority

+
+

Enumerates send priorities.

+
+
+
+
+
+ +
+
+

Enumeration Members

+
+
+

Enumeration Members

+
+ +
DEFAULT: 0
+

Default priority (i.e. normal) (value=0).

+
+
+
+ +
ELEVATED: 3
+

Elevated priority (value=3).

+
+
+
+ +
NORMAL: 2
+

Normal priority (value=2).

+
+
+
+ +
UNIMPORTANT: 1
+

Unimportant priority (value=1).

+
+
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/functions/connectToDaemonRpc.html b/docs/typedocs/functions/connectToDaemonRpc.html new file mode 100644 index 000000000..e1a419994 --- /dev/null +++ b/docs/typedocs/functions/connectToDaemonRpc.html @@ -0,0 +1,108 @@ +connectToDaemonRpc | monero-ts
+
+ +
+
+
+
+ +

Function connectToDaemonRpc

+
+
    + +
  • +

    Create a client connected to monerod.

    + +

    Examples:

    + + +let daemon = await moneroTs.connectToDaemonRpc("http://localhost:38081");
    +

    +
    + +let daemon = await moneroTs.connectToDaemonRpc({
    +   uri: "http://localhost:38081",
    +   username: "superuser",
    +   password: "abctesting123"
    +}); +

    +
    + +// start monerod as an internal process
    +let daemon = await moneroTs.connectToDaemonRpc({
    +   cmd: ["path/to/monerod", ...params...],
    +}); +

    +
    +

    Parameters

    +
      +
    • +
      uriOrConfig: string | string[] | Partial<MoneroRpcConnection> | Partial<MoneroDaemonConfig>
      +

      uri or rpc connection or config or terminal parameters to connect to monerod

      +
      +
    • +
    • +
      Optional username: string
      +

      username to authenticate with monerod

      +
      +
    • +
    • +
      Optional password: string
      +

      password to authenticate with monerod

      +
      +
    +

    Returns Promise<MoneroDaemonRpc>

    the daemon RPC client

    + +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/functions/connectToWalletRpc.html b/docs/typedocs/functions/connectToWalletRpc.html new file mode 100644 index 000000000..1538613b5 --- /dev/null +++ b/docs/typedocs/functions/connectToWalletRpc.html @@ -0,0 +1,112 @@ +connectToWalletRpc | monero-ts
+
+ +
+
+
+
+ +

Function connectToWalletRpc

+
+
    + +
  • +

    Create a client connected to monero-wallet-rpc.

    + +

    Examples:

    + + +let walletRpc = await moneroTs.connectToWalletRpc({
    +   uri: "http://localhost:38081",
    +   username: "superuser",
    +   password: "abctesting123",
    +   rejectUnauthorized: false // e.g. local development
    +});
    +

    +
    + +// connect to monero-wallet-rpc running as internal process
    +let walletRpc = await moneroTs.connectToWalletRpc({cmd: [
    +   "/path/to/monero-wallet-rpc",
    +   "--stagenet",
    +   "--daemon-address", "http://localhost:38081",
    +   "--daemon-login", "superuser:abctesting123",
    +   "--rpc-bind-port", "38085",
    +   "--rpc-login", "rpc_user:abc123",
    +   "--wallet-dir", "/path/to/wallets", // defaults to monero-wallet-rpc directory
    +   "--rpc-access-control-origins", "http://localhost:8080"
    + ]}); +
    +
    +

    Parameters

    +
      +
    • +
      uriOrConfig: string | string[] | Partial<MoneroRpcConnection> | Partial<MoneroWalletConfig>
      +

      uri or rpc connection or config or terminal parameters to connect to monero-wallet-rpc

      +
      +
    • +
    • +
      Optional username: string
      +

      username to authenticate with monero-wallet-rpc

      +
      +
    • +
    • +
      Optional password: string
      +

      password to authenticate with monero-wallet-rpc

      +
      +
    +

    Returns Promise<MoneroWalletRpc>

    the wallet RPC client

    + +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/functions/createWalletFull.html b/docs/typedocs/functions/createWalletFull.html new file mode 100644 index 000000000..ee1040038 --- /dev/null +++ b/docs/typedocs/functions/createWalletFull.html @@ -0,0 +1,106 @@ +createWalletFull | monero-ts
+
+ +
+
+
+
+ +

Function createWalletFull

+
+
    + +
  • +

    Create a Monero wallet using client-side WebAssembly bindings to monero-project's wallet2 in C++.

    + +

    Example:

    + + +const wallet = await moneroTs.createWalletFull({
    +   path: "./test_wallets/wallet1", // leave blank for in-memory wallet
    +   password: "supersecretpassword",
    +   networkType: moneroTs.MoneroNetworkType.STAGENET,
    +   seed: "coexist igloo pamphlet lagoon...",
    +   restoreHeight: 1543218,
    +   server: "http://localhost:38081"
    +}); +

    +
    + +const wallet = await moneroTs.createWalletFull({
    +   path: "./test_wallets/wallet1", // leave blank for in-memory wallet
    +   password: "supersecretpassword",
    +   networkType: moneroTs.MoneroNetworkType.STAGENET,
    +   seed: "coexist igloo pamphlet lagoon...",
    +   restoreHeight: 1543218,
    +   proxyToWorker: false, // override default
    +   server: {
    +     uri: "http://localhost:38081",
    +     username: "daemon_user",
    +     password: "daemon_password_123"
    +   }
    +}); +
    +
    +

    Parameters

    +
      +
    • +
      config: Partial<MoneroWalletConfig>
      +

      MoneroWalletConfig or equivalent config object

      +
      +
    +

    Returns Promise<MoneroWalletFull>

    the created wallet

    + +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/functions/createWalletKeys.html b/docs/typedocs/functions/createWalletKeys.html new file mode 100644 index 000000000..d228154de --- /dev/null +++ b/docs/typedocs/functions/createWalletKeys.html @@ -0,0 +1,87 @@ +createWalletKeys | monero-ts
+
+ +
+
+
+
+ +

Function createWalletKeys

+
+
    + +
  • +

    Create a wallet using WebAssembly bindings to monero-project.

    + +

    Example:

    + + +const wallet = await moneroTs.createWalletKeys({
    +   password: "abc123",
    +   networkType: moneroTs.MoneroNetworkType.STAGENET,
    +   seed: "coexist igloo pamphlet lagoon..."
    +}); +
    +
    +

    Parameters

    +
      +
    • +
      config: Partial<MoneroWalletConfig>
      +

      MoneroWalletConfig or equivalent config object

      +
      +
    +

    Returns Promise<MoneroWalletKeys>

    the created wallet

    + +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/functions/getVersion.html b/docs/typedocs/functions/getVersion.html new file mode 100644 index 000000000..8c606ce7e --- /dev/null +++ b/docs/typedocs/functions/getVersion.html @@ -0,0 +1,69 @@ +getVersion | monero-ts
+
+ +
+
+
+
+ +

Function getVersion

+
+
    + +
  • +

    Get the version of the monero-ts library.

    +

    Returns string

    the version of this monero-ts library

    + +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/functions/openWalletFull.html b/docs/typedocs/functions/openWalletFull.html new file mode 100644 index 000000000..c95de14d4 --- /dev/null +++ b/docs/typedocs/functions/openWalletFull.html @@ -0,0 +1,92 @@ +openWalletFull | monero-ts
+
+ +
+
+
+
+ +

Function openWalletFull

+
+
    + +
  • +

    Open an existing Monero wallet using client-side WebAssembly bindings to monero-project's wallet2 in C++.

    + +

    Example:

    + + +const wallet = await moneroTs.openWalletFull({
    +   path: "./wallets/wallet1",
    +   password: "supersecretpassword",
    +   networkType: moneroTs.MoneroNetworkType.STAGENET,
    +   server: { // daemon configuration
    +     uri: "http://localhost:38081",
    +     username: "superuser",
    +     password: "abctesting123"
    +   }
    +}); +

    +
    +

    Parameters

    +
    +

    Returns Promise<MoneroWalletFull>

    the opened wallet

    + +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/index.html b/docs/typedocs/index.html new file mode 100644 index 000000000..9d91e3fa3 --- /dev/null +++ b/docs/typedocs/index.html @@ -0,0 +1,200 @@ +monero-ts
+
+ +
+
+
+
+

monero-ts

+

Monero TypeScript Library

A TypeScript library for creating Monero applications using RPC and WebAssembly bindings to monero v0.18.2.2 'Flourine Fermie'.

+
    +
  • Supports client-side wallets in Node.js and the browser using WebAssembly.
  • +
  • Supports wallet and daemon RPC clients.
  • +
  • Supports multisig, view-only, and offline wallets.
  • +
  • Wallet types are interchangeable by conforming to a common interface.
  • +
  • Uses a clearly defined data model and API specification intended to be intuitive and robust.
  • +
  • Query wallet transactions, transfers, and outputs by their properties.
  • +
  • Fetch and process binary data from the daemon (e.g. raw blocks).
  • +
  • Receive notifications when blocks are added to the chain or when wallets sync, send, or receive.
  • +
  • Over 300 passing Mocha tests.
  • +
+

Table of contents

+

Architecture

+
+ Build browser or Node.js applications using RPC or WebAssembly bindings to monero-project/monero. Wallet implementations are interchangeable by conforming to a common interface, MoneroWallet.ts. +

+ +

Sample code

// import monero-ts (or import types individually)
import * as moneroTs from "monero-ts";

// connect to daemon
let daemon = await moneroTs.connectToDaemonRpc("http://localhost:28081");
let height = await daemon.getHeight(); // 1523651
let txsInPool = await daemon.getTxPool(); // get transactions in the pool

// create wallet from mnemonic phrase using WebAssembly bindings to monero-project
let walletFull = await moneroTs.createWalletFull({
path: "sample_wallet_full"
password: "supersecretpassword123",
networkType: moneroTs.MoneroNetworkType.TESTNET,
seed: "hefty value scenic...",
restoreHeight: 573936,
server: { // provide url or MoneroRpcConnection
uri: "http://localhost:28081",
username: "superuser",
password: "abctesting123"
}
});

// synchronize with progress notifications
await walletFull.sync(new class extends moneroTs.MoneroWalletListener {
async onSyncProgress(height: number, startHeight: number, endHeight: number, percentDone: number, message: string) {
// feed a progress bar?
}
} as moneroTs.MoneroWalletListener);

// synchronize in the background every 5 seconds
await walletFull.startSyncing(5000);

// receive notifications when funds are received, confirmed, and unlocked
let fundsReceived = false;
await walletFull.addListener(new class extends moneroTs.MoneroWalletListener {
async onOutputReceived(output: moneroTs.MoneroOutputWallet) {
let amount = output.getAmount();
let txHash = output.getTx().getHash();
let isConfirmed = output.getTx().getIsConfirmed();
let isLocked = output.getTx().getIsLocked();
fundsReceived = true;
}
});

// connect to wallet RPC endpoint and open wallet
let walletRpc = await moneroTs.connectToWalletRpc("http://localhost:28084", "rpc_user", "abc123");
await walletRpc.openWallet("sample_wallet_rpc", "supersecretpassword123");
let primaryAddress = await walletRpc.getPrimaryAddress(); // 555zgduFhmKd2o8rPUz...
let balance = await walletRpc.getBalance(); // 533648366742
let txs = await walletRpc.getTxs(); // get transactions containing transfers to/from the wallet

// send funds from RPC wallet to WebAssembly wallet
let createdTx = await walletRpc.createTx({
accountIndex: 0,
address: await walletFull.getAddress(1, 0),
amount: BigInt("250000000000"), // send 0.25 XMR (denominated in atomic units)
relay: false // create transaction and relay to the network if true
});
let fee = createdTx.getFee(); // "Are you sure you want to send... ?"
await walletRpc.relayTx(createdTx); // relay the transaction

// recipient receives unconfirmed funds within 5 seconds
await new Promise(function(resolve) { setTimeout(resolve, 5000); });
assert(fundsReceived);

// save and close WebAssembly wallet
await walletFull.close(true); +
+

Documentation

+

Using monero-ts in your project

    +
  1. cd your_project or mkdir your_project && cd your_project && npm init
  2. +
  3. npm install monero-ts@0.9.0
  4. +
  5. Add require("monero-ts") to your application code.
  6. +
+

Running in Node.js

Node.js 18 LTS is recommended and requires using the --no-experimental-fetch flag. Alternatively, Node.js 16 LTS works.

+

Building a browser application

    +
  1. Bundle your application code for a browser. See xmr-sample-app for an example project using webpack.
  2. +
  3. Copy assets from ./dist to your web app's build directory.
  4. +
+

Using RPC servers:

    +
  1. Download and install Monero CLI.
  2. +
  3. Start monerod, e.g.: ./monerod --stagenet (or use a remote daemon).
  4. +
  5. Start monero-wallet-rpc, e.g.: ./monero-wallet-rpc --daemon-address http://localhost:38081 --stagenet --rpc-bind-port 38084 --rpc-login rpc_user:abc123 --wallet-dir ./
  6. +
+

Building WebAssembly binaries from source

This project uses WebAssembly to package and execute Monero's source code for use in a browser or other WebAssembly-supported environment.

+

Compiled WebAssembly binaries are committed to ./dist for convenience, but these files can be built independently from source code:

+
    +
  1. Install and activate emscripten.
      +
    1. Clone emscripten repository: git clone https://github.com/emscripten-core/emsdk.git
    2. +
    3. cd emsdk
    4. +
    5. git pull && ./emsdk install 3.1.10 && ./emsdk activate 3.1.10 && source ./emsdk_env.sh
    6. +
    7. export EMSCRIPTEN=path/to/emsdk/upstream/emscripten (change for your system)
    8. +
    +
  2. +
  3. Clone monero-ts repository: git clone --recursive https://github.com/monero-ecosystem/monero-ts.git
  4. +
  5. cd monero-ts
  6. +
  7. ./bin/update_submodules.sh
  8. +
  9. Modify ./external/monero-cpp/external/monero-project/src/crypto/wallet/CMakeLists.txt from set(MONERO_WALLET_CRYPTO_LIBRARY "auto" ... to set(MONERO_WALLET_CRYPTO_LIBRARY "cn" ....
  10. +
  11. Download and install unbound 1.17.0 to your home directory (~).
  12. +
  13. ./bin/build_all.sh (install monero-project dependencies as needed for your system)
  14. +
+

Running tests

    +
  1. Clone the project repository: git clone https://github.com/monero-ecosystem/monero-ts.git
  2. +
  3. cd monero-ts
  4. +
  5. Start RPC servers:
      +
    1. Download and install Monero CLI.
    2. +
    3. Start monerod, e.g.: ./monerod --testnet (or use a remote daemon).
    4. +
    5. Start monero-wallet-rpc, e.g.: ./monero-wallet-rpc --daemon-address http://localhost:38081 --testnet --rpc-bind-port 28084 --rpc-login rpc_user:abc123 --wallet-dir ./
    6. +
    +
  6. +
  7. Configure the appropriate RPC endpoints, authentication, and other settings in TestUtils.ts (e.g. WALLET_RPC_CONFIG and DAEMON_RPC_CONFIG).
  8. +
+

Running tests in Node.js

    +
  • Run all tests: npm test
  • +
  • Run tests by their description, e.g.: npm run test -- --grep "Can get transactions"
  • +
+

Running tests in a browser

    +
  1. Start monero-wallet-rpc servers used by tests: ./bin/start_wallet_rpc_test_servers.sh
  2. +
  3. In another terminal, build browser tests: ./bin/build_browser_tests.sh
  4. +
  5. Access http://localhost:8080/tests.html in a browser to run all tests
  6. +
+

Related projects

+

License

This project is licensed under MIT.

+

Donations

If this library brings you value, please consider donating.

+

+
+ 46FR1GKVqFNQnDiFkH7AuzbUBrGQwz2VdaXTDD4jcjRE8YkkoTYTmZ2Vohsz9gLSqkj5EM6ai9Q7sBoX4FPPYJdGKQQXPVz +

+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/typedocs/modules.html b/docs/typedocs/modules.html new file mode 100644 index 000000000..87a889ea1 --- /dev/null +++ b/docs/typedocs/modules.html @@ -0,0 +1,149 @@ +monero-ts
+
+ +
+
+
+
+

monero-ts

+
+
+

Index

+
+

Enumerations

+
+
+

Classes

+
+
+

Functions

+
+
+
+

Generated using TypeDoc

+
\ No newline at end of file