Creates a new BCUR2 extended public key import interaction
The constructor parameters
The BIP32 derivation path to request
Optionaldecoder?: BCUR2DecoderThe BCUR2Decoder instance to use
Optionalnetwork?: BitcoinNetworkThe Bitcoin network to use
ProtecteddecoderProtectednetworkGets the fully decoded data after all QR code parts are scanned
The decoded data containing xpub, path and fingerprint
Gets any error that occurred during scanning
Error message or null if no error
Gets the current progress of QR code scanning
A string describing the current progress
Return whether there are any messages matching the given options.
Checks if the QR code scanning is complete
True if all parts have been scanned
Subclasses can override this method to indicate they are not supported.
This method has access to whatever options may have been passed
in by the constructor as well as the ability to interact with
this.environment to determine whether the functionality is
supported. See the Bowser documentation for more details:
https://github.com/lancedikson/bowser
isSupported() {
return this.environment.satisfies({
* declare browsers per OS
windows: {
"internet explorer": ">10",
},
macos: {
safari: ">10.1"
},
* per platform (mobile, desktop or tablet)
mobile: {
safari: '>=9',
'android browser': '>3.10'
},
* or in general
chrome: "~20.1.1432",
firefox: ">31",
opera: ">=22",
* also supports equality operator
chrome: "=20.1.1432", * will match particular build only
* and loose-equality operator
chrome: "~20", * will match any 20.* sub-version
chrome: "~20.1" * will match any 20.1.* sub-version (20.1.19 as well as 20.1.12.42-alpha.1)
});
}
Return the first message matching the given options (or null if none is found).
Returns the interaction messages for the UI
Array of message objects describing the workflow
Return messages filtered by the given options.
Multiple options can be given at once to filter along multiple dimensions.
import {PENDING, ACTIVE} from "@caravan/bitcoin";
// Create any interaction instance
interaction.messages().forEach(msg => console.log(msg));
{ code: "device.connect", state: "pending", level: "info", text: "Please plug in your device."}
{ code: "device.active", state: "active", level: "info", text: "Communicating with your device..."}
{ code: "device.active.warning", state: "active", level: "warning", text: "Your device will warn you about...", version: "2.x"}
interaction.messagesFor({state: PENDING}).forEach(msg => console.log(msg));
{ code: "device.connect", state: "pending", level: "info", text: "Please plug in your device."}
interaction.messagesFor({code: ACTIVE}).forEach(msg => console.log(msg));
{ code: "device.active", state: "active", level: "info", text: "Communicating with your device..."}
{ code: "device.active.warning", state: "active", level: "warning", text: "Your device will warn you about...", version: "2.x"}
interaction.messagesFor({version: /^2/}).forEach(msg => console.log(msg));
{ code: "device.active", state: "active", level: "warning", text: "Your device will warn you about...", version: "2.x"}
Retrieve the text of the first message matching the given options
(or null if none is found).
Processes a scanned QR code part
The scanned UR:CRYPTO-ACCOUNT QR code data
The decoded data if complete, null if more parts needed
Generates the request data for displaying QR codes
Request data containing instructions and BIP32 path
Resets the decoder state
Throws an error.
Class for importing extended public keys from BCUR2 wallet QR codes. Handles the scanning and decoding of multi-part QR codes containing extended public key (xpub) data in the BCUR2 format.
This interaction class works with the BCUR2Decoder class to process multi-part QR codes. It expects QR codes to contain:
Example