{"version":3,"file":"index.mjs","sources":["../src/downloader/constants.ts","../node_modules/node-stream-zip/node_stream_zip.js","../src/downloader/file.ts","../src/downloader/request.ts","../src/downloader/github.ts","../src/downloader/version.ts","../src/downloader/downloader.ts","../src/helpers/selectors.ts","../src/helpers/actions.ts","../src/wallets/wallet.ts","../src/wallets/coinbase/actions/account.ts","../src/wallets/coinbase/actions/helpers/actions.ts","../src/wallets/coinbase/actions/network.ts","../src/wallets/coinbase/actions/setup.ts","../src/wallets/coinbase/actions/token.ts","../src/wallets/coinbase/actions/transaction.ts","../src/wallets/coinbase/coinbase.ts","../src/wallets/metamask/actions/helpers/selectors.ts","../src/wallets/metamask/actions/helpers/actions.ts","../src/wallets/metamask/actions/account.ts","../src/wallets/metamask/setup/setupActions.ts","../src/wallets/metamask/actions/network.ts","../src/wallets/metamask/actions/transaction.ts","../src/wallets/metamask/actions/setup.ts","../src/wallets/metamask/actions/token.ts","../src/wallets/metamask/metamask.ts","../src/wallets/wallets.ts","../src/launch.ts","../src/bootstrap.ts","../src/index.ts"],"sourcesContent":["/**\n * Constants used across the downloader module\n */\n\n// Overrides for consistent navigation experience across wallet extensions\nexport const EXTENSION_ID = 'gadekpdjmpjjnnemgnhkbjgnjpdaakgh';\nexport const EXTENSION_PUB_KEY =\n  'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnpiOcYGaEp02v5On5luCk/4g9j+ujgWeGlpZVibaSz6kUlyiZvcVNIIUXR568uv5NrEi5+j9+HbzshLALhCn9S43E7Ha6Xkdxs3kOEPBu8FRNwFh2S7ivVr6ixnl2FCGwfkP1S1r7k665eC1/xYdJKGCc8UByfSw24Rtl5odUqZX1SaE6CsQEMymCFcWhpE3fV+LZ6RWWJ63Zm1ac5KmKzXdj7wZzN3onI0Csc8riBZ0AujkThJmCR8tZt2PkVUDX9exa0XkJb79pe0Ken5Bt2jylJhmQB7R3N1pVNhNQt17Sytnwz6zG2YsB2XNd/1VYJe52cPNJc7zvhQJpHjh5QIDAQAB';\n\n// File markers for download state tracking\nexport const DOWNLOAD_STATE_FILES = {\n  downloading: '.downloading',\n  success: '.success',\n  error: '.error',\n} as const;\n\n// Configuration constants\nexport const DOWNLOAD_CONFIG = {\n  pollIntervalMs: 2000,\n} as const;\n","/**\n * @license node-stream-zip | (c) 2020 Antelle | https://github.com/antelle/node-stream-zip/blob/master/LICENSE\n * Portions copyright https://github.com/cthackers/adm-zip | https://raw.githubusercontent.com/cthackers/adm-zip/master/LICENSE\n */\n\nlet fs = require('fs');\nconst util = require('util');\nconst path = require('path');\nconst events = require('events');\nconst zlib = require('zlib');\nconst stream = require('stream');\n\nconst consts = {\n    /* The local file header */\n    LOCHDR: 30, // LOC header size\n    LOCSIG: 0x04034b50, // \"PK\\003\\004\"\n    LOCVER: 4, // version needed to extract\n    LOCFLG: 6, // general purpose bit flag\n    LOCHOW: 8, // compression method\n    LOCTIM: 10, // modification time (2 bytes time, 2 bytes date)\n    LOCCRC: 14, // uncompressed file crc-32 value\n    LOCSIZ: 18, // compressed size\n    LOCLEN: 22, // uncompressed size\n    LOCNAM: 26, // filename length\n    LOCEXT: 28, // extra field length\n\n    /* The Data descriptor */\n    EXTSIG: 0x08074b50, // \"PK\\007\\008\"\n    EXTHDR: 16, // EXT header size\n    EXTCRC: 4, // uncompressed file crc-32 value\n    EXTSIZ: 8, // compressed size\n    EXTLEN: 12, // uncompressed size\n\n    /* The central directory file header */\n    CENHDR: 46, // CEN header size\n    CENSIG: 0x02014b50, // \"PK\\001\\002\"\n    CENVEM: 4, // version made by\n    CENVER: 6, // version needed to extract\n    CENFLG: 8, // encrypt, decrypt flags\n    CENHOW: 10, // compression method\n    CENTIM: 12, // modification time (2 bytes time, 2 bytes date)\n    CENCRC: 16, // uncompressed file crc-32 value\n    CENSIZ: 20, // compressed size\n    CENLEN: 24, // uncompressed size\n    CENNAM: 28, // filename length\n    CENEXT: 30, // extra field length\n    CENCOM: 32, // file comment length\n    CENDSK: 34, // volume number start\n    CENATT: 36, // internal file attributes\n    CENATX: 38, // external file attributes (host system dependent)\n    CENOFF: 42, // LOC header offset\n\n    /* The entries in the end of central directory */\n    ENDHDR: 22, // END header size\n    ENDSIG: 0x06054b50, // \"PK\\005\\006\"\n    ENDSIGFIRST: 0x50,\n    ENDSUB: 8, // number of entries on this disk\n    ENDTOT: 10, // total number of entries\n    ENDSIZ: 12, // central directory size in bytes\n    ENDOFF: 16, // offset of first CEN header\n    ENDCOM: 20, // zip file comment length\n    MAXFILECOMMENT: 0xffff,\n\n    /* The entries in the end of ZIP64 central directory locator */\n    ENDL64HDR: 20, // ZIP64 end of central directory locator header size\n    ENDL64SIG: 0x07064b50, // ZIP64 end of central directory locator signature\n    ENDL64SIGFIRST: 0x50,\n    ENDL64OFS: 8, // ZIP64 end of central directory offset\n\n    /* The entries in the end of ZIP64 central directory */\n    END64HDR: 56, // ZIP64 end of central directory header size\n    END64SIG: 0x06064b50, // ZIP64 end of central directory signature\n    END64SIGFIRST: 0x50,\n    END64SUB: 24, // number of entries on this disk\n    END64TOT: 32, // total number of entries\n    END64SIZ: 40,\n    END64OFF: 48,\n\n    /* Compression methods */\n    STORED: 0, // no compression\n    SHRUNK: 1, // shrunk\n    REDUCED1: 2, // reduced with compression factor 1\n    REDUCED2: 3, // reduced with compression factor 2\n    REDUCED3: 4, // reduced with compression factor 3\n    REDUCED4: 5, // reduced with compression factor 4\n    IMPLODED: 6, // imploded\n    // 7 reserved\n    DEFLATED: 8, // deflated\n    ENHANCED_DEFLATED: 9, // deflate64\n    PKWARE: 10, // PKWare DCL imploded\n    // 11 reserved\n    BZIP2: 12, //  compressed using BZIP2\n    // 13 reserved\n    LZMA: 14, // LZMA\n    // 15-17 reserved\n    IBM_TERSE: 18, // compressed using IBM TERSE\n    IBM_LZ77: 19, //IBM LZ77 z\n\n    /* General purpose bit flag */\n    FLG_ENC: 0, // encrypted file\n    FLG_COMP1: 1, // compression option\n    FLG_COMP2: 2, // compression option\n    FLG_DESC: 4, // data descriptor\n    FLG_ENH: 8, // enhanced deflation\n    FLG_STR: 16, // strong encryption\n    FLG_LNG: 1024, // language encoding\n    FLG_MSK: 4096, // mask header values\n    FLG_ENTRY_ENC: 1,\n\n    /* 4.5 Extensible data fields */\n    EF_ID: 0,\n    EF_SIZE: 2,\n\n    /* Header IDs */\n    ID_ZIP64: 0x0001,\n    ID_AVINFO: 0x0007,\n    ID_PFS: 0x0008,\n    ID_OS2: 0x0009,\n    ID_NTFS: 0x000a,\n    ID_OPENVMS: 0x000c,\n    ID_UNIX: 0x000d,\n    ID_FORK: 0x000e,\n    ID_PATCH: 0x000f,\n    ID_X509_PKCS7: 0x0014,\n    ID_X509_CERTID_F: 0x0015,\n    ID_X509_CERTID_C: 0x0016,\n    ID_STRONGENC: 0x0017,\n    ID_RECORD_MGT: 0x0018,\n    ID_X509_PKCS7_RL: 0x0019,\n    ID_IBM1: 0x0065,\n    ID_IBM2: 0x0066,\n    ID_POSZIP: 0x4690,\n\n    EF_ZIP64_OR_32: 0xffffffff,\n    EF_ZIP64_OR_16: 0xffff,\n};\n\nconst StreamZip = function (config) {\n    let fd, fileSize, chunkSize, op, centralDirectory, closed;\n    const ready = false,\n        that = this,\n        entries = config.storeEntries !== false ? {} : null,\n        fileName = config.file,\n        textDecoder = config.nameEncoding ? new TextDecoder(config.nameEncoding) : null;\n\n    open();\n\n    function open() {\n        if (config.fd) {\n            fd = config.fd;\n            readFile();\n        } else {\n            fs.open(fileName, 'r', (err, f) => {\n                if (err) {\n                    return that.emit('error', err);\n                }\n                fd = f;\n                readFile();\n            });\n        }\n    }\n\n    function readFile() {\n        fs.fstat(fd, (err, stat) => {\n            if (err) {\n                return that.emit('error', err);\n            }\n            fileSize = stat.size;\n            chunkSize = config.chunkSize || Math.round(fileSize / 1000);\n            chunkSize = Math.max(\n                Math.min(chunkSize, Math.min(128 * 1024, fileSize)),\n                Math.min(1024, fileSize)\n            );\n            readCentralDirectory();\n        });\n    }\n\n    function readUntilFoundCallback(err, bytesRead) {\n        if (err || !bytesRead) {\n            return that.emit('error', err || new Error('Archive read error'));\n        }\n        let pos = op.lastPos;\n        let bufferPosition = pos - op.win.position;\n        const buffer = op.win.buffer;\n        const minPos = op.minPos;\n        while (--pos >= minPos && --bufferPosition >= 0) {\n            if (buffer.length - bufferPosition >= 4 && buffer[bufferPosition] === op.firstByte) {\n                // quick check first signature byte\n                if (buffer.readUInt32LE(bufferPosition) === op.sig) {\n                    op.lastBufferPosition = bufferPosition;\n                    op.lastBytesRead = bytesRead;\n                    op.complete();\n                    return;\n                }\n            }\n        }\n        if (pos === minPos) {\n            return that.emit('error', new Error('Bad archive'));\n        }\n        op.lastPos = pos + 1;\n        op.chunkSize *= 2;\n        if (pos <= minPos) {\n            return that.emit('error', new Error('Bad archive'));\n        }\n        const expandLength = Math.min(op.chunkSize, pos - minPos);\n        op.win.expandLeft(expandLength, readUntilFoundCallback);\n    }\n\n    function readCentralDirectory() {\n        const totalReadLength = Math.min(consts.ENDHDR + consts.MAXFILECOMMENT, fileSize);\n        op = {\n            win: new FileWindowBuffer(fd),\n            totalReadLength,\n            minPos: fileSize - totalReadLength,\n            lastPos: fileSize,\n            chunkSize: Math.min(1024, chunkSize),\n            firstByte: consts.ENDSIGFIRST,\n            sig: consts.ENDSIG,\n            complete: readCentralDirectoryComplete,\n        };\n        op.win.read(fileSize - op.chunkSize, op.chunkSize, readUntilFoundCallback);\n    }\n\n    function readCentralDirectoryComplete() {\n        const buffer = op.win.buffer;\n        const pos = op.lastBufferPosition;\n        try {\n            centralDirectory = new CentralDirectoryHeader();\n            centralDirectory.read(buffer.slice(pos, pos + consts.ENDHDR));\n            centralDirectory.headerOffset = op.win.position + pos;\n            if (centralDirectory.commentLength) {\n                that.comment = buffer\n                    .slice(\n                        pos + consts.ENDHDR,\n                        pos + consts.ENDHDR + centralDirectory.commentLength\n                    )\n                    .toString();\n            } else {\n                that.comment = null;\n            }\n            that.entriesCount = centralDirectory.volumeEntries;\n            that.centralDirectory = centralDirectory;\n            if (\n                (centralDirectory.volumeEntries === consts.EF_ZIP64_OR_16 &&\n                    centralDirectory.totalEntries === consts.EF_ZIP64_OR_16) ||\n                centralDirectory.size === consts.EF_ZIP64_OR_32 ||\n                centralDirectory.offset === consts.EF_ZIP64_OR_32\n            ) {\n                readZip64CentralDirectoryLocator();\n            } else {\n                op = {};\n                readEntries();\n            }\n        } catch (err) {\n            that.emit('error', err);\n        }\n    }\n\n    function readZip64CentralDirectoryLocator() {\n        const length = consts.ENDL64HDR;\n        if (op.lastBufferPosition > length) {\n            op.lastBufferPosition -= length;\n            readZip64CentralDirectoryLocatorComplete();\n        } else {\n            op = {\n                win: op.win,\n                totalReadLength: length,\n                minPos: op.win.position - length,\n                lastPos: op.win.position,\n                chunkSize: op.chunkSize,\n                firstByte: consts.ENDL64SIGFIRST,\n                sig: consts.ENDL64SIG,\n                complete: readZip64CentralDirectoryLocatorComplete,\n            };\n            op.win.read(op.lastPos - op.chunkSize, op.chunkSize, readUntilFoundCallback);\n        }\n    }\n\n    function readZip64CentralDirectoryLocatorComplete() {\n        const buffer = op.win.buffer;\n        const locHeader = new CentralDirectoryLoc64Header();\n        locHeader.read(\n            buffer.slice(op.lastBufferPosition, op.lastBufferPosition + consts.ENDL64HDR)\n        );\n        const readLength = fileSize - locHeader.headerOffset;\n        op = {\n            win: op.win,\n            totalReadLength: readLength,\n            minPos: locHeader.headerOffset,\n            lastPos: op.lastPos,\n            chunkSize: op.chunkSize,\n            firstByte: consts.END64SIGFIRST,\n            sig: consts.END64SIG,\n            complete: readZip64CentralDirectoryComplete,\n        };\n        op.win.read(fileSize - op.chunkSize, op.chunkSize, readUntilFoundCallback);\n    }\n\n    function readZip64CentralDirectoryComplete() {\n        const buffer = op.win.buffer;\n        const zip64cd = new CentralDirectoryZip64Header();\n        zip64cd.read(buffer.slice(op.lastBufferPosition, op.lastBufferPosition + consts.END64HDR));\n        that.centralDirectory.volumeEntries = zip64cd.volumeEntries;\n        that.centralDirectory.totalEntries = zip64cd.totalEntries;\n        that.centralDirectory.size = zip64cd.size;\n        that.centralDirectory.offset = zip64cd.offset;\n        that.entriesCount = zip64cd.volumeEntries;\n        op = {};\n        readEntries();\n    }\n\n    function readEntries() {\n        op = {\n            win: new FileWindowBuffer(fd),\n            pos: centralDirectory.offset,\n            chunkSize,\n            entriesLeft: centralDirectory.volumeEntries,\n        };\n        op.win.read(op.pos, Math.min(chunkSize, fileSize - op.pos), readEntriesCallback);\n    }\n\n    function readEntriesCallback(err, bytesRead) {\n        if (err || !bytesRead) {\n            return that.emit('error', err || new Error('Entries read error'));\n        }\n        let bufferPos = op.pos - op.win.position;\n        let entry = op.entry;\n        const buffer = op.win.buffer;\n        const bufferLength = buffer.length;\n        try {\n            while (op.entriesLeft > 0) {\n                if (!entry) {\n                    entry = new ZipEntry();\n                    entry.readHeader(buffer, bufferPos);\n                    entry.headerOffset = op.win.position + bufferPos;\n                    op.entry = entry;\n                    op.pos += consts.CENHDR;\n                    bufferPos += consts.CENHDR;\n                }\n                const entryHeaderSize = entry.fnameLen + entry.extraLen + entry.comLen;\n                const advanceBytes = entryHeaderSize + (op.entriesLeft > 1 ? consts.CENHDR : 0);\n                if (bufferLength - bufferPos < advanceBytes) {\n                    op.win.moveRight(chunkSize, readEntriesCallback, bufferPos);\n                    op.move = true;\n                    return;\n                }\n                entry.read(buffer, bufferPos, textDecoder);\n                if (!config.skipEntryNameValidation) {\n                    entry.validateName();\n                }\n                if (entries) {\n                    entries[entry.name] = entry;\n                }\n                that.emit('entry', entry);\n                op.entry = entry = null;\n                op.entriesLeft--;\n                op.pos += entryHeaderSize;\n                bufferPos += entryHeaderSize;\n            }\n            that.emit('ready');\n        } catch (err) {\n            that.emit('error', err);\n        }\n    }\n\n    function checkEntriesExist() {\n        if (!entries) {\n            throw new Error('storeEntries disabled');\n        }\n    }\n\n    Object.defineProperty(this, 'ready', {\n        get() {\n            return ready;\n        },\n    });\n\n    this.entry = function (name) {\n        checkEntriesExist();\n        return entries[name];\n    };\n\n    this.entries = function () {\n        checkEntriesExist();\n        return entries;\n    };\n\n    this.stream = function (entry, callback) {\n        return this.openEntry(\n            entry,\n            (err, entry) => {\n                if (err) {\n                    return callback(err);\n                }\n                const offset = dataOffset(entry);\n                let entryStream = new EntryDataReaderStream(fd, offset, entry.compressedSize);\n                if (entry.method === consts.STORED) {\n                    // nothing to do\n                } else if (entry.method === consts.DEFLATED) {\n                    entryStream = entryStream.pipe(zlib.createInflateRaw());\n                } else {\n                    return callback(new Error('Unknown compression method: ' + entry.method));\n                }\n                if (canVerifyCrc(entry)) {\n                    entryStream = entryStream.pipe(\n                        new EntryVerifyStream(entryStream, entry.crc, entry.size)\n                    );\n                }\n                callback(null, entryStream);\n            },\n            false\n        );\n    };\n\n    this.entryDataSync = function (entry) {\n        let err = null;\n        this.openEntry(\n            entry,\n            (e, en) => {\n                err = e;\n                entry = en;\n            },\n            true\n        );\n        if (err) {\n            throw err;\n        }\n        let data = Buffer.alloc(entry.compressedSize);\n        new FsRead(fd, data, 0, entry.compressedSize, dataOffset(entry), (e) => {\n            err = e;\n        }).read(true);\n        if (err) {\n            throw err;\n        }\n        if (entry.method === consts.STORED) {\n            // nothing to do\n        } else if (entry.method === consts.DEFLATED || entry.method === consts.ENHANCED_DEFLATED) {\n            data = zlib.inflateRawSync(data);\n        } else {\n            throw new Error('Unknown compression method: ' + entry.method);\n        }\n        if (data.length !== entry.size) {\n            throw new Error('Invalid size');\n        }\n        if (canVerifyCrc(entry)) {\n            const verify = new CrcVerify(entry.crc, entry.size);\n            verify.data(data);\n        }\n        return data;\n    };\n\n    this.openEntry = function (entry, callback, sync) {\n        if (typeof entry === 'string') {\n            checkEntriesExist();\n            entry = entries[entry];\n            if (!entry) {\n                return callback(new Error('Entry not found'));\n            }\n        }\n        if (!entry.isFile) {\n            return callback(new Error('Entry is not file'));\n        }\n        if (!fd) {\n            return callback(new Error('Archive closed'));\n        }\n        const buffer = Buffer.alloc(consts.LOCHDR);\n        new FsRead(fd, buffer, 0, buffer.length, entry.offset, (err) => {\n            if (err) {\n                return callback(err);\n            }\n            let readEx;\n            try {\n                entry.readDataHeader(buffer);\n                if (entry.encrypted) {\n                    readEx = new Error('Entry encrypted');\n                }\n            } catch (ex) {\n                readEx = ex;\n            }\n            callback(readEx, entry);\n        }).read(sync);\n    };\n\n    function dataOffset(entry) {\n        return entry.offset + consts.LOCHDR + entry.fnameLen + entry.extraLen;\n    }\n\n    function canVerifyCrc(entry) {\n        // if bit 3 (0x08) of the general-purpose flags field is set, then the CRC-32 and file sizes are not known when the header is written\n        return (entry.flags & 0x8) !== 0x8;\n    }\n\n    function extract(entry, outPath, callback) {\n        that.stream(entry, (err, stm) => {\n            if (err) {\n                callback(err);\n            } else {\n                let fsStm, errThrown;\n                stm.on('error', (err) => {\n                    errThrown = err;\n                    if (fsStm) {\n                        stm.unpipe(fsStm);\n                        fsStm.close(() => {\n                            callback(err);\n                        });\n                    }\n                });\n                fs.open(outPath, 'w', (err, fdFile) => {\n                    if (err) {\n                        return callback(err);\n                    }\n                    if (errThrown) {\n                        fs.close(fd, () => {\n                            callback(errThrown);\n                        });\n                        return;\n                    }\n                    fsStm = fs.createWriteStream(outPath, { fd: fdFile });\n                    fsStm.on('finish', () => {\n                        that.emit('extract', entry, outPath);\n                        if (!errThrown) {\n                            callback();\n                        }\n                    });\n                    stm.pipe(fsStm);\n                });\n            }\n        });\n    }\n\n    function createDirectories(baseDir, dirs, callback) {\n        if (!dirs.length) {\n            return callback();\n        }\n        let dir = dirs.shift();\n        dir = path.join(baseDir, path.join(...dir));\n        fs.mkdir(dir, { recursive: true }, (err) => {\n            if (err && err.code !== 'EEXIST') {\n                return callback(err);\n            }\n            createDirectories(baseDir, dirs, callback);\n        });\n    }\n\n    function extractFiles(baseDir, baseRelPath, files, callback, extractedCount) {\n        if (!files.length) {\n            return callback(null, extractedCount);\n        }\n        const file = files.shift();\n        const targetPath = path.join(baseDir, file.name.replace(baseRelPath, ''));\n        extract(file, targetPath, (err) => {\n            if (err) {\n                return callback(err, extractedCount);\n            }\n            extractFiles(baseDir, baseRelPath, files, callback, extractedCount + 1);\n        });\n    }\n\n    this.extract = function (entry, outPath, callback) {\n        let entryName = entry || '';\n        if (typeof entry === 'string') {\n            entry = this.entry(entry);\n            if (entry) {\n                entryName = entry.name;\n            } else {\n                if (entryName.length && entryName[entryName.length - 1] !== '/') {\n                    entryName += '/';\n                }\n            }\n        }\n        if (!entry || entry.isDirectory) {\n            const files = [],\n                dirs = [],\n                allDirs = {};\n            for (const e in entries) {\n                if (\n                    Object.prototype.hasOwnProperty.call(entries, e) &&\n                    e.lastIndexOf(entryName, 0) === 0\n                ) {\n                    let relPath = e.replace(entryName, '');\n                    const childEntry = entries[e];\n                    if (childEntry.isFile) {\n                        files.push(childEntry);\n                        relPath = path.dirname(relPath);\n                    }\n                    if (relPath && !allDirs[relPath] && relPath !== '.') {\n                        allDirs[relPath] = true;\n                        let parts = relPath.split('/').filter((f) => {\n                            return f;\n                        });\n                        if (parts.length) {\n                            dirs.push(parts);\n                        }\n                        while (parts.length > 1) {\n                            parts = parts.slice(0, parts.length - 1);\n                            const partsPath = parts.join('/');\n                            if (allDirs[partsPath] || partsPath === '.') {\n                                break;\n                            }\n                            allDirs[partsPath] = true;\n                            dirs.push(parts);\n                        }\n                    }\n                }\n            }\n            dirs.sort((x, y) => {\n                return x.length - y.length;\n            });\n            if (dirs.length) {\n                createDirectories(outPath, dirs, (err) => {\n                    if (err) {\n                        callback(err);\n                    } else {\n                        extractFiles(outPath, entryName, files, callback, 0);\n                    }\n                });\n            } else {\n                extractFiles(outPath, entryName, files, callback, 0);\n            }\n        } else {\n            fs.stat(outPath, (err, stat) => {\n                if (stat && stat.isDirectory()) {\n                    extract(entry, path.join(outPath, path.basename(entry.name)), callback);\n                } else {\n                    extract(entry, outPath, callback);\n                }\n            });\n        }\n    };\n\n    this.close = function (callback) {\n        if (closed || !fd) {\n            closed = true;\n            if (callback) {\n                callback();\n            }\n        } else {\n            closed = true;\n            fs.close(fd, (err) => {\n                fd = null;\n                if (callback) {\n                    callback(err);\n                }\n            });\n        }\n    };\n\n    const originalEmit = events.EventEmitter.prototype.emit;\n    this.emit = function (...args) {\n        if (!closed) {\n            return originalEmit.call(this, ...args);\n        }\n    };\n};\n\nStreamZip.setFs = function (customFs) {\n    fs = customFs;\n};\n\nStreamZip.debugLog = (...args) => {\n    if (StreamZip.debug) {\n        // eslint-disable-next-line no-console\n        console.log(...args);\n    }\n};\n\nutil.inherits(StreamZip, events.EventEmitter);\n\nconst propZip = Symbol('zip');\n\nStreamZip.async = class StreamZipAsync extends events.EventEmitter {\n    constructor(config) {\n        super();\n\n        const zip = new StreamZip(config);\n\n        zip.on('entry', (entry) => this.emit('entry', entry));\n        zip.on('extract', (entry, outPath) => this.emit('extract', entry, outPath));\n\n        this[propZip] = new Promise((resolve, reject) => {\n            zip.on('ready', () => {\n                zip.removeListener('error', reject);\n                resolve(zip);\n            });\n            zip.on('error', reject);\n        });\n    }\n\n    get entriesCount() {\n        return this[propZip].then((zip) => zip.entriesCount);\n    }\n\n    get comment() {\n        return this[propZip].then((zip) => zip.comment);\n    }\n\n    async entry(name) {\n        const zip = await this[propZip];\n        return zip.entry(name);\n    }\n\n    async entries() {\n        const zip = await this[propZip];\n        return zip.entries();\n    }\n\n    async stream(entry) {\n        const zip = await this[propZip];\n        return new Promise((resolve, reject) => {\n            zip.stream(entry, (err, stm) => {\n                if (err) {\n                    reject(err);\n                } else {\n                    resolve(stm);\n                }\n            });\n        });\n    }\n\n    async entryData(entry) {\n        const stm = await this.stream(entry);\n        return new Promise((resolve, reject) => {\n            const data = [];\n            stm.on('data', (chunk) => data.push(chunk));\n            stm.on('end', () => {\n                resolve(Buffer.concat(data));\n            });\n            stm.on('error', (err) => {\n                stm.removeAllListeners('end');\n                reject(err);\n            });\n        });\n    }\n\n    async extract(entry, outPath) {\n        const zip = await this[propZip];\n        return new Promise((resolve, reject) => {\n            zip.extract(entry, outPath, (err, res) => {\n                if (err) {\n                    reject(err);\n                } else {\n                    resolve(res);\n                }\n            });\n        });\n    }\n\n    async close() {\n        const zip = await this[propZip];\n        return new Promise((resolve, reject) => {\n            zip.close((err) => {\n                if (err) {\n                    reject(err);\n                } else {\n                    resolve();\n                }\n            });\n        });\n    }\n};\n\nclass CentralDirectoryHeader {\n    read(data) {\n        if (data.length !== consts.ENDHDR || data.readUInt32LE(0) !== consts.ENDSIG) {\n            throw new Error('Invalid central directory');\n        }\n        // number of entries on this volume\n        this.volumeEntries = data.readUInt16LE(consts.ENDSUB);\n        // total number of entries\n        this.totalEntries = data.readUInt16LE(consts.ENDTOT);\n        // central directory size in bytes\n        this.size = data.readUInt32LE(consts.ENDSIZ);\n        // offset of first CEN header\n        this.offset = data.readUInt32LE(consts.ENDOFF);\n        // zip file comment length\n        this.commentLength = data.readUInt16LE(consts.ENDCOM);\n    }\n}\n\nclass CentralDirectoryLoc64Header {\n    read(data) {\n        if (data.length !== consts.ENDL64HDR || data.readUInt32LE(0) !== consts.ENDL64SIG) {\n            throw new Error('Invalid zip64 central directory locator');\n        }\n        // ZIP64 EOCD header offset\n        this.headerOffset = readUInt64LE(data, consts.ENDSUB);\n    }\n}\n\nclass CentralDirectoryZip64Header {\n    read(data) {\n        if (data.length !== consts.END64HDR || data.readUInt32LE(0) !== consts.END64SIG) {\n            throw new Error('Invalid central directory');\n        }\n        // number of entries on this volume\n        this.volumeEntries = readUInt64LE(data, consts.END64SUB);\n        // total number of entries\n        this.totalEntries = readUInt64LE(data, consts.END64TOT);\n        // central directory size in bytes\n        this.size = readUInt64LE(data, consts.END64SIZ);\n        // offset of first CEN header\n        this.offset = readUInt64LE(data, consts.END64OFF);\n    }\n}\n\nclass ZipEntry {\n    readHeader(data, offset) {\n        // data should be 46 bytes and start with \"PK 01 02\"\n        if (data.length < offset + consts.CENHDR || data.readUInt32LE(offset) !== consts.CENSIG) {\n            throw new Error('Invalid entry header');\n        }\n        // version made by\n        this.verMade = data.readUInt16LE(offset + consts.CENVEM);\n        // version needed to extract\n        this.version = data.readUInt16LE(offset + consts.CENVER);\n        // encrypt, decrypt flags\n        this.flags = data.readUInt16LE(offset + consts.CENFLG);\n        // compression method\n        this.method = data.readUInt16LE(offset + consts.CENHOW);\n        // modification time (2 bytes time, 2 bytes date)\n        const timebytes = data.readUInt16LE(offset + consts.CENTIM);\n        const datebytes = data.readUInt16LE(offset + consts.CENTIM + 2);\n        this.time = parseZipTime(timebytes, datebytes);\n\n        // uncompressed file crc-32 value\n        this.crc = data.readUInt32LE(offset + consts.CENCRC);\n        // compressed size\n        this.compressedSize = data.readUInt32LE(offset + consts.CENSIZ);\n        // uncompressed size\n        this.size = data.readUInt32LE(offset + consts.CENLEN);\n        // filename length\n        this.fnameLen = data.readUInt16LE(offset + consts.CENNAM);\n        // extra field length\n        this.extraLen = data.readUInt16LE(offset + consts.CENEXT);\n        // file comment length\n        this.comLen = data.readUInt16LE(offset + consts.CENCOM);\n        // volume number start\n        this.diskStart = data.readUInt16LE(offset + consts.CENDSK);\n        // internal file attributes\n        this.inattr = data.readUInt16LE(offset + consts.CENATT);\n        // external file attributes\n        this.attr = data.readUInt32LE(offset + consts.CENATX);\n        // LOC header offset\n        this.offset = data.readUInt32LE(offset + consts.CENOFF);\n    }\n\n    readDataHeader(data) {\n        // 30 bytes and should start with \"PK\\003\\004\"\n        if (data.readUInt32LE(0) !== consts.LOCSIG) {\n            throw new Error('Invalid local header');\n        }\n        // version needed to extract\n        this.version = data.readUInt16LE(consts.LOCVER);\n        // general purpose bit flag\n        this.flags = data.readUInt16LE(consts.LOCFLG);\n        // compression method\n        this.method = data.readUInt16LE(consts.LOCHOW);\n        // modification time (2 bytes time ; 2 bytes date)\n        const timebytes = data.readUInt16LE(consts.LOCTIM);\n        const datebytes = data.readUInt16LE(consts.LOCTIM + 2);\n        this.time = parseZipTime(timebytes, datebytes);\n\n        // uncompressed file crc-32 value\n        this.crc = data.readUInt32LE(consts.LOCCRC) || this.crc;\n        // compressed size\n        const compressedSize = data.readUInt32LE(consts.LOCSIZ);\n        if (compressedSize && compressedSize !== consts.EF_ZIP64_OR_32) {\n            this.compressedSize = compressedSize;\n        }\n        // uncompressed size\n        const size = data.readUInt32LE(consts.LOCLEN);\n        if (size && size !== consts.EF_ZIP64_OR_32) {\n            this.size = size;\n        }\n        // filename length\n        this.fnameLen = data.readUInt16LE(consts.LOCNAM);\n        // extra field length\n        this.extraLen = data.readUInt16LE(consts.LOCEXT);\n    }\n\n    read(data, offset, textDecoder) {\n        const nameData = data.slice(offset, (offset += this.fnameLen));\n        this.name = textDecoder\n            ? textDecoder.decode(new Uint8Array(nameData))\n            : nameData.toString('utf8');\n        const lastChar = data[offset - 1];\n        this.isDirectory = lastChar === 47 || lastChar === 92;\n\n        if (this.extraLen) {\n            this.readExtra(data, offset);\n            offset += this.extraLen;\n        }\n        this.comment = this.comLen ? data.slice(offset, offset + this.comLen).toString() : null;\n    }\n\n    validateName() {\n        if (/\\\\|^\\w+:|^\\/|(^|\\/)\\.\\.(\\/|$)/.test(this.name)) {\n            throw new Error('Malicious entry: ' + this.name);\n        }\n    }\n\n    readExtra(data, offset) {\n        let signature, size;\n        const maxPos = offset + this.extraLen;\n        while (offset < maxPos) {\n            signature = data.readUInt16LE(offset);\n            offset += 2;\n            size = data.readUInt16LE(offset);\n            offset += 2;\n            if (consts.ID_ZIP64 === signature) {\n                this.parseZip64Extra(data, offset, size);\n            }\n            offset += size;\n        }\n    }\n\n    parseZip64Extra(data, offset, length) {\n        if (length >= 8 && this.size === consts.EF_ZIP64_OR_32) {\n            this.size = readUInt64LE(data, offset);\n            offset += 8;\n            length -= 8;\n        }\n        if (length >= 8 && this.compressedSize === consts.EF_ZIP64_OR_32) {\n            this.compressedSize = readUInt64LE(data, offset);\n            offset += 8;\n            length -= 8;\n        }\n        if (length >= 8 && this.offset === consts.EF_ZIP64_OR_32) {\n            this.offset = readUInt64LE(data, offset);\n            offset += 8;\n            length -= 8;\n        }\n        if (length >= 4 && this.diskStart === consts.EF_ZIP64_OR_16) {\n            this.diskStart = data.readUInt32LE(offset);\n            // offset += 4; length -= 4;\n        }\n    }\n\n    get encrypted() {\n        return (this.flags & consts.FLG_ENTRY_ENC) === consts.FLG_ENTRY_ENC;\n    }\n\n    get isFile() {\n        return !this.isDirectory;\n    }\n}\n\nclass FsRead {\n    constructor(fd, buffer, offset, length, position, callback) {\n        this.fd = fd;\n        this.buffer = buffer;\n        this.offset = offset;\n        this.length = length;\n        this.position = position;\n        this.callback = callback;\n        this.bytesRead = 0;\n        this.waiting = false;\n    }\n\n    read(sync) {\n        StreamZip.debugLog('read', this.position, this.bytesRead, this.length, this.offset);\n        this.waiting = true;\n        let err;\n        if (sync) {\n            let bytesRead = 0;\n            try {\n                bytesRead = fs.readSync(\n                    this.fd,\n                    this.buffer,\n                    this.offset + this.bytesRead,\n                    this.length - this.bytesRead,\n                    this.position + this.bytesRead\n                );\n            } catch (e) {\n                err = e;\n            }\n            this.readCallback(sync, err, err ? bytesRead : null);\n        } else {\n            fs.read(\n                this.fd,\n                this.buffer,\n                this.offset + this.bytesRead,\n                this.length - this.bytesRead,\n                this.position + this.bytesRead,\n                this.readCallback.bind(this, sync)\n            );\n        }\n    }\n\n    readCallback(sync, err, bytesRead) {\n        if (typeof bytesRead === 'number') {\n            this.bytesRead += bytesRead;\n        }\n        if (err || !bytesRead || this.bytesRead === this.length) {\n            this.waiting = false;\n            return this.callback(err, this.bytesRead);\n        } else {\n            this.read(sync);\n        }\n    }\n}\n\nclass FileWindowBuffer {\n    constructor(fd) {\n        this.position = 0;\n        this.buffer = Buffer.alloc(0);\n        this.fd = fd;\n        this.fsOp = null;\n    }\n\n    checkOp() {\n        if (this.fsOp && this.fsOp.waiting) {\n            throw new Error('Operation in progress');\n        }\n    }\n\n    read(pos, length, callback) {\n        this.checkOp();\n        if (this.buffer.length < length) {\n            this.buffer = Buffer.alloc(length);\n        }\n        this.position = pos;\n        this.fsOp = new FsRead(this.fd, this.buffer, 0, length, this.position, callback).read();\n    }\n\n    expandLeft(length, callback) {\n        this.checkOp();\n        this.buffer = Buffer.concat([Buffer.alloc(length), this.buffer]);\n        this.position -= length;\n        if (this.position < 0) {\n            this.position = 0;\n        }\n        this.fsOp = new FsRead(this.fd, this.buffer, 0, length, this.position, callback).read();\n    }\n\n    expandRight(length, callback) {\n        this.checkOp();\n        const offset = this.buffer.length;\n        this.buffer = Buffer.concat([this.buffer, Buffer.alloc(length)]);\n        this.fsOp = new FsRead(\n            this.fd,\n            this.buffer,\n            offset,\n            length,\n            this.position + offset,\n            callback\n        ).read();\n    }\n\n    moveRight(length, callback, shift) {\n        this.checkOp();\n        if (shift) {\n            this.buffer.copy(this.buffer, 0, shift);\n        } else {\n            shift = 0;\n        }\n        this.position += shift;\n        this.fsOp = new FsRead(\n            this.fd,\n            this.buffer,\n            this.buffer.length - shift,\n            shift,\n            this.position + this.buffer.length - shift,\n            callback\n        ).read();\n    }\n}\n\nclass EntryDataReaderStream extends stream.Readable {\n    constructor(fd, offset, length) {\n        super();\n        this.fd = fd;\n        this.offset = offset;\n        this.length = length;\n        this.pos = 0;\n        this.readCallback = this.readCallback.bind(this);\n    }\n\n    _read(n) {\n        const buffer = Buffer.alloc(Math.min(n, this.length - this.pos));\n        if (buffer.length) {\n            fs.read(this.fd, buffer, 0, buffer.length, this.offset + this.pos, this.readCallback);\n        } else {\n            this.push(null);\n        }\n    }\n\n    readCallback(err, bytesRead, buffer) {\n        this.pos += bytesRead;\n        if (err) {\n            this.emit('error', err);\n            this.push(null);\n        } else if (!bytesRead) {\n            this.push(null);\n        } else {\n            if (bytesRead !== buffer.length) {\n                buffer = buffer.slice(0, bytesRead);\n            }\n            this.push(buffer);\n        }\n    }\n}\n\nclass EntryVerifyStream extends stream.Transform {\n    constructor(baseStm, crc, size) {\n        super();\n        this.verify = new CrcVerify(crc, size);\n        baseStm.on('error', (e) => {\n            this.emit('error', e);\n        });\n    }\n\n    _transform(data, encoding, callback) {\n        let err;\n        try {\n            this.verify.data(data);\n        } catch (e) {\n            err = e;\n        }\n        callback(err, data);\n    }\n}\n\nclass CrcVerify {\n    constructor(crc, size) {\n        this.crc = crc;\n        this.size = size;\n        this.state = {\n            crc: ~0,\n            size: 0,\n        };\n    }\n\n    data(data) {\n        const crcTable = CrcVerify.getCrcTable();\n        let crc = this.state.crc;\n        let off = 0;\n        let len = data.length;\n        while (--len >= 0) {\n            crc = crcTable[(crc ^ data[off++]) & 0xff] ^ (crc >>> 8);\n        }\n        this.state.crc = crc;\n        this.state.size += data.length;\n        if (this.state.size >= this.size) {\n            const buf = Buffer.alloc(4);\n            buf.writeInt32LE(~this.state.crc & 0xffffffff, 0);\n            crc = buf.readUInt32LE(0);\n            if (crc !== this.crc) {\n                throw new Error('Invalid CRC');\n            }\n            if (this.state.size !== this.size) {\n                throw new Error('Invalid size');\n            }\n        }\n    }\n\n    static getCrcTable() {\n        let crcTable = CrcVerify.crcTable;\n        if (!crcTable) {\n            CrcVerify.crcTable = crcTable = [];\n            const b = Buffer.alloc(4);\n            for (let n = 0; n < 256; n++) {\n                let c = n;\n                for (let k = 8; --k >= 0; ) {\n                    if ((c & 1) !== 0) {\n                        c = 0xedb88320 ^ (c >>> 1);\n                    } else {\n                        c = c >>> 1;\n                    }\n                }\n                if (c < 0) {\n                    b.writeInt32LE(c, 0);\n                    c = b.readUInt32LE(0);\n                }\n                crcTable[n] = c;\n            }\n        }\n        return crcTable;\n    }\n}\n\nfunction parseZipTime(timebytes, datebytes) {\n    const timebits = toBits(timebytes, 16);\n    const datebits = toBits(datebytes, 16);\n\n    const mt = {\n        h: parseInt(timebits.slice(0, 5).join(''), 2),\n        m: parseInt(timebits.slice(5, 11).join(''), 2),\n        s: parseInt(timebits.slice(11, 16).join(''), 2) * 2,\n        Y: parseInt(datebits.slice(0, 7).join(''), 2) + 1980,\n        M: parseInt(datebits.slice(7, 11).join(''), 2),\n        D: parseInt(datebits.slice(11, 16).join(''), 2),\n    };\n    const dt_str = [mt.Y, mt.M, mt.D].join('-') + ' ' + [mt.h, mt.m, mt.s].join(':') + ' GMT+0';\n    return new Date(dt_str).getTime();\n}\n\nfunction toBits(dec, size) {\n    let b = (dec >>> 0).toString(2);\n    while (b.length < size) {\n        b = '0' + b;\n    }\n    return b.split('');\n}\n\nfunction readUInt64LE(buffer, offset) {\n    return buffer.readUInt32LE(offset + 4) * 0x0000000100000000 + buffer.readUInt32LE(offset);\n}\n\nmodule.exports = StreamZip;\n","import fs from 'fs';\nimport StreamZip from 'node-stream-zip';\nimport os from 'os';\nimport path from 'path';\nimport { WalletIdOptions } from '../wallets/wallets';\nimport { EXTENSION_PUB_KEY } from './constants';\n\nexport const downloadDir = (walletId: WalletIdOptions, version: string): string => {\n  return path.resolve(os.tmpdir(), 'dappwright', walletId, version.replace(/\\./g, '_'));\n};\n\nexport const extractZip = async (zipData: string, destination: string): Promise<void> => {\n  const zip = new StreamZip.async({ file: zipData });\n  fs.mkdirSync(destination, { recursive: true });\n  await zip.extract(null, destination);\n};\n\n// Set the chrome extension public key\nexport const editExtensionPubKey = (extensionPath: string): void => {\n  const manifestPath = path.resolve(extensionPath, 'manifest.json');\n  const manifest = JSON.parse(fs.readFileSync(manifestPath, 'utf-8'));\n  manifest.key = EXTENSION_PUB_KEY;\n  fs.writeFileSync(manifestPath, JSON.stringify(manifest));\n};\n","import { IncomingMessage } from 'http';\nimport { get } from 'https';\n\nexport const request = (url: string): Promise<IncomingMessage> =>\n  new Promise((resolve) => {\n    const request = get(url, (response) => {\n      if (response.statusCode == 302) {\n        const redirectRequest = get(response.headers.location, resolve);\n        redirectRequest.on('error', (error) => {\n          // eslint-disable-next-line no-console\n          console.warn('request redirected error:', error.message);\n          throw error;\n        });\n      } else {\n        resolve(response);\n      }\n    });\n    request.on('error', (error) => {\n      // eslint-disable-next-line no-console\n      console.warn('request error:', error.message);\n      throw error;\n    });\n  });\n","import fs from 'fs';\nimport { get } from 'https';\nimport path from 'path';\nimport { request } from './request';\n\ntype GithubRelease = { downloadUrl: string; filename: string; tag: string };\n\ntype GithubResponse =\n  | {\n      message?: string;\n    }\n  | [GithubReleaseResponse];\n\n/* eslint-disable @typescript-eslint/naming-convention */\ntype GithubReleaseResponse = {\n  tag_name: string;\n  assets: { name: string; browser_download_url: string }[];\n  draft: boolean;\n};\n/* eslint-enable @typescript-eslint/naming-convention */\n\nexport const getGithubRelease = (releasesUrl: string, version: string): Promise<GithubRelease> =>\n  new Promise((resolve, reject) => {\n    const tagRegex = RegExp(`v?${version}$`, 'img');\n    // eslint-disable-next-line @typescript-eslint/naming-convention\n    const options = { headers: { 'User-Agent': 'Mozilla/5.0' } };\n\n    if (process.env.GITHUB_TOKEN) options.headers['Authorization'] = `Bearer ${process.env.GITHUB_TOKEN}`;\n    const url = new URL(releasesUrl);\n    url.searchParams.set('per_page', '100');\n    const request = get(url.toString(), options, (response) => {\n      let body = '';\n      response.on('data', (chunk) => {\n        body += chunk;\n      });\n\n      response.on('end', () => {\n        const data = JSON.parse(body) as GithubResponse;\n        if (!Array.isArray(data)) {\n          return reject(\n            // eslint-disable-next-line max-len\n            `There was a problem connecting to github API to get the extension release (URL: ${releasesUrl}). Error: ${data.message}`,\n          );\n        }\n\n        for (const result of data) {\n          if (result.draft) continue;\n          if (version === 'latest' || tagRegex.test(result.tag_name)) {\n            for (const asset of result.assets) {\n              if (asset.name.includes('chrome'))\n                resolve({\n                  downloadUrl: asset.browser_download_url,\n                  filename: asset.name,\n                  tag: result.tag_name,\n                });\n            }\n          }\n        }\n        reject(`Version ${version} not found!`);\n      });\n    });\n    request.on('error', (error) => {\n      // eslint-disable-next-line no-console\n      console.warn('getGithubRelease error:', error.message);\n      throw error;\n    });\n  });\n\nexport const downloadGithubRelease = (name: string, url: string, location: string): Promise<string> =>\n  new Promise(async (resolve) => {\n    if (!fs.existsSync(location)) {\n      fs.mkdirSync(location, { recursive: true });\n    }\n    const fileLocation = path.join(location, name);\n    const file = fs.createWriteStream(fileLocation);\n    const stream = await request(url);\n    stream.pipe(file);\n    stream.on('end', () => {\n      resolve(fileLocation);\n    });\n  });\n","import { WalletIdOptions } from '../wallets/wallets';\n\nexport const printVersion = (walletId: WalletIdOptions, version: string, recommendedVersion: string): void => {\n  /* eslint-disable no-console */\n  console.log(''); // new line\n  if (version === 'latest')\n    console.warn(\n      '\\x1b[33m%s\\x1b[0m',\n      // eslint-disable-next-line max-len\n      `It is not recommended to run ${walletId} with \"latest\" version. Use it at your own risk or set to the recommended version \"${recommendedVersion}\".`,\n    );\n  else if (isNewerVersion(recommendedVersion, version))\n    console.warn(\n      '\\x1b[33m%s\\x1b[0m',\n      `Seems you are running a newer version (${version}) of ${walletId} than recommended by the Dappwright team.\n      Use it at your own risk or set to the recommended version \"${recommendedVersion}\".`,\n    );\n  else if (isNewerVersion(version, recommendedVersion))\n    console.warn(\n      '\\x1b[33m%s\\x1b[0m',\n      `Seems you are running an older version (${version}) of ${walletId} than recommended by the Dappwright team.\n      Use it at your own risk or set the recommended version \"${recommendedVersion}\".`,\n    );\n  else console.log(`Using ${walletId} v${version}`);\n\n  console.log(''); // new line\n};\n\nconst isNewerVersion = (current: string, comparingWith: string): boolean => {\n  if (current === comparingWith) return false;\n\n  const currentFragments = current.replace(/[^\\d.-]/g, '').split('.');\n  const comparingWithFragments = comparingWith.replace(/[^\\d.-]/g, '').split('.');\n\n  const length =\n    currentFragments.length > comparingWithFragments.length ? currentFragments.length : comparingWithFragments.length;\n  for (let i = 0; i < length; i++) {\n    if ((Number(currentFragments[i]) || 0) === (Number(comparingWithFragments[i]) || 0)) continue;\n    return (Number(comparingWithFragments[i]) || 0) > (Number(currentFragments[i]) || 0);\n  }\n  return true;\n};\n","import fs from 'fs';\nimport path from 'path';\n\nimport { OfficialOptions } from '../types';\nimport { WalletIdOptions } from '../wallets/wallets';\nimport { DOWNLOAD_CONFIG, DOWNLOAD_STATE_FILES } from './constants';\nimport { downloadDir, editExtensionPubKey, extractZip } from './file';\nimport { downloadGithubRelease, getGithubRelease } from './github';\nimport { printVersion } from './version';\n\ntype DownloadResult = {\n  path: string;\n  wasDownloaded: boolean;\n};\n\n// Re-export constants for backward compatibility\n\n/**\n * Download state file paths for a given directory\n */\ninterface DownloadStatePaths {\n  readonly rootDir: string;\n  readonly downloadingFile: string;\n  readonly successFile: string;\n  readonly errorFile: string;\n}\n\n/**\n * Main download function - creates and coordinates wallet extension downloads\n *\n * @param walletId - The wallet identifier\n * @param releasesUrl - GitHub releases URL for the wallet\n * @param recommendedVersion - The recommended version to suggest\n * @returns Function that handles the download process\n */\nconst createWalletDownloader = (walletId: WalletIdOptions, releasesUrl: string, recommendedVersion: string) => {\n  return async (options: OfficialOptions): Promise<string> => {\n    const { version } = options;\n    const result = await downloadWalletExtension(walletId, version, releasesUrl, recommendedVersion);\n    return result.path;\n  };\n};\n\nasync function downloadWalletExtension(\n  walletId: WalletIdOptions,\n  version: string,\n  releasesUrl: string,\n  recommendedVersion: string,\n): Promise<DownloadResult> {\n  const paths = createDownloadStatePaths(downloadDir(walletId, version));\n\n  if (!version) {\n    // eslint-disable-next-line no-console\n    console.info(`Running tests on local ${walletId} build`);\n    return { path: paths.rootDir, wasDownloaded: false };\n  }\n\n  if (isPrimaryWorker() && !isDownloadComplete(paths)) {\n    printVersion(walletId, version, recommendedVersion);\n    await performDownload(walletId, version, releasesUrl, paths);\n    return { path: paths.rootDir, wasDownloaded: true };\n  } else {\n    await waitForDownloadCompletion(walletId, paths);\n    return { path: paths.rootDir, wasDownloaded: false };\n  }\n}\n\n/**\n * Perform the actual download process\n */\nasync function performDownload(\n  walletId: WalletIdOptions,\n  version: string,\n  releasesUrl: string,\n  paths: DownloadStatePaths,\n): Promise<void> {\n  prepareRootDir(paths);\n  markDownloadStarted(paths);\n\n  try {\n    // eslint-disable-next-line no-console\n    console.info(`Downloading ${walletId} ${version}...`);\n\n    const releaseInfo = await getGithubRelease(releasesUrl, version);\n    const walletFolder = path.dirname(paths.rootDir);\n    const zipPath = await downloadGithubRelease(releaseInfo.filename, releaseInfo.downloadUrl, walletFolder);\n\n    await extractZip(zipPath, paths.rootDir);\n    editExtensionPubKey(paths.rootDir);\n\n    markDownloadSuccess(paths);\n  } catch (error) {\n    handleDownloadError(paths, error);\n    throw error;\n  } finally {\n    cleanupDownloadingFlag(paths);\n  }\n}\n\n/**\n * Create download state paths for a given directory\n */\nfunction createDownloadStatePaths(downloadPath: string): DownloadStatePaths {\n  return {\n    rootDir: downloadPath,\n    downloadingFile: path.join(downloadPath, DOWNLOAD_STATE_FILES.downloading),\n    successFile: path.join(downloadPath, DOWNLOAD_STATE_FILES.success),\n    errorFile: path.join(downloadPath, DOWNLOAD_STATE_FILES.error),\n  };\n}\n\n/**\n * Check if download completed successfully\n */\nfunction isDownloadComplete(paths: DownloadStatePaths): boolean {\n  return fs.existsSync(paths.successFile);\n}\n\n/**\n * Check if download failed\n */\nfunction hasDownloadError(paths: DownloadStatePaths): boolean {\n  return fs.existsSync(paths.errorFile);\n}\n\n/**\n * Get error message from failed download\n */\nfunction getErrorMessage(paths: DownloadStatePaths): string | null {\n  if (!hasDownloadError(paths)) {\n    return null;\n  }\n\n  try {\n    return fs.readFileSync(paths.errorFile, 'utf-8');\n  } catch {\n    return 'Unknown error occurred during download';\n  }\n}\n\n/**\n * Ensure the root directory exists\n */\nfunction ensureRootDirExists(rootDir: string): void {\n  if (!fs.existsSync(rootDir)) {\n    fs.mkdirSync(rootDir, { recursive: true });\n  }\n}\n\n/**\n * Mark download as starting\n */\nfunction markDownloadStarted(paths: DownloadStatePaths): void {\n  ensureRootDirExists(paths.rootDir);\n  fs.writeFileSync(paths.downloadingFile, '');\n}\n\n/**\n * Mark download as successful and cleanup temporary files\n */\nfunction markDownloadSuccess(paths: DownloadStatePaths): void {\n  fs.writeFileSync(paths.successFile, '');\n  deleteFileIfExists(paths.errorFile);\n}\n\n/**\n * Mark download as failed with error message\n */\nfunction markDownloadError(paths: DownloadStatePaths, errorMessage: string): void {\n  ensureRootDirExists(paths.rootDir);\n  fs.writeFileSync(paths.errorFile, errorMessage);\n}\n\n/**\n * Clean up the downloading flag file\n */\nfunction cleanupDownloadingFlag(paths: DownloadStatePaths): void {\n  deleteFileIfExists(paths.downloadingFile);\n}\n\n/**\n * Prepare root directory for download by cleaning and creating it\n */\nfunction prepareRootDir(paths: DownloadStatePaths): void {\n  if (fs.existsSync(paths.rootDir)) {\n    fs.rmSync(paths.rootDir, { recursive: true, force: true });\n  }\n  fs.mkdirSync(paths.rootDir, { recursive: true });\n}\n\n/**\n * Utility function to safely delete a file if it exists\n */\nfunction deleteFileIfExists(filePath: string): void {\n  if (fs.existsSync(filePath)) {\n    fs.unlinkSync(filePath);\n  }\n}\n\n/**\n * Utility function for sleeping/waiting\n */\nfunction sleep(ms: number): Promise<void> {\n  return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\n/**\n * Check if this is the primary worker responsible for downloading\n */\nfunction isPrimaryWorker(): boolean {\n  return process.env.TEST_PARALLEL_INDEX === '0';\n}\n\n/**\n * Wait for the primary worker to complete the download\n */\nasync function waitForDownloadCompletion(walletId: WalletIdOptions, paths: DownloadStatePaths): Promise<void> {\n  while (!isDownloadComplete(paths)) {\n    if (hasDownloadError(paths)) {\n      const errorMessage = getErrorMessage(paths) || 'Unknown error';\n      throw new Error(`Primary worker failed to download ${walletId}: ${errorMessage}`);\n    }\n\n    // eslint-disable-next-line no-console\n    console.info(`Waiting for primary worker to download ${walletId}...`);\n    await sleep(DOWNLOAD_CONFIG.pollIntervalMs);\n  }\n}\n\n/**\n * Handle download errors by logging and marking the error state\n */\nfunction handleDownloadError(paths: DownloadStatePaths, error: unknown): void {\n  const errorMessage = error instanceof Error ? error.message : String(error);\n  markDownloadError(paths, errorMessage);\n}\n\nexport default createWalletDownloader;\n","import { ElementHandle, Page } from 'playwright-core';\n\nexport const getElementByContent = (page: Page, text: string, type = '*'): Promise<ElementHandle | null> =>\n  page.waitForSelector(`//${type}[contains(text(), '${text}')]`);\n\nexport const getInputByLabel = (\n  page: Page,\n  text: string,\n  excludeSpan = false,\n  timeout = 2000,\n): Promise<ElementHandle> =>\n  page.waitForSelector(\n    [\n      `//label[contains(.,'${text}')]/following-sibling::textarea`,\n      `//label[contains(.,'${text}')]/following-sibling::*//input`,\n      `//h6[contains(.,'${text}')]/parent::node()/parent::node()/following-sibling::input`,\n      `//h6[contains(.,'${text}')]/parent::node()/parent::node()/following-sibling::*//input`,\n      ...(!excludeSpan\n        ? [\n            `//span[contains(.,'${text}')]/parent::node()/parent::node()/following-sibling::*//input`,\n            `//span[contains(.,'${text}')]/following-sibling::*//input`,\n          ]\n        : []),\n    ].join('|'),\n    { timeout },\n  );\n","import { Page } from 'playwright-core';\nimport { Step, WalletOptions } from '../wallets/wallets';\nimport { getElementByContent, getInputByLabel } from './selectors';\n\nexport const waitForChromeState = async (page: Page): Promise<void> => {\n  await page.waitForTimeout(3000);\n};\n\nexport const clickOnElement = async (page: Page, text: string, type?: string): Promise<void> => {\n  const element = await getElementByContent(page, text, type);\n  await element.click();\n};\n\nexport const clickOnButton = async (page: Page, text: string): Promise<void> => {\n  await page.getByRole('button', { name: text, exact: true }).click();\n};\n\n/**\n *\n * @param page\n * @param label\n * @param text\n * @param clear\n * @param excludeSpan\n * @param optional\n * @returns true if found and updated, false otherwise\n */\nexport const typeOnInputField = async (\n  page: Page,\n  label: string,\n  text: string,\n  clear = false,\n  excludeSpan = false,\n  optional = false,\n): Promise<boolean> => {\n  let input;\n  try {\n    input = await getInputByLabel(page, label, excludeSpan, 5000);\n  } catch (e) {\n    if (optional) return false;\n    throw e;\n  }\n\n  if (clear)\n    await page.evaluate((node) => {\n      node.value = '';\n    }, input);\n  await input.type(text);\n  return true;\n};\n\nexport const performPopupAction = async (page: Page, action: (popup: Page) => Promise<void>): Promise<void> => {\n  const popup = await page.context().waitForEvent('page'); // Wait for the popup to show up\n\n  await action(popup);\n  if (!popup.isClosed()) await popup.waitForEvent('close');\n};\n\nexport const performSetup =\n  (page: Page, defaultSteps: Step<WalletOptions>[]) =>\n  async <Options = WalletOptions>(options?: Options, steps: Step<Options>[] = defaultSteps): Promise<void> => {\n    for (const step of steps) {\n      await step(page, options);\n    }\n  };\n","import type { Page } from 'playwright-core';\nimport type { AddNetwork, AddToken, Dappwright, OfficialOptions, TransactionOptions, UpdateNetworkRpc } from '../types';\nimport type { Step, WalletIdOptions, WalletOptions } from './wallets';\n\nexport default abstract class Wallet implements Dappwright {\n  version: string;\n  page: Page;\n\n  constructor(page: Page) {\n    this.page = page;\n  }\n\n  // Name of the wallet\n  static id: WalletIdOptions;\n  static recommendedVersion: string;\n  static releasesUrl: string;\n  static homePath: string;\n\n  // Extension downloader\n  static download: (options: OfficialOptions) => Promise<string>;\n\n  // Setup\n  abstract setup: (options?: WalletOptions, steps?: Step<WalletOptions>[]) => Promise<void>;\n  abstract defaultSetupSteps: Step<WalletOptions>[];\n\n  // Wallet actions\n  abstract addNetwork: (options: AddNetwork) => Promise<void>;\n  abstract addToken: (options: AddToken) => Promise<void>;\n  abstract approve: () => Promise<void>;\n  abstract createAccount: (name?: string) => Promise<void>;\n  abstract confirmNetworkSwitch: () => Promise<void>;\n  abstract confirmTransaction: (options?: TransactionOptions) => Promise<void>;\n  abstract countAccounts: () => Promise<number>;\n  abstract deleteAccount: (name: string) => Promise<void>;\n  abstract deleteNetwork: (name: string) => Promise<void>;\n  abstract getTokenBalance: (tokenSymbol: string) => Promise<number>;\n  abstract hasNetwork: (name: string) => Promise<boolean>;\n  abstract importPK: (pk: string) => Promise<void>;\n  abstract lock: () => Promise<void>;\n  abstract reject: () => Promise<void>;\n  abstract sign: () => Promise<void>;\n  abstract signin: () => Promise<void>;\n  abstract switchAccount: (name: string) => Promise<void>;\n  abstract switchNetwork: (network: string) => Promise<void>;\n  abstract unlock: (password?: string) => Promise<void>;\n  abstract updateNetworkRpc: (options: UpdateNetworkRpc) => Promise<void>;\n}\n","import { Page } from 'playwright-core';\nimport { waitForChromeState } from '../../../helpers';\n\nexport const countAccounts = (page: Page) => async (): Promise<number> => {\n  await page.getByTestId('wallet-switcher--dropdown').click();\n  const count = await page.locator('//*[@data-testid=\"wallet-switcher--dropdown\"]/*/*[2]/*').count();\n  await page.getByTestId('wallet-switcher--dropdown').click();\n  return count;\n};\n\nexport const createAccount =\n  (page: Page) =>\n  async (name?: string): Promise<void> => {\n    if (name) {\n      // eslint-disable-next-line no-console\n      console.warn('parameter \"name\" is not supported for Coinbase');\n    }\n\n    await page.getByTestId('portfolio-header--switcher-cell-pressable').click();\n    await page.getByTestId('wallet-switcher--manage').click();\n    await page.getByTestId('manage-wallets-account-item--action-cell-pressable').click();\n\n    // Help prompt appears once\n    try {\n      await page.getByTestId('add-new-wallet--continue').click({ timeout: 2000 });\n    } catch {\n      // Ignore missing help prompt\n    }\n\n    await waitForChromeState(page);\n  };\n\nexport const switchAccount =\n  (page: Page) =>\n  async (name: string): Promise<void> => {\n    await page.getByTestId('portfolio-header--switcher-cell-pressable').click();\n\n    const nameRegex = new RegExp(`${name} \\\\$`);\n    await page.getByRole('button', { name: nameRegex }).click();\n  };\n\nexport const deleteAccount = async (_: string): Promise<void> => {\n  // eslint-disable-next-line no-console\n  console.warn('deleteAccount not implemented - Coinbase does not support importing/removing additional private keys');\n};\n\nexport const importPK = async (_: string): Promise<void> => {\n  // eslint-disable-next-line no-console\n  console.warn('importPK not implemented - Coinbase does not support importing/removing private keys');\n};\n","import { Page } from 'playwright-core';\n\nexport const goHome = async (page: Page): Promise<void> => {\n  await page.getByTestId('portfolio-navigation-link').click();\n};\n\nexport const navigateHome = async (page: Page): Promise<void> => {\n  await page.goto(page.url().split('?')[0]);\n};\n","import { Page } from 'playwright-core';\nimport { waitForChromeState } from '../../../helpers';\nimport { AddNetwork, UpdateNetworkRpc } from '../../../types';\nimport { goHome } from './helpers';\n\nexport const addNetwork =\n  (page: Page) =>\n  async (options: AddNetwork): Promise<void> => {\n    await page.getByTestId('settings-navigation-link').click();\n    await page.getByTestId('network-setting-cell-pressable').click();\n    await page.getByTestId('add-custom-network').click();\n    await page.getByTestId('custom-network-name-input').fill(options.networkName);\n    await page.getByTestId('custom-network-rpc-url-input').fill(options.rpc);\n    await page.getByTestId('custom-network-chain-id-input').fill(options.chainId.toString());\n    await page.getByTestId('custom-network-currency-symbol-input').fill(options.symbol);\n    await page.getByTestId('custom-network-save').click();\n\n    // Check for error messages\n    let errorNode;\n    try {\n      errorNode = await page.waitForSelector('//span[@data-testid=\"text-input-error-label\"]', {\n        timeout: 50,\n      });\n    } catch {\n      // No errors found\n    }\n\n    if (errorNode) {\n      const errorMessage = await errorNode.textContent();\n      throw new SyntaxError(errorMessage);\n    }\n\n    await waitForChromeState(page);\n    await goHome(page);\n  };\n\nexport const deleteNetwork =\n  (page: Page) =>\n  async (name: string): Promise<void> => {\n    await page.getByTestId('settings-navigation-link').click();\n    await page.getByTestId('network-setting-cell-pressable').click();\n\n    // Search for network then click on the first result\n    await page.getByTestId('network-list-search').fill(name);\n    await (await page.waitForSelector('//div[@data-testid=\"list-\"][1]//button')).click();\n\n    await page.getByTestId('custom-network-delete').click();\n    await goHome(page);\n  };\n\nexport const hasNetwork =\n  (page: Page) =>\n  async (name: string): Promise<boolean> => {\n    await page.getByTestId('settings-navigation-link').click();\n    await page.getByTestId('network-setting').click();\n    await page.getByTestId('network-list-search').fill(name);\n    const networkIsListed = await page.isVisible('//div[@data-testid=\"list-\"][1]//button');\n    await goHome(page);\n    return networkIsListed;\n  };\n\nexport const switchNetwork = async (_: string): Promise<void> => {\n  // eslint-disable-next-line no-console\n  console.warn('switchNetwork not implemented');\n};\n\n// TODO: Cannot implement until verified coinbase wallet bug is fixed.\nexport const confirmNetworkSwitch = async (): Promise<void> => {\n  // eslint-disable-next-line no-console\n  console.warn('confirmNetworkSwitch not implemented');\n};\n\nexport const updateNetworkRpc = async (_: UpdateNetworkRpc): Promise<void> => {\n  // eslint-disable-next-line no-console\n  console.warn('updateNetworkRpc not implemented - Coinbase uses different network management');\n};\n","import { Page } from 'playwright-core';\nimport { waitForChromeState } from '../../../helpers';\nimport { WalletOptions } from '../../wallets';\nimport { goHome } from './helpers';\n\nexport async function getStarted(\n  page: Page,\n  {\n    seed = 'already turtle birth enroll since owner keep patch skirt drift any dinner',\n    password = 'password1234!!!!',\n  }: WalletOptions,\n): Promise<void> {\n  // Welcome screen\n  await page.getByTestId('btn-import-existing-wallet').click();\n\n  // Import Wallet\n  await page.getByTestId('btn-import-recovery-phrase').click();\n  await page.getByRole('button', { name: 'Acknowledge' }).click();\n  await page.getByTestId('secret-input').fill(seed);\n  await page.getByTestId('btn-import-wallet').click();\n  await page.getByTestId('setPassword').fill(password);\n  await page.getByTestId('setPasswordVerify').fill(password);\n  await page.getByTestId('terms-and-privacy-policy').check();\n  await page.getByTestId('btn-password-continue').click();\n\n  // Allow extension state/settings to settle\n  await waitForChromeState(page);\n}\n\nexport const signin = async (): Promise<void> => {\n  // eslint-disable-next-line no-console\n  console.warn('signin not implemented');\n};\n\nexport const lock = (page: Page) => async (): Promise<void> => {\n  await page.getByTestId('settings-navigation-link').click();\n  await page.getByTestId('lock-wallet-button').click();\n};\n\nexport const unlock =\n  (page: Page) =>\n  async (password = 'password1234!!!!'): Promise<void> => {\n    // last() because it seems to be a rendering issue of some sort\n    await page.getByTestId('unlock-with-password').last().fill(password);\n    await page.getByTestId('unlock-wallet-button').last().click();\n\n    // Go back home since wallet returns to last visited page when unlocked.\n    await goHome(page);\n\n    // Wait for homescreen data to load\n    await page.waitForSelector(\"//div[@data-testid='asset-list']//*[not(text='')]\", { timeout: 10000 });\n  };\n","import { Locator, Page } from 'playwright-core';\nimport { AddToken } from '../../../types';\n\nexport const getTokenBalance =\n  (page: Page) =>\n  async (tokenSymbol: string): Promise<number> => {\n    const tokenValueRegex = new RegExp(String.raw` ${tokenSymbol}`);\n\n    const readFromCryptoTab = async (): Promise<Locator | undefined> => {\n      await page.bringToFront();\n      await page.getByTestId('portfolio-selector-nav-tabLabel--crypto').click();\n      const tokenItem = page.getByTestId(/asset-item.*cell-pressable/).filter({\n        hasText: tokenValueRegex,\n      });\n\n      await page.waitForTimeout(500);\n\n      return (await tokenItem.isVisible()) ? tokenItem : null;\n    };\n\n    const readFromTestnetTab = async (): Promise<Locator | undefined> => {\n      await page.getByTestId('portfolio-selector-nav-tabLabel--testnet').click();\n\n      const tokenItem = page.getByTestId(/asset-item.*cell-pressable/).filter({\n        hasText: tokenValueRegex,\n      });\n\n      await page.waitForTimeout(500);\n\n      return (await tokenItem.isVisible()) ? tokenItem : null;\n    };\n\n    const readAttempts = [readFromCryptoTab, readFromTestnetTab];\n\n    let button: Locator | undefined;\n    for (const readAttempt of readAttempts) {\n      button = await readAttempt();\n    }\n\n    if (!button) throw new Error(`Token ${tokenSymbol} not found`);\n\n    const text = await button.textContent();\n    const currencyAmount = text.replaceAll(/ |,/g, '').split(tokenSymbol)[2];\n\n    return currencyAmount ? Number(currencyAmount) : 0;\n  };\n\nexport const addToken = async (_: AddToken): Promise<void> => {\n  // eslint-disable-next-line no-console\n  console.warn('addToken not implemented - Coinbase does not support adding custom tokens');\n};\n","import { Page } from 'playwright-core';\nimport { performPopupAction } from '../../../helpers';\n\nexport const approve = (page: Page) => async (): Promise<void> => {\n  await performPopupAction(page, async (popup: Page) => {\n    await popup.getByTestId('allow-authorize-button').click();\n  });\n};\n\nexport const reject = (page: Page) => async (): Promise<void> => {\n  await performPopupAction(page, async (popup: Page) => {\n    const denyButton = popup.getByTestId('deny-authorize-button');\n    const cancelButton = popup.getByTestId('request-cancel-button');\n\n    await denyButton.or(cancelButton).click();\n  });\n};\n\nexport const sign = (page: Page) => async (): Promise<void> => {\n  await performPopupAction(page, async (popup: Page) => {\n    await popup.getByTestId('sign-message').click();\n  });\n};\n\nexport const confirmTransaction = (page: Page) => async (): Promise<void> => {\n  await performPopupAction(page, async (popup: Page): Promise<void> => {\n    try {\n      // Help prompt appears once\n      await (await popup.waitForSelector(\"text='Got it'\", { timeout: 1000 })).click();\n    } catch {\n      // Ignore missing help prompt\n    }\n\n    await popup.getByTestId('request-confirm-button').click();\n  });\n};\n","import downloader from '../../downloader/downloader';\nimport { performSetup } from '../../helpers';\nimport Wallet from '../wallet';\nimport { Step, WalletIdOptions, WalletOptions } from '../wallets';\nimport {\n  addNetwork,\n  addToken,\n  approve,\n  confirmNetworkSwitch,\n  confirmTransaction,\n  countAccounts,\n  createAccount,\n  deleteAccount,\n  deleteNetwork,\n  getStarted,\n  getTokenBalance,\n  hasNetwork,\n  importPK,\n  lock,\n  reject,\n  sign,\n  signin,\n  switchAccount,\n  switchNetwork,\n  unlock,\n  updateNetworkRpc,\n} from './actions';\nimport { navigateHome } from './actions/helpers';\n\nexport class CoinbaseWallet extends Wallet {\n  static id = 'coinbase' as WalletIdOptions;\n  static recommendedVersion = '3.136.0';\n  static releasesUrl = 'https://api.github.com/repos/TenKeyLabs/coinbase-wallet-archive/releases';\n  static homePath = '/index.html';\n\n  options: WalletOptions;\n\n  // Extension Downloader\n  static download = downloader(this.id, this.releasesUrl, this.recommendedVersion);\n\n  // Setup\n  defaultSetupSteps: Step<WalletOptions>[] = [getStarted, navigateHome];\n  setup = performSetup(this.page, this.defaultSetupSteps);\n\n  // Actions\n  addNetwork = addNetwork(this.page);\n  addToken = addToken;\n  approve = approve(this.page);\n  createAccount = createAccount(this.page);\n  confirmNetworkSwitch = confirmNetworkSwitch;\n  confirmTransaction = confirmTransaction(this.page);\n  countAccounts = countAccounts(this.page);\n  deleteAccount = deleteAccount;\n  deleteNetwork = deleteNetwork(this.page);\n  getTokenBalance = getTokenBalance(this.page);\n  hasNetwork = hasNetwork(this.page);\n  importPK = importPK;\n  lock = lock(this.page);\n  reject = reject(this.page);\n  sign = sign(this.page);\n  signin = signin;\n  switchAccount = switchAccount(this.page);\n  switchNetwork = switchNetwork;\n  unlock = unlock(this.page);\n  updateNetworkRpc = updateNetworkRpc;\n}\n","import { ElementHandle, Locator, Page } from 'playwright-core';\n\nexport const getSettingsSwitch = (page: Page, text: string): Promise<ElementHandle | null> =>\n  page.waitForSelector([`//span[contains(.,'${text}')]/parent::div/following-sibling::div/label/div`].join('|'));\n\nexport const getErrorMessage = async (page: Page): Promise<string | undefined> => {\n  try {\n    const errorElement = await page.waitForSelector(`.mm-help-text.mm-box--color-error-default`, { timeout: 5000 });\n    return await errorElement.innerText();\n  } catch (_) {\n    return undefined;\n  }\n};\n\nexport const accountList = (page: Page): Locator => {\n  return page.locator('.multichain-account-cell');\n};\n\nexport const accountListItem = (page: Page, name: string): Locator => {\n  return accountList(page).filter({ has: page.getByText(name, { exact: true }) });\n};\n\nconst networkMenuItemRegex = /^network-list-item-(?!options)\\w+:\\S+$/;\nconst networkList = (page: Page): Locator => {\n  return page.getByTestId(networkMenuItemRegex);\n};\n\nexport const networkListItem = (page: Page, name: string): Locator => {\n  return networkList(page).filter({ has: page.getByText(name, { exact: true }) });\n};\n\nexport const findNetworkListItem = async (page: Page, name: string): Promise<Locator> => {\n  const item = networkListItem(page, name);\n  if (await item.isVisible()) return item;\n\n  const popularTab = page.getByRole('tab', { name: 'Popular' });\n  const isPopularSelected = (await popularTab.getAttribute('aria-selected')) === 'true';\n  await page.getByRole('tab', { name: isPopularSelected ? 'Custom' : 'Popular' }).click();\n\n  return item;\n};\n","import { Page } from 'playwright-core';\nimport { getSettingsSwitch } from './selectors';\n\nexport async function goToSettings(metamaskPage: Page): Promise<void> {\n  await openAccountOptionsMenu(metamaskPage);\n  await metamaskPage.getByTestId('global-menu-settings').click();\n}\n\nexport const clickOnSettingsSwitch = async (page: Page, text: string): Promise<void> => {\n  const button = await getSettingsSwitch(page, text);\n  await button.click();\n};\n\nexport const openNetworkDropdown = async (page: Page): Promise<void> => {\n  const networkDropdown = page.getByTestId('sort-by-networks');\n  await networkDropdown.waitFor({ state: 'visible' });\n  await networkDropdown.click();\n};\n\nexport const openNetworkSettings = async (page: Page): Promise<void> => {\n  await openAccountOptionsMenu(page);\n  await page.getByTestId('global-menu-networks').click();\n};\n\nexport const openAccountOptionsMenu = async (page: Page): Promise<void> => {\n  const accountOptionsMenuButton = page.getByTestId('account-options-menu-button');\n  const accountOptionsNotificationButton = page.getByTestId('notifications-tag-counter__unread-dot');\n\n  await accountOptionsMenuButton.or(accountOptionsNotificationButton).first().click();\n};\n\nexport const openAccountMenu = async (page: Page): Promise<void> => {\n  await page.getByTestId('account-menu-icon').click();\n};\n\nexport const clickBackButton = async (page: Page): Promise<void> => {\n  await page.getByRole('button', { name: 'Back' }).click();\n};\n","import { expect } from '@playwright/test';\nimport { Page } from 'playwright-core';\nimport { clickOnButton, typeOnInputField, waitForChromeState } from '../../../helpers';\nimport { accountList, accountListItem, clickBackButton, getErrorMessage, openAccountMenu } from './helpers';\n\nexport const createAccount =\n  (page: Page) =>\n  async (name?: string): Promise<void> => {\n    await page.bringToFront();\n    await openAccountMenu(page);\n\n    const accountCount = await accountList(page).count();\n    await page.getByTestId('add-multichain-account-button').click();\n    await expect(accountList(page)).toHaveCount(accountCount + 1);\n\n    if (name) {\n      await page.getByTestId('multichain-account-cell-end-accessory').last().click();\n      await page.getByLabel('Rename').click();\n      await page.getByTestId('account-name-input').getByRole('textbox').fill(name);\n      await page.getByLabel('Confirm').click();\n    }\n\n    await accountList(page).last().click();\n\n    await waitForChromeState(page);\n  };\n\nexport const deleteAccount =\n  (page: Page) =>\n  async (name: string): Promise<void> => {\n    await page.bringToFront();\n    await openAccountMenu(page);\n\n    await accountListItem(page, name).getByTestId('multichain-account-cell-end-accessory').click();\n    await page.getByLabel('Account details').click();\n    await page.getByTestId('account-details-row-remove-account').click();\n    await page.getByRole('button', { name: 'Remove', exact: true }).click();\n\n    await waitForChromeState(page);\n  };\n\nexport const switchAccount =\n  (page: Page) =>\n  async (name: string): Promise<void> => {\n    await page.bringToFront();\n    await openAccountMenu(page);\n\n    await accountListItem(page, name).click();\n  };\n\nexport const countAccounts = (_: Page) => async (): Promise<number> => {\n  // eslint-disable-next-line no-console\n  console.warn('countAccounts not yet implemented');\n  return -1;\n};\n\nexport const importPk =\n  (page: Page) =>\n  async (privateKey: string): Promise<void> => {\n    await page.bringToFront();\n    await openAccountMenu(page);\n\n    // MetaMask account syncing can take a very long time.\n    await page.getByTestId('account-list-add-wallet-button').click();\n    await page.getByTestId('add-wallet-modal-import-account').click();\n\n    await typeOnInputField(page, 'Enter your private key string here:', privateKey);\n    await page.getByTestId('import-account-confirm-button').click();\n\n    const errorMessage = await getErrorMessage(page);\n    if (errorMessage) {\n      await clickOnButton(page, 'Cancel');\n      await clickBackButton(page);\n      throw new SyntaxError(errorMessage);\n    }\n\n    await clickBackButton(page);\n  };\n","import { Page } from 'playwright-core';\n\nimport { waitForChromeState } from '../../../helpers';\nimport { WalletOptions } from '../../wallets';\nimport { clickOnSettingsSwitch, goToSettings } from '../actions/helpers';\n\nexport async function importAccount(\n  metamaskPage: Page,\n  { seed = 'already turtle birth enroll since owner keep patch skirt drift any dinner' }: WalletOptions,\n): Promise<void> {\n  await metamaskPage.getByTestId('onboarding-import-wallet').click();\n  await metamaskPage.getByTestId('onboarding-import-with-srp-button').click();\n  await metamaskPage.getByTestId('srp-input-import__srp-note').pressSequentially(seed, { delay: 30 });\n  await metamaskPage.getByTestId('import-srp-confirm').click();\n}\n\nexport async function createPassword(metamaskPage: Page, { password = 'password1234' }: WalletOptions): Promise<void> {\n  await metamaskPage.getByTestId('create-password-new-input').fill(password);\n  await metamaskPage.getByTestId('create-password-confirm-input').fill(password);\n  await metamaskPage.getByTestId('create-password-terms').click();\n  await metamaskPage.getByTestId('create-password-submit').click();\n}\n\nexport async function doOnboarding(metamaskPage: Page): Promise<void> {\n  await metamaskPage.getByTestId('metametrics-checkbox').click();\n  await metamaskPage.getByTestId('metametrics-i-agree').click();\n  await metamaskPage.getByTestId('manage-default-settings').click();\n  await metamaskPage.getByTestId('category-item-General').click();\n  await metamaskPage.getByTestId('backup-and-sync-toggle-container').click();\n  await metamaskPage.getByTestId('category-back-button').click();\n  await metamaskPage.getByTestId('privacy-settings-back-button').click();\n  await metamaskPage.getByTestId('onboarding-complete-done').click();\n  await waitForChromeState(metamaskPage);\n  await metamaskPage.goto(metamaskPage.url().split('#')[0]);\n}\n\nexport const closePopup = async (page: Page): Promise<void> => {\n  /* For some reason popup deletes close button and then create new one (react stuff)\n   * hacky solution can be found here => https://github.com/puppeteer/puppeteer/issues/3496 */\n  await new Promise((resolve) => setTimeout(resolve, 1000));\n  if (await page.getByTestId('popover-close').isVisible()) {\n    await page.getByTestId('popover-close').click();\n  }\n  const notNowButton = page.getByRole('button', { name: 'Not now' });\n  if (await notNowButton.isVisible()) {\n    await notNowButton.click();\n  }\n};\n\nexport async function adjustSettings(metamaskPage: Page): Promise<void> {\n  await goToSettings(metamaskPage);\n\n  await metamaskPage.locator('.tab-bar__tab', { hasText: 'Advanced' }).click();\n\n  await clickOnSettingsSwitch(metamaskPage, 'Show test networks');\n  await clickOnSettingsSwitch(metamaskPage, 'Show extension in full-size view');\n  await metamaskPage.getByRole('button', { name: 'Close' }).click();\n\n  await waitForChromeState(metamaskPage);\n  await metamaskPage.reload({ waitUntil: 'domcontentloaded' });\n}\n","import { Page } from 'playwright-core';\nimport { clickOnButton, clickOnElement, performPopupAction, waitForChromeState } from '../../../helpers';\nimport { AddNetwork, UpdateNetworkRpc } from '../../../types';\nimport { closePopup } from '../setup/setupActions';\nimport {\n  findNetworkListItem,\n  getErrorMessage,\n  networkListItem,\n  openNetworkDropdown,\n  openNetworkSettings,\n} from './helpers';\n\nexport const switchNetwork =\n  (page: Page) =>\n  async (network = 'main'): Promise<void> => {\n    await page.bringToFront();\n    await openNetworkDropdown(page);\n\n    const item = await findNetworkListItem(page, network);\n    await item.click();\n\n    await waitForChromeState(page);\n  };\n\nexport const addNetwork =\n  (page: Page) =>\n  async ({ networkName, rpc, chainId, symbol }: AddNetwork): Promise<void> => {\n    await openNetworkDropdown(page);\n    await clickOnElement(page, 'Custom');\n    await clickOnButton(page, 'Add custom network');\n\n    await page.getByTestId('network-form-network-name').fill(networkName);\n    await page.getByTestId('test-add-rpc-drop-down').click();\n    await clickOnButton(page, 'Add RPC URL');\n    await page.getByTestId('rpc-url-input-test').fill(rpc);\n    await clickOnButton(page, 'Add URL');\n    await page.getByTestId('network-form-chain-id').fill(String(chainId));\n    await page.getByTestId('network-form-ticker-input').fill(symbol);\n\n    const errorMessage = await getErrorMessage(page);\n    if (errorMessage) {\n      await page.getByRole('dialog').getByRole('button', { name: 'Close' }).click();\n      throw new SyntaxError(errorMessage);\n    }\n\n    await clickOnButton(page, 'Save');\n    await page.getByTestId('modal-header-close-button').click();\n\n    // This popup is fairly random in terms of timing\n    // and can show before switch to network click is gone\n    await closePopup(page);\n\n    await waitForChromeState(page);\n    await switchNetwork(page)(networkName);\n  };\n\nexport const deleteNetwork =\n  (page: Page) =>\n  async (name: string): Promise<void> => {\n    await page.bringToFront();\n\n    await openNetworkSettings(page);\n    await networkListItem(page, name)\n      .getByTestId(/network-list-item-options-button/)\n      .click();\n\n    await page.getByTestId('network-list-item-options-delete').click();\n    await clickOnButton(page, 'Delete');\n\n    await waitForChromeState(page);\n  };\n\nexport const hasNetwork =\n  (page: Page) =>\n  async (name: string): Promise<boolean> => {\n    await page.bringToFront();\n    await openNetworkSettings(page);\n\n    const found = await networkListItem(page, name).isVisible();\n    await page.getByRole('dialog').getByRole('button', { name: 'Close' }).first().click();\n\n    return found;\n  };\n\nexport const confirmNetworkSwitch = (page: Page) => async (): Promise<void> => {\n  await performPopupAction(page, async (popup) => {\n    await popup.getByTestId('page-container-footer-next').click();\n    await waitForChromeState(page);\n  });\n};\n\nexport const updateNetworkRpc =\n  (page: Page) =>\n  async ({ chainId, rpc }: UpdateNetworkRpc): Promise<void> => {\n    await page.bringToFront();\n    await openNetworkSettings(page);\n\n    await clickOnButton(page, 'Add a custom network');\n\n    await page.getByTestId('network-form-chain-id').fill(String(chainId));\n    await clickOnButton(page, 'edit the original network');\n\n    await page.getByTestId('test-add-rpc-drop-down').click();\n    await clickOnButton(page, 'Add RPC URL');\n    await page.getByTestId('rpc-url-input-test').fill(rpc);\n    await clickOnButton(page, 'Add URL');\n\n    await clickOnButton(page, 'Save');\n  };\n","import { Page } from 'playwright-core';\nimport { performPopupAction, waitForChromeState } from '../../../helpers';\nimport { TransactionOptions } from '../../../types';\n\nexport const approve = (page: Page) => async (): Promise<void> => {\n  await performPopupAction(page, async (popup) => {\n    await clickConfirm(popup);\n    await waitForChromeState(page);\n  });\n};\n\nexport const clickConfirm = async (popup: Page): Promise<void> => {\n  await popup.getByTestId('confirm-btn').click();\n};\n\nexport const reject = (page: Page) => async (): Promise<void> => {\n  await performPopupAction(page, async (popup) => {\n    const cancelButton = popup.getByTestId('confirm-footer-cancel-button');\n    const rejectButton = popup.getByTestId('cancel-btn');\n\n    await cancelButton.or(rejectButton).click();\n  });\n};\n\nexport const sign = (page: Page) => async (): Promise<void> => {\n  await performPopupAction(page, async (popup) => {\n    await popup.bringToFront();\n    await popup.reload();\n\n    await popup.getByTestId('confirm-footer-button').click();\n  });\n};\n\nexport const confirmTransaction =\n  (page: Page) =>\n  async (options?: TransactionOptions): Promise<void> => {\n    await performPopupAction(page, async (popup) => {\n      if (options) {\n        await popup.getByTestId('edit-gas-fee-icon').click();\n        await popup.getByTestId('gas-option-advanced').click();\n\n        if (options.gas) {\n          await popup.getByTestId('max-base-fee-input').getByRole('textbox').fill(String(options.gas));\n        }\n\n        if (options.priority) {\n          await popup.getByTestId('priority-fee-input').getByRole('textbox').fill(String(options.priority));\n        }\n\n        if (options.gasLimit) {\n          await popup.getByTestId('gas-input').getByRole('textbox').fill(String(options.gasLimit));\n        }\n\n        await popup.getByTestId('gas-fee-modal-save-button').click();\n      }\n\n      await popup.getByTestId('confirm-footer-button').click();\n    });\n  };\n","import { Page } from 'playwright-core';\nimport { performPopupAction, waitForChromeState } from '../../../helpers';\nimport { closePopup } from '../setup/setupActions';\nimport { openAccountOptionsMenu } from './helpers';\nimport { clickConfirm } from './transaction';\n\nexport const lock = (page: Page) => async (): Promise<void> => {\n  await page.bringToFront();\n\n  await openAccountOptionsMenu(page);\n  await page.getByTestId('global-menu-lock').click();\n};\n\nexport const unlock =\n  (page: Page) =>\n  async (password = 'password1234'): Promise<void> => {\n    await page.bringToFront();\n\n    await page.getByTestId('unlock-password').fill(password);\n    await page.getByTestId('unlock-submit').click();\n\n    await closePopup(page);\n  };\n\nexport const signin = (page: Page) => async (): Promise<void> => {\n  await performPopupAction(page, async (popup) => {\n    await popup.waitForURL(/(connect)|(signature-request)/);\n\n    const signinTextVisible = await popup.getByText(/Connect this website/).isVisible();\n    if (signinTextVisible) {\n      await clickConfirm(popup);\n    }\n\n    const signInButton = popup.getByTestId('confirm-footer-button');\n    await signInButton.scrollIntoViewIfNeeded();\n    await signInButton.click();\n\n    await waitForChromeState(page);\n  });\n};\n","import { Page } from 'playwright-core';\nimport { AddToken } from '../../../types';\n\nexport const addToken =\n  (page: Page) =>\n  async ({ tokenAddress, symbol }: AddToken): Promise<void> => {\n    await page.bringToFront();\n\n    await page.getByTestId('asset-list-control-bar-action-button').click();\n    await page.getByTestId('importTokens__button').click();\n    await page.getByTestId('import-tokens-modal-custom-address').fill(tokenAddress);\n\n    await page.waitForTimeout(500);\n\n    if (symbol) {\n      await page.getByTestId('import-tokens-modal-custom-symbol').fill(symbol);\n    }\n\n    await page.getByTestId('import-tokens-button-next').click();\n    await page.getByTestId('import-tokens-modal-import-button').click();\n  };\n\nexport const getTokenBalance =\n  (page: Page) =>\n  async (tokenSymbol: string): Promise<number> => {\n    await page.bringToFront();\n    await page.waitForTimeout(1000);\n\n    const tokenValueRegex = new RegExp(String.raw`\\d ${tokenSymbol}$`);\n    const valueElement = page.getByTestId('multichain-token-list-item-value').filter({ hasText: tokenValueRegex });\n\n    if (!(await valueElement.isVisible())) {\n      throw new Error(`Token ${tokenSymbol} not found`);\n    }\n\n    const valueText = await valueElement.textContent();\n    const balance = valueText.split(' ')[0].replace(/,/, '');\n\n    return parseFloat(balance);\n  };\n","import downloader from '../../downloader/downloader';\nimport { performSetup } from '../../helpers';\nimport Wallet from '../wallet';\nimport type { Step, WalletIdOptions, WalletOptions } from '../wallets';\nimport {\n  addNetwork,\n  addToken,\n  approve,\n  confirmNetworkSwitch,\n  confirmTransaction,\n  countAccounts,\n  createAccount,\n  deleteAccount,\n  deleteNetwork,\n  getTokenBalance,\n  hasNetwork,\n  importPk,\n  lock,\n  reject,\n  sign,\n  signin,\n  switchAccount,\n  switchNetwork,\n  unlock,\n  updateNetworkRpc,\n} from './actions';\nimport { adjustSettings, closePopup, createPassword, doOnboarding, importAccount } from './setup/setupActions';\n\nexport class MetaMaskWallet extends Wallet {\n  static id = 'metamask' as WalletIdOptions;\n  static recommendedVersion = '13.17.0';\n  static releasesUrl = 'https://api.github.com/repos/metamask/metamask-extension/releases';\n  static homePath = '/home.html';\n\n  options: WalletOptions;\n\n  // Extension Downloader\n  static download = downloader(this.id, this.releasesUrl, this.recommendedVersion);\n\n  // Setup\n  defaultSetupSteps: Step<WalletOptions>[] = [importAccount, createPassword, doOnboarding, closePopup, adjustSettings];\n  setup = performSetup(this.page, this.defaultSetupSteps);\n\n  // Actions\n  addNetwork = addNetwork(this.page);\n  addToken = addToken(this.page);\n  approve = approve(this.page);\n  createAccount = createAccount(this.page);\n  confirmNetworkSwitch = confirmNetworkSwitch(this.page);\n  confirmTransaction = confirmTransaction(this.page);\n  countAccounts = countAccounts(this.page);\n  deleteAccount = deleteAccount(this.page);\n  deleteNetwork = deleteNetwork(this.page);\n  getTokenBalance = getTokenBalance(this.page);\n  hasNetwork = hasNetwork(this.page);\n  importPK = importPk(this.page);\n  lock = lock(this.page);\n  reject = reject(this.page);\n  sign = sign(this.page);\n  signin = signin(this.page);\n  switchAccount = switchAccount(this.page);\n  switchNetwork = switchNetwork(this.page);\n  unlock = unlock(this.page);\n  updateNetworkRpc = updateNetworkRpc(this.page);\n}\n","import { BrowserContext, Page } from 'playwright-core';\nimport { EXTENSION_ID } from '../downloader/constants';\nimport { CoinbaseWallet } from './coinbase/coinbase';\nimport { MetaMaskWallet } from './metamask/metamask';\n\nexport type WalletTypes = typeof CoinbaseWallet | typeof MetaMaskWallet;\nconst WALLETS: WalletTypes[] = [CoinbaseWallet, MetaMaskWallet];\n\nexport type Step<Options> = (page: Page, options?: Options) => Promise<void>;\nexport type WalletIdOptions = 'metamask' | 'coinbase';\nexport type WalletOptions = {\n  seed?: string;\n  password?: string;\n  showTestNets?: boolean;\n};\n\nexport const getWalletType = (id: WalletIdOptions): WalletTypes => {\n  const walletType = WALLETS.find((wallet) => {\n    return wallet.id === id;\n  });\n\n  if (!walletType) throw new Error(`Wallet ${id} not supported`);\n\n  return walletType;\n};\n\nexport const closeWalletSetupPopup = (id: WalletIdOptions, browserContext: BrowserContext): void => {\n  browserContext.on('page', async (page) => {\n    if (page.url() === walletHomeUrl(id)) {\n      await page.close();\n    }\n  });\n};\n\nexport const getWallet = async (id: WalletIdOptions, browserContext: BrowserContext): Promise<MetaMaskWallet> => {\n  const wallet = getWalletType(id);\n  const page = browserContext.pages()[0];\n\n  if (page.url() === 'about:blank') {\n    await page.goto(walletHomeUrl(id));\n  }\n\n  return new wallet(page);\n};\n\nconst walletHomeUrl = (id: WalletIdOptions): string => {\n  const wallet = getWalletType(id);\n  return `chrome-extension://${EXTENSION_ID}${wallet.homePath}`;\n};\n","import fs from 'fs';\nimport os from 'os';\nimport * as path from 'path';\nimport playwright, { BrowserContext } from 'playwright-core';\n\nimport { DappwrightLaunchResponse, OfficialOptions } from './types';\nimport { closeWalletSetupPopup, getWallet, getWalletType, WalletTypes } from './wallets/wallets';\n\n/**\n * Launch Playwright chromium instance with wallet plugin installed\n * */\n\nexport async function launch(browserName: string, options: OfficialOptions): Promise<DappwrightLaunchResponse> {\n  const { ...officialOptions } = options;\n  const wallet = getWalletType(officialOptions.wallet);\n  if (!wallet) throw new Error('Wallet not supported');\n\n  const userDataDir = await resetBrowserSession(options);\n  const browserContext = await launchBrowser(wallet, userDataDir, officialOptions);\n\n  closeWalletSetupPopup(wallet.id, browserContext);\n\n  return {\n    wallet: await getWallet(wallet.id, browserContext),\n    browserContext,\n  };\n}\n\nasync function resetBrowserSession(options: OfficialOptions): Promise<string> {\n  const workerIndex = process.env.TEST_WORKER_INDEX || '0';\n  const sessionPath = path.resolve(os.tmpdir(), 'dappwright', 'session');\n  const userDataDir = path.join(sessionPath, options.wallet, workerIndex);\n\n  await fs.promises.rm(userDataDir, { recursive: true, force: true });\n\n  const prefsDir = path.join(userDataDir, 'Default');\n  await fs.promises.mkdir(prefsDir, { recursive: true });\n  await fs.promises.writeFile(\n    path.join(prefsDir, 'Preferences'),\n    // eslint-disable-next-line @typescript-eslint/naming-convention\n    JSON.stringify({ intl: { accept_languages: 'en', selected_languages: 'en' } }),\n  );\n  return userDataDir;\n}\n\nasync function launchBrowser(\n  wallet: WalletTypes,\n  userDataDir: string,\n  options: OfficialOptions,\n): Promise<BrowserContext> {\n  const extensionPath = await wallet.download(options);\n  const extensionList = [extensionPath].concat(options.additionalExtensions || []);\n  const browserArgs = [\n    `--disable-extensions-except=${extensionList.join(',')}`,\n    `--load-extension=${extensionList.join(',')}`,\n  ];\n\n  if (options.headless != false) browserArgs.push(`--headless=new`);\n  return await playwright.chromium.launchPersistentContext(userDataDir, {\n    headless: false,\n    args: browserArgs,\n  });\n}\n","import { BrowserContext, Page } from 'playwright-core';\nimport { launch } from './launch';\nimport { Dappwright, OfficialOptions } from './types';\nimport { WalletOptions } from './wallets/wallets';\n\nexport const bootstrap = async (\n  browserName: string,\n  { seed, password, showTestNets, ...launchOptions }: OfficialOptions & WalletOptions,\n): Promise<[Dappwright, Page, BrowserContext]> => {\n  const { browserContext, wallet } = await launch(browserName, launchOptions);\n\n  await wallet.setup({ seed, password, showTestNets });\n\n  return [wallet, wallet.page, browserContext];\n};\n","// re-export\n\nimport { bootstrap } from './bootstrap';\nimport { launch } from './launch';\nimport { getWallet } from './wallets/wallets';\n\nconst defaultObject = { bootstrap, launch, getWallet };\nexport default defaultObject;\n\nexport { bootstrap } from './bootstrap';\nexport { launch } from './launch';\nexport * from './types';\nexport { CoinbaseWallet } from './wallets/coinbase/coinbase';\nexport { MetaMaskWallet } from './wallets/metamask/metamask';\nexport { getWallet } from './wallets/wallets';\n"],"names":["EXTENSION_ID","EXTENSION_PUB_KEY","DOWNLOAD_STATE_FILES","downloading","success","error","DOWNLOAD_CONFIG","pollIntervalMs","require$$0","path","downloadDir","walletId","version","resolve","os","tmpdir","replace","extractZip","zipData","destination","zip","StreamZip","async","file","fs","mkdirSync","recursive","extract","editExtensionPubKey","extensionPath","manifestPath","manifest","JSON","parse","readFileSync","key","writeFileSync","stringify","request","url","Promise","get","response","statusCode","redirectRequest","headers","location","on","console","warn","message","getGithubRelease","releasesUrl","reject","tagRegex","RegExp","options","process","env","GITHUB_TOKEN","URL","searchParams","set","toString","body","chunk","data","Array","isArray","result","draft","test","tag_name","asset","assets","name","includes","downloadUrl","browser_download_url","filename","tag","downloadGithubRelease","existsSync","fileLocation","join","createWriteStream","stream","pipe","printVersion","recommendedVersion","log","isNewerVersion","current","comparingWith","currentFragments","split","comparingWithFragments","length","i","Number","createWalletDownloader","downloadWalletExtension","paths","createDownloadStatePaths","info","rootDir","wasDownloaded","isPrimaryWorker","isDownloadComplete","performDownload","waitForDownloadCompletion","prepareRootDir","markDownloadStarted","releaseInfo","walletFolder","dirname","zipPath","markDownloadSuccess","handleDownloadError","cleanupDownloadingFlag","downloadPath","downloadingFile","successFile","errorFile","hasDownloadError","getErrorMessage","ensureRootDirExists","deleteFileIfExists","markDownloadError","errorMessage","rmSync","force","filePath","unlinkSync","sleep","ms","setTimeout","TEST_PARALLEL_INDEX","Error","String","getElementByContent","page","text","type","waitForSelector","getInputByLabel","excludeSpan","timeout","waitForChromeState","waitForTimeout","clickOnElement","element","click","clickOnButton","getByRole","exact","typeOnInputField","label","clear","optional","input","e","evaluate","node","value","performPopupAction","action","popup","context","waitForEvent","isClosed","performSetup","defaultSteps","steps","step","Wallet","constructor","id","homePath","download","countAccounts","getByTestId","count","locator","createAccount","switchAccount","nameRegex","deleteAccount","_","importPK","goHome","navigateHome","goto","addNetwork","fill","networkName","rpc","chainId","symbol","errorNode","textContent","SyntaxError","deleteNetwork","hasNetwork","networkIsListed","isVisible","switchNetwork","confirmNetworkSwitch","updateNetworkRpc","getStarted","seed","password","check","signin","lock","unlock","last","getTokenBalance","tokenSymbol","tokenValueRegex","raw","readFromCryptoTab","bringToFront","tokenItem","filter","hasText","readFromTestnetTab","readAttempts","button","readAttempt","currencyAmount","replaceAll","addToken","approve","denyButton","cancelButton","or","sign","confirmTransaction","CoinbaseWallet","args","defaultSetupSteps","setup","downloader","getSettingsSwitch","errorElement","innerText","undefined","accountList","accountListItem","has","getByText","networkMenuItemRegex","networkList","networkListItem","findNetworkListItem","item","popularTab","isPopularSelected","getAttribute","goToSettings","metamaskPage","openAccountOptionsMenu","clickOnSettingsSwitch","openNetworkDropdown","networkDropdown","waitFor","state","openNetworkSettings","accountOptionsMenuButton","accountOptionsNotificationButton","first","openAccountMenu","clickBackButton","accountCount","expect","toHaveCount","getByLabel","importPk","privateKey","importAccount","pressSequentially","delay","createPassword","doOnboarding","closePopup","notNowButton","adjustSettings","reload","waitUntil","network","found","clickConfirm","rejectButton","gas","priority","gasLimit","waitForURL","signinTextVisible","signInButton","scrollIntoViewIfNeeded","tokenAddress","valueElement","valueText","balance","parseFloat","MetaMaskWallet","WALLETS","getWalletType","walletType","find","wallet","closeWalletSetupPopup","browserContext","walletHomeUrl","close","getWallet","pages","launch","browserName","officialOptions","userDataDir","resetBrowserSession","launchBrowser","workerIndex","TEST_WORKER_INDEX","sessionPath","promises","rm","prefsDir","mkdir","writeFile","intl","accept_languages","selected_languages","extensionList","concat","additionalExtensions","browserArgs","headless","push","playwright","chromium","launchPersistentContext","bootstrap","showTestNets","launchOptions","defaultObject"],"mappings":"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"}