@layerzerolabs/lz-corekit-solana 3.0.2 → 3.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/dist/index.cjs +4 -44
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.mts +1 -12
- package/dist/index.d.ts +1 -12
- package/dist/index.mjs +5 -40
- package/dist/index.mjs.map +1 -1
- package/package.json +4 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# @layerzerolabs/lz-corekit-solana
|
|
2
2
|
|
|
3
|
+
## 3.0.4
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 4b060b6: testnets
|
|
8
|
+
- Updated dependencies [4b060b6]
|
|
9
|
+
- @layerzerolabs/lz-core@3.0.4
|
|
10
|
+
|
|
11
|
+
## 3.0.3
|
|
12
|
+
|
|
13
|
+
### Patch Changes
|
|
14
|
+
|
|
15
|
+
- 49d6081: testnets unichain, hyperliquid
|
|
16
|
+
- Updated dependencies [49d6081]
|
|
17
|
+
- @layerzerolabs/lz-core@3.0.3
|
|
18
|
+
|
|
3
19
|
## 3.0.2
|
|
4
20
|
|
|
5
21
|
### Patch Changes
|
package/dist/index.cjs
CHANGED
|
@@ -2,10 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
var web3_js = require('@solana/web3.js');
|
|
4
4
|
var lzCore = require('@layerzerolabs/lz-core');
|
|
5
|
-
var bytes = require('@ethersproject/bytes');
|
|
6
5
|
var bip39 = require('bip39');
|
|
7
6
|
var ed25519HdKey = require('ed25519-hd-key');
|
|
8
|
-
var secp256k1 = require('@noble/secp256k1');
|
|
9
7
|
|
|
10
8
|
function _interopNamespace(e) {
|
|
11
9
|
if (e && e.__esModule) return e;
|
|
@@ -509,36 +507,16 @@ var SolanaProvider = class _SolanaProvider {
|
|
|
509
507
|
return lzCore.TransactionReceipt.from(response);
|
|
510
508
|
}
|
|
511
509
|
};
|
|
512
|
-
async function signWithECDSA(data, privateKey) {
|
|
513
|
-
const [signature, recoveryId] = await secp256k1.sign(data, privateKey.replace("0x", ""), {
|
|
514
|
-
canonical: true,
|
|
515
|
-
recovered: true,
|
|
516
|
-
der: false
|
|
517
|
-
});
|
|
518
|
-
return {
|
|
519
|
-
signature,
|
|
520
|
-
recoveryId
|
|
521
|
-
};
|
|
522
|
-
}
|
|
523
|
-
function getECDSAPublicKey(privateKey) {
|
|
524
|
-
return bytes.hexlify(secp256k1.getPublicKey(privateKey.replace("0x", "")).subarray(1));
|
|
525
|
-
}
|
|
526
|
-
|
|
527
|
-
// src/signers/solana.ts
|
|
528
510
|
var SolanaSigner = class {
|
|
529
|
-
constructor(keypair
|
|
511
|
+
constructor(keypair) {
|
|
530
512
|
this.keypair = keypair;
|
|
531
|
-
this.ecdsaPrivateKey = ecdsaPrivateKey;
|
|
532
|
-
if (ecdsaPrivateKey !== void 0) {
|
|
533
|
-
this.ecdsaPublicKey = getECDSAPublicKey(ecdsaPrivateKey);
|
|
534
|
-
}
|
|
535
513
|
}
|
|
536
514
|
static from(source, path) {
|
|
537
515
|
if (source instanceof web3_js.Keypair) {
|
|
538
516
|
return new this(source);
|
|
539
517
|
} else if (typeof source === "string") {
|
|
540
|
-
const
|
|
541
|
-
return new this(keypair
|
|
518
|
+
const keypair = getKeypair(source, path);
|
|
519
|
+
return new this(keypair);
|
|
542
520
|
} else {
|
|
543
521
|
throw new Error("Invalid parameters");
|
|
544
522
|
}
|
|
@@ -565,18 +543,6 @@ var SolanaSigner = class {
|
|
|
565
543
|
get secretKey() {
|
|
566
544
|
return this.keypair.secretKey;
|
|
567
545
|
}
|
|
568
|
-
get ECDSAPrivateKey() {
|
|
569
|
-
if (this.ecdsaPrivateKey === void 0) {
|
|
570
|
-
throw new Error("ECDSA private key is not available");
|
|
571
|
-
}
|
|
572
|
-
return this.ecdsaPrivateKey;
|
|
573
|
-
}
|
|
574
|
-
get ECDSAPublicKey() {
|
|
575
|
-
if (this.ecdsaPublicKey === void 0) {
|
|
576
|
-
throw new Error("ECDSA public key is not available");
|
|
577
|
-
}
|
|
578
|
-
return this.ecdsaPublicKey;
|
|
579
|
-
}
|
|
580
546
|
async sendAndConfirm(transaction, opts) {
|
|
581
547
|
const provider = this.assertAndGetProvider();
|
|
582
548
|
const _transaction = transaction.signed;
|
|
@@ -624,20 +590,14 @@ var SolanaSigner = class {
|
|
|
624
590
|
function getKeypair(mnemonic, path = "m/44'/501'/0'/0'") {
|
|
625
591
|
const seed = bip39__namespace.mnemonicToSeedSync(mnemonic, "");
|
|
626
592
|
const privateKey = ed25519HdKey.derivePath(path, seed.toString("hex")).key;
|
|
627
|
-
return
|
|
593
|
+
return web3_js.Keypair.fromSeed(privateKey);
|
|
628
594
|
}
|
|
629
595
|
var isVersionedTransaction = (tx) => {
|
|
630
596
|
return "version" in tx;
|
|
631
597
|
};
|
|
632
598
|
|
|
633
|
-
Object.defineProperty(exports, "recoverPublicKey", {
|
|
634
|
-
enumerable: true,
|
|
635
|
-
get: function () { return secp256k1.recoverPublicKey; }
|
|
636
|
-
});
|
|
637
599
|
exports.SolanaProvider = SolanaProvider;
|
|
638
600
|
exports.SolanaSigner = SolanaSigner;
|
|
639
|
-
exports.getECDSAPublicKey = getECDSAPublicKey;
|
|
640
601
|
exports.isVersionedTransaction = isVersionedTransaction;
|
|
641
|
-
exports.signWithECDSA = signWithECDSA;
|
|
642
602
|
//# sourceMappingURL=out.js.map
|
|
643
603
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/providers/solana.ts","../../../../node_modules/.store/@ethersproject-logger-npm-5.7.0-63fe9c3d29/package/src.ts/_version.ts","../../../../node_modules/.store/@ethersproject-logger-npm-5.7.0-63fe9c3d29/package/src.ts/index.ts","../../../../node_modules/.store/@ethersproject-bytes-npm-5.7.0-4454fe4cb0/package/src.ts/_version.ts","../../../../node_modules/.store/@ethersproject-bytes-npm-5.7.0-4454fe4cb0/package/src.ts/index.ts","../src/utils.ts","../src/signers/solana.ts","../src/ecdsa.ts"],"names":["LogLevel","ErrorCode","version","error","hexlify","Connection","sendAndConfirmRawTransaction","SignedTransaction","TransactionPending","TransactionReceipt"],"mappings":"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","sourcesContent":["import {\n ConfirmOptions,\n Connection,\n GetVersionedTransactionConfig,\n ParsedTransactionWithMeta,\n PublicKey,\n SendOptions,\n Transaction,\n TransactionSignature,\n VersionedTransaction,\n sendAndConfirmRawTransaction,\n} from '@solana/web3.js'\n\nimport {\n Block,\n BlockTag,\n BlockWithTransactions,\n Finality,\n Provider,\n SignedTransaction,\n TransactionPending,\n TransactionReceipt,\n TransactionResponse,\n} from '@layerzerolabs/lz-core'\n\nimport { toRawTransaction } from '../utils'\n\nexport class SolanaProvider implements Provider {\n nativeProvider: Connection\n\n constructor(public url: string) {\n this.nativeProvider = new Connection(url, 'confirmed')\n }\n\n static from(url: string): SolanaProvider\n\n static from(source: string): SolanaProvider {\n if (typeof source === 'string') {\n return new SolanaProvider(source)\n } else {\n throw new Error('Invalid parameters')\n }\n }\n\n get native(): Connection {\n return this.nativeProvider\n }\n\n async getBalance(address: string): Promise<string> {\n return this.nativeProvider.getBalance(new PublicKey(address)).then((balance) => balance.toString())\n }\n\n async getBlock(slot: string | number): Promise<Block> {\n const response = await this.nativeProvider.getParsedBlock(parseInt(slot.toString()), {\n commitment: 'confirmed',\n })\n return Block.from(response)\n }\n\n async getBlockNumber(): Promise<number> {\n return this.nativeProvider.getBlockHeight({ commitment: 'confirmed' })\n }\n\n async getSlot(finality?: Finality): Promise<number> {\n return this.nativeProvider.getSlot(finality)\n }\n\n async getBlockTimestamp(slot: string | number): Promise<number> {\n const t = await this.nativeProvider.getBlockTime(parseInt(slot.toString()))\n if (t === null) {\n throw new Error('Block timestamp not available')\n }\n return t\n }\n\n /**\n *\n * @param txHash string The transaction hash is TransactionSignature in Solana\n * @returns TransactionResponse\n */\n async getTransaction(txHash: string): Promise<TransactionResponse> {\n const response: ParsedTransactionWithMeta | null = await this.nativeProvider.getParsedTransaction(txHash, {\n commitment: 'confirmed',\n })\n return TransactionResponse.from(response)\n }\n\n async getTransactionReceipt(txHash: string): Promise<TransactionReceipt> {\n const response: ParsedTransactionWithMeta | null = await this.nativeProvider.getParsedTransaction(txHash, {\n commitment: 'confirmed',\n } satisfies GetVersionedTransactionConfig)\n if (response === null) {\n throw new Error('Transaction not found')\n }\n return TransactionReceipt.from(response)\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async getTransactionCount(\n _addressOrName: string | Promise<string>,\n _blockTag?: BlockTag | Promise<BlockTag>\n ): Promise<number> {\n await Promise.resolve()\n throw new Error('Method not implemented.')\n }\n\n async getBlockWithTransactions(blockTag: string | number): Promise<BlockWithTransactions> {\n if (typeof blockTag === 'string') {\n blockTag = parseInt(blockTag)\n }\n const response = await this.nativeProvider.getBlock(blockTag, { transactionDetails: 'full' })\n if (response === null) {\n throw new Error('Block not found')\n }\n return BlockWithTransactions.from(response)\n }\n\n async sendTransaction(transaction: SignedTransaction, sendOptions?: SendOptions): Promise<TransactionPending> {\n const _transaction = transaction.signed as Transaction | VersionedTransaction | string\n const rawTransaction = toRawTransaction(_transaction)\n\n const response = await this.nativeProvider.sendRawTransaction(rawTransaction, sendOptions)\n return TransactionPending.from(response)\n }\n\n async sendAndConfirm(transaction: SignedTransaction, opts?: ConfirmOptions): Promise<TransactionReceipt> {\n const _transaction = transaction.signed as Transaction | VersionedTransaction | string\n const rawTransaction = toRawTransaction(_transaction)\n\n const response: TransactionSignature = await sendAndConfirmRawTransaction(\n this.nativeProvider,\n Buffer.from(rawTransaction),\n opts\n )\n return TransactionReceipt.from(response)\n }\n}\n","export const version = \"logger/5.7.0\";\n","\"use strict\";\n\nlet _permanentCensorErrors = false;\nlet _censorErrors = false;\n\nconst LogLevels: { [ name: string ]: number } = { debug: 1, \"default\": 2, info: 2, warning: 3, error: 4, off: 5 };\nlet _logLevel = LogLevels[\"default\"];\n\nimport { version } from \"./_version\";\n\nlet _globalLogger: Logger = null;\n\nfunction _checkNormalize(): string {\n try {\n const missing: Array<string> = [ ];\n\n // Make sure all forms of normalization are supported\n [\"NFD\", \"NFC\", \"NFKD\", \"NFKC\"].forEach((form) => {\n try {\n if (\"test\".normalize(form) !== \"test\") {\n throw new Error(\"bad normalize\");\n };\n } catch(error) {\n missing.push(form);\n }\n });\n\n if (missing.length) {\n throw new Error(\"missing \" + missing.join(\", \"));\n }\n\n if (String.fromCharCode(0xe9).normalize(\"NFD\") !== String.fromCharCode(0x65, 0x0301)) {\n throw new Error(\"broken implementation\")\n }\n } catch (error) {\n return error.message;\n }\n\n return null;\n}\n\nconst _normalizeError = _checkNormalize();\n\nexport enum LogLevel {\n DEBUG = \"DEBUG\",\n INFO = \"INFO\",\n WARNING = \"WARNING\",\n ERROR = \"ERROR\",\n OFF = \"OFF\"\n}\n\n\nexport enum ErrorCode {\n\n ///////////////////\n // Generic Errors\n\n // Unknown Error\n UNKNOWN_ERROR = \"UNKNOWN_ERROR\",\n\n // Not Implemented\n NOT_IMPLEMENTED = \"NOT_IMPLEMENTED\",\n\n // Unsupported Operation\n // - operation\n UNSUPPORTED_OPERATION = \"UNSUPPORTED_OPERATION\",\n\n // Network Error (i.e. Ethereum Network, such as an invalid chain ID)\n // - event (\"noNetwork\" is not re-thrown in provider.ready; otherwise thrown)\n NETWORK_ERROR = \"NETWORK_ERROR\",\n\n // Some sort of bad response from the server\n SERVER_ERROR = \"SERVER_ERROR\",\n\n // Timeout\n TIMEOUT = \"TIMEOUT\",\n\n ///////////////////\n // Operational Errors\n\n // Buffer Overrun\n BUFFER_OVERRUN = \"BUFFER_OVERRUN\",\n\n // Numeric Fault\n // - operation: the operation being executed\n // - fault: the reason this faulted\n NUMERIC_FAULT = \"NUMERIC_FAULT\",\n\n\n ///////////////////\n // Argument Errors\n\n // Missing new operator to an object\n // - name: The name of the class\n MISSING_NEW = \"MISSING_NEW\",\n\n // Invalid argument (e.g. value is incompatible with type) to a function:\n // - argument: The argument name that was invalid\n // - value: The value of the argument\n INVALID_ARGUMENT = \"INVALID_ARGUMENT\",\n\n // Missing argument to a function:\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n MISSING_ARGUMENT = \"MISSING_ARGUMENT\",\n\n // Too many arguments\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n UNEXPECTED_ARGUMENT = \"UNEXPECTED_ARGUMENT\",\n\n\n ///////////////////\n // Blockchain Errors\n\n // Call exception\n // - transaction: the transaction\n // - address?: the contract address\n // - args?: The arguments passed into the function\n // - method?: The Solidity method signature\n // - errorSignature?: The EIP848 error signature\n // - errorArgs?: The EIP848 error parameters\n // - reason: The reason (only for EIP848 \"Error(string)\")\n CALL_EXCEPTION = \"CALL_EXCEPTION\",\n\n // Insufficient funds (< value + gasLimit * gasPrice)\n // - transaction: the transaction attempted\n INSUFFICIENT_FUNDS = \"INSUFFICIENT_FUNDS\",\n\n // Nonce has already been used\n // - transaction: the transaction attempted\n NONCE_EXPIRED = \"NONCE_EXPIRED\",\n\n // The replacement fee for the transaction is too low\n // - transaction: the transaction attempted\n REPLACEMENT_UNDERPRICED = \"REPLACEMENT_UNDERPRICED\",\n\n // The gas limit could not be estimated\n // - transaction: the transaction passed to estimateGas\n UNPREDICTABLE_GAS_LIMIT = \"UNPREDICTABLE_GAS_LIMIT\",\n\n // The transaction was replaced by one with a higher gas price\n // - reason: \"cancelled\", \"replaced\" or \"repriced\"\n // - cancelled: true if reason == \"cancelled\" or reason == \"replaced\")\n // - hash: original transaction hash\n // - replacement: the full TransactionsResponse for the replacement\n // - receipt: the receipt of the replacement\n TRANSACTION_REPLACED = \"TRANSACTION_REPLACED\",\n\n\n ///////////////////\n // Interaction Errors\n\n // The user rejected the action, such as signing a message or sending\n // a transaction\n ACTION_REJECTED = \"ACTION_REJECTED\",\n};\n\nconst HEX = \"0123456789abcdef\";\n\nexport class Logger {\n readonly version: string;\n\n static errors = ErrorCode;\n\n static levels = LogLevel;\n\n constructor(version: string) {\n Object.defineProperty(this, \"version\", {\n enumerable: true,\n value: version,\n writable: false\n });\n }\n\n _log(logLevel: LogLevel, args: Array<any>): void {\n const level = logLevel.toLowerCase();\n if (LogLevels[level] == null) {\n this.throwArgumentError(\"invalid log level name\", \"logLevel\", logLevel);\n }\n if (_logLevel > LogLevels[level]) { return; }\n console.log.apply(console, args);\n }\n\n debug(...args: Array<any>): void {\n this._log(Logger.levels.DEBUG, args);\n }\n\n info(...args: Array<any>): void {\n this._log(Logger.levels.INFO, args);\n }\n\n warn(...args: Array<any>): void {\n this._log(Logger.levels.WARNING, args);\n }\n\n makeError(message: string, code?: ErrorCode, params?: any): Error {\n // Errors are being censored\n if (_censorErrors) {\n return this.makeError(\"censored error\", code, { });\n }\n\n if (!code) { code = Logger.errors.UNKNOWN_ERROR; }\n if (!params) { params = {}; }\n\n const messageDetails: Array<string> = [];\n Object.keys(params).forEach((key) => {\n const value = params[key];\n try {\n if (value instanceof Uint8Array) {\n let hex = \"\";\n for (let i = 0; i < value.length; i++) {\n hex += HEX[value[i] >> 4];\n hex += HEX[value[i] & 0x0f];\n }\n messageDetails.push(key + \"=Uint8Array(0x\" + hex + \")\");\n } else {\n messageDetails.push(key + \"=\" + JSON.stringify(value));\n }\n } catch (error) {\n messageDetails.push(key + \"=\" + JSON.stringify(params[key].toString()));\n }\n });\n messageDetails.push(`code=${ code }`);\n messageDetails.push(`version=${ this.version }`);\n\n const reason = message;\n\n let url = \"\";\n\n switch (code) {\n case ErrorCode.NUMERIC_FAULT: {\n url = \"NUMERIC_FAULT\";\n const fault = message;\n\n switch (fault) {\n case \"overflow\": case \"underflow\": case \"division-by-zero\":\n url += \"-\" + fault;\n break;\n case \"negative-power\": case \"negative-width\":\n url += \"-unsupported\";\n break;\n case \"unbound-bitwise-result\":\n url += \"-unbound-result\";\n break;\n }\n break;\n }\n case ErrorCode.CALL_EXCEPTION:\n case ErrorCode.INSUFFICIENT_FUNDS:\n case ErrorCode.MISSING_NEW:\n case ErrorCode.NONCE_EXPIRED:\n case ErrorCode.REPLACEMENT_UNDERPRICED:\n case ErrorCode.TRANSACTION_REPLACED:\n case ErrorCode.UNPREDICTABLE_GAS_LIMIT:\n url = code;\n break;\n }\n\n if (url) {\n message += \" [ See: https:/\\/links.ethers.org/v5-errors-\" + url + \" ]\";\n }\n\n if (messageDetails.length) {\n message += \" (\" + messageDetails.join(\", \") + \")\";\n }\n\n // @TODO: Any??\n const error: any = new Error(message);\n error.reason = reason;\n error.code = code\n\n Object.keys(params).forEach(function(key) {\n error[key] = params[key];\n });\n\n return error;\n }\n\n throwError(message: string, code?: ErrorCode, params?: any): never {\n throw this.makeError(message, code, params);\n }\n\n throwArgumentError(message: string, name: string, value: any): never {\n return this.throwError(message, Logger.errors.INVALID_ARGUMENT, {\n argument: name,\n value: value\n });\n }\n\n assert(condition: any, message: string, code?: ErrorCode, params?: any): void {\n if (!!condition) { return; }\n this.throwError(message, code, params);\n }\n\n assertArgument(condition: any, message: string, name: string, value: any): void {\n if (!!condition) { return; }\n this.throwArgumentError(message, name, value);\n }\n\n checkNormalize(message?: string): void {\n if (message == null) { message = \"platform missing String.prototype.normalize\"; }\n if (_normalizeError) {\n this.throwError(\"platform missing String.prototype.normalize\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"String.prototype.normalize\", form: _normalizeError\n });\n }\n }\n\n checkSafeUint53(value: number, message?: string): void {\n if (typeof(value) !== \"number\") { return; }\n\n if (message == null) { message = \"value not safe\"; }\n\n if (value < 0 || value >= 0x1fffffffffffff) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"out-of-safe-range\",\n value: value\n });\n }\n\n if (value % 1) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"non-integer\",\n value: value\n });\n }\n }\n\n checkArgumentCount(count: number, expectedCount: number, message?: string): void {\n if (message) {\n message = \": \" + message;\n } else {\n message = \"\";\n }\n\n if (count < expectedCount) {\n this.throwError(\"missing argument\" + message, Logger.errors.MISSING_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n\n if (count > expectedCount) {\n this.throwError(\"too many arguments\" + message, Logger.errors.UNEXPECTED_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n }\n\n checkNew(target: any, kind: any): void {\n if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n\n checkAbstract(target: any, kind: any): void {\n if (target === kind) {\n this.throwError(\n \"cannot instantiate abstract class \" + JSON.stringify(kind.name) + \" directly; use a sub-class\",\n Logger.errors.UNSUPPORTED_OPERATION,\n { name: target.name, operation: \"new\" }\n );\n } else if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n\n static globalLogger(): Logger {\n if (!_globalLogger) { _globalLogger = new Logger(version); }\n return _globalLogger;\n }\n\n static setCensorship(censorship: boolean, permanent?: boolean): void {\n if (!censorship && permanent) {\n this.globalLogger().throwError(\"cannot permanently disable censorship\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n\n if (_permanentCensorErrors) {\n if (!censorship) { return; }\n this.globalLogger().throwError(\"error censorship permanent\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n\n _censorErrors = !!censorship;\n _permanentCensorErrors = !!permanent;\n }\n\n static setLogLevel(logLevel: LogLevel): void {\n const level = LogLevels[logLevel.toLowerCase()];\n if (level == null) {\n Logger.globalLogger().warn(\"invalid log level - \" + logLevel);\n return;\n }\n _logLevel = level;\n }\n\n static from(version: string): Logger {\n return new Logger(version);\n }\n}\n","export const version = \"bytes/5.7.0\";\n","\"use strict\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n///////////////////////////////\n// Exported Types\n\nexport type Bytes = ArrayLike<number>;\n\nexport type BytesLike = Bytes | string;\n\nexport type DataOptions = {\n allowMissingPrefix?: boolean;\n hexPad?: \"left\" | \"right\" | null;\n};\n\nexport interface Hexable {\n toHexString(): string;\n}\n\n\n/*\nexport interface HexString {\n length: number;\n substring: (start: number, end?: number) => string;\n\n [index: number]: string;\n}\n*/\n\nexport type SignatureLike = {\n r: string;\n s?: string;\n _vs?: string,\n recoveryParam?: number;\n v?: number;\n} | BytesLike;\n\nexport interface Signature {\n r: string;\n\n s: string;\n _vs: string,\n\n recoveryParam: number;\n v: number;\n\n yParityAndS: string\n compact: string;\n}\n\n///////////////////////////////\n\n\nfunction isHexable(value: any): value is Hexable {\n return !!(value.toHexString);\n}\n\nfunction addSlice(array: Uint8Array): Uint8Array {\n if (array.slice) { return array; }\n\n array.slice = function() {\n const args = Array.prototype.slice.call(arguments);\n return addSlice(new Uint8Array(Array.prototype.slice.apply(array, args)));\n }\n\n return array;\n}\n\nexport function isBytesLike(value: any): value is BytesLike {\n return ((isHexString(value) && !(value.length % 2)) || isBytes(value));\n}\n\nfunction isInteger(value: number) {\n return (typeof(value) === \"number\" && value == value && (value % 1) === 0);\n}\n\nexport function isBytes(value: any): value is Bytes {\n if (value == null) { return false; }\n\n if (value.constructor === Uint8Array) { return true; }\n if (typeof(value) === \"string\") { return false; }\n if (!isInteger(value.length) || value.length < 0) { return false; }\n\n for (let i = 0; i < value.length; i++) {\n const v = value[i];\n if (!isInteger(v) || v < 0 || v >= 256) { return false; }\n }\n return true;\n}\n\n\nexport function arrayify(value: BytesLike | Hexable | number, options?: DataOptions): Uint8Array {\n if (!options) { options = { }; }\n\n if (typeof(value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid arrayify value\");\n\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value = parseInt(String(value / 256));\n }\n if (result.length === 0) { result.push(0); }\n\n return addSlice(new Uint8Array(result));\n }\n\n if (options.allowMissingPrefix && typeof(value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n\n if (isHexable(value)) { value = value.toHexString(); }\n\n if (isHexString(value)) {\n let hex = (<string>value).substring(2);\n if (hex.length % 2) {\n if (options.hexPad === \"left\") {\n hex = \"0\" + hex;\n } else if (options.hexPad === \"right\") {\n hex += \"0\";\n } else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n\n const result = [];\n for (let i = 0; i < hex.length; i += 2) {\n result.push(parseInt(hex.substring(i, i + 2), 16));\n }\n\n return addSlice(new Uint8Array(result));\n }\n\n if (isBytes(value)) {\n return addSlice(new Uint8Array(value));\n }\n\n return logger.throwArgumentError(\"invalid arrayify value\", \"value\", value);\n}\n\nexport function concat(items: ReadonlyArray<BytesLike>): Uint8Array {\n const objects = items.map(item => arrayify(item));\n const length = objects.reduce((accum, item) => (accum + item.length), 0);\n\n const result = new Uint8Array(length);\n\n objects.reduce((offset, object) => {\n result.set(object, offset);\n return offset + object.length;\n }, 0);\n\n return addSlice(result);\n}\n\nexport function stripZeros(value: BytesLike): Uint8Array {\n let result: Uint8Array = arrayify(value);\n\n if (result.length === 0) { return result; }\n\n // Find the first non-zero entry\n let start = 0;\n while (start < result.length && result[start] === 0) { start++ }\n\n // If we started with zeros, strip them\n if (start) {\n result = result.slice(start);\n }\n\n return result;\n}\n\nexport function zeroPad(value: BytesLike, length: number): Uint8Array {\n value = arrayify(value);\n\n if (value.length > length) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[0]);\n }\n\n const result = new Uint8Array(length);\n result.set(value, length - value.length);\n return addSlice(result);\n}\n\n\nexport function isHexString(value: any, length?: number): boolean {\n if (typeof(value) !== \"string\" || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n return false\n }\n if (length && value.length !== 2 + 2 * length) { return false; }\n return true;\n}\n\nconst HexCharacters: string = \"0123456789abcdef\";\n\nexport function hexlify(value: BytesLike | Hexable | number | bigint, options?: DataOptions): string {\n if (!options) { options = { }; }\n\n if (typeof(value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid hexlify value\");\n\n let hex = \"\";\n while (value) {\n hex = HexCharacters[value & 0xf] + hex;\n value = Math.floor(value / 16);\n }\n\n if (hex.length) {\n if (hex.length % 2) { hex = \"0\" + hex; }\n return \"0x\" + hex;\n }\n\n return \"0x00\";\n }\n\n if (typeof(value) === \"bigint\") {\n value = value.toString(16);\n if (value.length % 2) { return (\"0x0\" + value); }\n return \"0x\" + value;\n }\n\n if (options.allowMissingPrefix && typeof(value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n\n if (isHexable(value)) { return value.toHexString(); }\n\n if (isHexString(value)) {\n if ((<string>value).length % 2) {\n if (options.hexPad === \"left\") {\n value = \"0x0\" + (<string>value).substring(2);\n } else if (options.hexPad === \"right\") {\n value += \"0\";\n } else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n return (<string>value).toLowerCase();\n }\n\n if (isBytes(value)) {\n let result = \"0x\";\n for (let i = 0; i < value.length; i++) {\n let v = value[i];\n result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];\n }\n return result;\n }\n\n return logger.throwArgumentError(\"invalid hexlify value\", \"value\", value);\n}\n\n/*\nfunction unoddify(value: BytesLike | Hexable | number): BytesLike | Hexable | number {\n if (typeof(value) === \"string\" && value.length % 2 && value.substring(0, 2) === \"0x\") {\n return \"0x0\" + value.substring(2);\n }\n return value;\n}\n*/\nexport function hexDataLength(data: BytesLike) {\n if (typeof(data) !== \"string\") {\n data = hexlify(data);\n } else if (!isHexString(data) || (data.length % 2)) {\n return null;\n }\n\n return (data.length - 2) / 2;\n}\n\nexport function hexDataSlice(data: BytesLike, offset: number, endOffset?: number): string {\n if (typeof(data) !== \"string\") {\n data = hexlify(data);\n } else if (!isHexString(data) || (data.length % 2)) {\n logger.throwArgumentError(\"invalid hexData\", \"value\", data );\n }\n\n offset = 2 + 2 * offset;\n\n if (endOffset != null) {\n return \"0x\" + data.substring(offset, 2 + 2 * endOffset);\n }\n\n return \"0x\" + data.substring(offset);\n}\n\nexport function hexConcat(items: ReadonlyArray<BytesLike>): string {\n let result = \"0x\";\n items.forEach((item) => {\n result += hexlify(item).substring(2);\n });\n return result;\n}\n\nexport function hexValue(value: BytesLike | Hexable | number | bigint): string {\n const trimmed = hexStripZeros(hexlify(value, { hexPad: \"left\" }));\n if (trimmed === \"0x\") { return \"0x0\"; }\n return trimmed;\n}\n\nexport function hexStripZeros(value: BytesLike): string {\n if (typeof(value) !== \"string\") { value = hexlify(value); }\n\n if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n value = value.substring(2);\n let offset = 0;\n while (offset < value.length && value[offset] === \"0\") { offset++; }\n return \"0x\" + value.substring(offset);\n}\n\nexport function hexZeroPad(value: BytesLike, length: number): string {\n if (typeof(value) !== \"string\") {\n value = hexlify(value);\n } else if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n\n if (value.length > 2 * length + 2) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[1]);\n }\n\n while (value.length < 2 * length + 2) {\n value = \"0x0\" + value.substring(2);\n }\n\n return value;\n}\n\nexport function splitSignature(signature: SignatureLike): Signature {\n\n const result = {\n r: \"0x\",\n s: \"0x\",\n _vs: \"0x\",\n recoveryParam: 0,\n v: 0,\n yParityAndS: \"0x\",\n compact: \"0x\"\n };\n\n if (isBytesLike(signature)) {\n let bytes: Uint8Array = arrayify(signature);\n\n // Get the r, s and v\n if (bytes.length === 64) {\n // EIP-2098; pull the v from the top bit of s and clear it\n result.v = 27 + (bytes[32] >> 7);\n bytes[32] &= 0x7f;\n\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n\n } else if (bytes.length === 65) {\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n result.v = bytes[64];\n } else {\n\n logger.throwArgumentError(\"invalid signature string\", \"signature\", signature);\n }\n\n\n // Allow a recid to be used as the v\n if (result.v < 27) {\n if (result.v === 0 || result.v === 1) {\n result.v += 27;\n } else {\n logger.throwArgumentError(\"signature invalid v byte\", \"signature\", signature);\n }\n }\n\n // Compute recoveryParam from v\n result.recoveryParam = 1 - (result.v % 2);\n\n // Compute _vs from recoveryParam and s\n if (result.recoveryParam) { bytes[32] |= 0x80; }\n result._vs = hexlify(bytes.slice(32, 64))\n\n } else {\n result.r = signature.r;\n result.s = signature.s;\n result.v = signature.v;\n result.recoveryParam = signature.recoveryParam;\n result._vs = signature._vs;\n\n // If the _vs is available, use it to populate missing s, v and recoveryParam\n // and verify non-missing s, v and recoveryParam\n if (result._vs != null) {\n const vs = zeroPad(arrayify(result._vs), 32);\n result._vs = hexlify(vs);\n\n // Set or check the recid\n const recoveryParam = ((vs[0] >= 128) ? 1: 0);\n if (result.recoveryParam == null) {\n result.recoveryParam = recoveryParam;\n } else if (result.recoveryParam !== recoveryParam) {\n logger.throwArgumentError(\"signature recoveryParam mismatch _vs\", \"signature\", signature);\n }\n\n // Set or check the s\n vs[0] &= 0x7f;\n const s = hexlify(vs);\n if (result.s == null) {\n result.s = s;\n } else if (result.s !== s) {\n logger.throwArgumentError(\"signature v mismatch _vs\", \"signature\", signature);\n }\n }\n\n // Use recid and v to populate each other\n if (result.recoveryParam == null) {\n if (result.v == null) {\n logger.throwArgumentError(\"signature missing v and recoveryParam\", \"signature\", signature);\n } else if (result.v === 0 || result.v === 1) {\n result.recoveryParam = result.v;\n } else {\n result.recoveryParam = 1 - (result.v % 2);\n }\n } else {\n if (result.v == null) {\n result.v = 27 + result.recoveryParam;\n } else {\n const recId = (result.v === 0 || result.v === 1) ? result.v :(1 - (result.v % 2));\n if (result.recoveryParam !== recId) {\n logger.throwArgumentError(\"signature recoveryParam mismatch v\", \"signature\", signature);\n }\n }\n }\n\n if (result.r == null || !isHexString(result.r)) {\n logger.throwArgumentError(\"signature missing or invalid r\", \"signature\", signature);\n } else {\n result.r = hexZeroPad(result.r, 32);\n }\n\n if (result.s == null || !isHexString(result.s)) {\n logger.throwArgumentError(\"signature missing or invalid s\", \"signature\", signature);\n } else {\n result.s = hexZeroPad(result.s, 32);\n }\n\n const vs = arrayify(result.s);\n if (vs[0] >= 128) {\n logger.throwArgumentError(\"signature s out of range\", \"signature\", signature);\n }\n if (result.recoveryParam) { vs[0] |= 0x80; }\n const _vs = hexlify(vs);\n\n if (result._vs) {\n if (!isHexString(result._vs)) {\n logger.throwArgumentError(\"signature invalid _vs\", \"signature\", signature);\n }\n result._vs = hexZeroPad(result._vs, 32);\n }\n\n // Set or check the _vs\n if (result._vs == null) {\n result._vs = _vs;\n } else if (result._vs !== _vs) {\n logger.throwArgumentError(\"signature _vs mismatch v and s\", \"signature\", signature);\n }\n }\n\n result.yParityAndS = result._vs;\n result.compact = result.r + result.yParityAndS.substring(2);\n\n return result;\n}\n\nexport function joinSignature(signature: SignatureLike): string {\n signature = splitSignature(signature);\n\n return hexlify(concat([\n signature.r,\n signature.s,\n (signature.recoveryParam ? \"0x1c\": \"0x1b\")\n ]));\n}\n\n","import { arrayify } from '.store/@ethersproject-bytes-npm-5.7.0-4454fe4cb0/package'\nimport { Transaction, VersionedTransaction } from '@solana/web3.js'\n\nexport function toRawTransaction(transaction: Transaction | VersionedTransaction | string): Uint8Array {\n const retval = typeof transaction === 'string' ? arrayify(transaction) : transaction.serialize()\n return retval\n}\n","import { hexlify } from '@ethersproject/bytes'\nimport {\n Commitment,\n ConfirmOptions,\n Connection,\n GetLatestBlockhashConfig,\n Keypair,\n PublicKey,\n SendOptions,\n Transaction,\n VersionedTransaction,\n sendAndConfirmRawTransaction,\n} from '@solana/web3.js'\nimport * as bip39 from 'bip39'\nimport { derivePath } from 'ed25519-hd-key'\n\nimport {\n Provider,\n SignedTransaction,\n Signer,\n TransactionPending,\n TransactionReceipt,\n TransactionRequest,\n} from '@layerzerolabs/lz-core'\n\nimport { getECDSAPublicKey } from '../ecdsa'\nimport { toRawTransaction } from '../utils'\n\nexport class SolanaSigner implements Signer {\n private readonly keypair: Keypair\n private provider?: Connection\n private ecdsaPrivateKey?: string\n private ecdsaPublicKey?: string\n\n private constructor(keypair: Keypair, ecdsaPrivateKey?: string) {\n this.keypair = keypair\n this.ecdsaPrivateKey = ecdsaPrivateKey\n if (ecdsaPrivateKey !== undefined) {\n this.ecdsaPublicKey = getECDSAPublicKey(ecdsaPrivateKey)\n }\n }\n\n static from(source: Keypair): SolanaSigner\n static from(mnemonic: string, path: string): SolanaSigner\n\n static from(source: Keypair | string, path?: string): SolanaSigner {\n if (source instanceof Keypair) {\n return new this(source)\n } else if (typeof source === 'string') {\n const { ecdsaPrivateKey, keypair } = getKeypair(source, path)\n return new this(keypair, ecdsaPrivateKey)\n } else {\n throw new Error('Invalid parameters')\n }\n }\n\n get native(): unknown {\n return this.keypair\n }\n\n connect(provider: Provider): this {\n if (!(provider.native instanceof Connection)) {\n throw new Error('Only @solana/web3.js Connection is supported.')\n }\n this.provider = provider.native\n return this\n }\n\n async getAddress(): Promise<string> {\n return Promise.resolve(this.keypair.publicKey.toBase58())\n }\n\n get address(): string {\n return this.publicKey.toBase58()\n }\n\n get publicKey(): PublicKey {\n return this.keypair.publicKey\n }\n\n get secretKey(): Uint8Array {\n return this.keypair.secretKey\n }\n\n get ECDSAPrivateKey(): string {\n if (this.ecdsaPrivateKey === undefined) {\n throw new Error('ECDSA private key is not available')\n }\n return this.ecdsaPrivateKey\n }\n\n get ECDSAPublicKey(): string {\n if (this.ecdsaPublicKey === undefined) {\n throw new Error('ECDSA public key is not available')\n }\n return this.ecdsaPublicKey\n }\n\n async sendAndConfirm(transaction: SignedTransaction, opts?: ConfirmOptions): Promise<TransactionReceipt> {\n const provider = this.assertAndGetProvider()\n const _transaction = transaction.signed as Transaction | VersionedTransaction | string\n const rawTransaction = toRawTransaction(_transaction)\n const response = await sendAndConfirmRawTransaction(provider, Buffer.from(rawTransaction), opts)\n return TransactionReceipt.from(response)\n }\n\n async sendTransaction(transaction: SignedTransaction, sendOptions?: SendOptions): Promise<TransactionPending> {\n const provider = this.assertAndGetProvider()\n const _transaction = transaction.signed as Transaction | VersionedTransaction | string\n const rawTransaction = toRawTransaction(_transaction)\n const response = await provider.sendRawTransaction(rawTransaction, sendOptions)\n return TransactionPending.from(response)\n }\n\n async signTransaction(\n transaction: TransactionRequest,\n opts?: Commitment | GetLatestBlockhashConfig\n ): Promise<SignedTransaction> {\n const tx = transaction.request as Transaction | VersionedTransaction\n if (isVersionedTransaction(tx)) {\n tx.sign([this.keypair])\n } else {\n tx.partialSign(this.keypair)\n }\n\n return Promise.resolve(SignedTransaction.from(tx))\n }\n\n async signBuffer(_buffer: Uint8Array): Promise<Uint8Array> {\n await Promise.resolve()\n throw new Error('Method not implemented.')\n }\n\n partialSign(tx: Transaction | VersionedTransaction): void {\n if (isVersionedTransaction(tx)) {\n tx.sign([this.keypair])\n } else {\n tx.partialSign(this.keypair)\n }\n }\n\n private assertAndGetProvider(): Connection {\n if (!this.provider) {\n throw new Error('Signer was not connected to a provider, did you forgot to connect to provider?')\n }\n return this.provider\n }\n\n async buildTransaction(buildTxRequest: unknown): Promise<TransactionRequest> {\n return Promise.reject(new Error('Method not implemented.'))\n }\n}\n\nfunction getKeypair(mnemonic: string, path = \"m/44'/501'/0'/0'\"): { ecdsaPrivateKey: string; keypair: Keypair } {\n const seed = bip39.mnemonicToSeedSync(mnemonic, '') // (mnemonic, password)\n const privateKey = derivePath(path, seed.toString('hex')).key\n return { ecdsaPrivateKey: hexlify(privateKey), keypair: Keypair.fromSeed(privateKey) }\n}\n\n/**\n * Check if a transaction object is a VersionedTransaction or not\n * This function is not exported from @coral-xyz/anchor currently.\n * @param tx\n * @returns bool\n */\nexport const isVersionedTransaction = (tx: Transaction | VersionedTransaction): tx is VersionedTransaction => {\n return 'version' in tx\n}\n","import { hexlify } from '@ethersproject/bytes'\nimport { getPublicKey, sign } from '@noble/secp256k1'\n\nexport { recoverPublicKey } from '@noble/secp256k1'\n\nexport async function signWithECDSA(\n data: Buffer,\n privateKey: string\n): Promise<{ signature: Uint8Array; recoveryId: number }> {\n const [signature, recoveryId] = await sign(data, privateKey.replace('0x', ''), {\n canonical: true,\n recovered: true,\n der: false,\n })\n return {\n signature,\n recoveryId,\n }\n}\n\nexport function getECDSAPublicKey(privateKey: string): string {\n // remove the compression byte\n return hexlify(getPublicKey(privateKey.replace('0x', '')).subarray(1))\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/providers/solana.ts","../../../../node_modules/.store/@ethersproject-logger-npm-5.7.0-63fe9c3d29/package/src.ts/_version.ts","../../../../node_modules/.store/@ethersproject-logger-npm-5.7.0-63fe9c3d29/package/src.ts/index.ts","../../../../node_modules/.store/@ethersproject-bytes-npm-5.7.0-4454fe4cb0/package/src.ts/_version.ts","../../../../node_modules/.store/@ethersproject-bytes-npm-5.7.0-4454fe4cb0/package/src.ts/index.ts","../src/utils.ts","../src/signers/solana.ts"],"names":["LogLevel","ErrorCode","version","error","Connection","sendAndConfirmRawTransaction","SignedTransaction","TransactionPending","TransactionReceipt"],"mappings":"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","sourcesContent":["import {\n ConfirmOptions,\n Connection,\n GetVersionedTransactionConfig,\n ParsedTransactionWithMeta,\n PublicKey,\n SendOptions,\n Transaction,\n TransactionSignature,\n VersionedTransaction,\n sendAndConfirmRawTransaction,\n} from '@solana/web3.js'\n\nimport {\n Block,\n BlockTag,\n BlockWithTransactions,\n Finality,\n Provider,\n SignedTransaction,\n TransactionPending,\n TransactionReceipt,\n TransactionResponse,\n} from '@layerzerolabs/lz-core'\n\nimport { toRawTransaction } from '../utils'\n\nexport class SolanaProvider implements Provider {\n nativeProvider: Connection\n\n constructor(public url: string) {\n this.nativeProvider = new Connection(url, 'confirmed')\n }\n\n static from(url: string): SolanaProvider\n\n static from(source: string): SolanaProvider {\n if (typeof source === 'string') {\n return new SolanaProvider(source)\n } else {\n throw new Error('Invalid parameters')\n }\n }\n\n get native(): Connection {\n return this.nativeProvider\n }\n\n async getBalance(address: string): Promise<string> {\n return this.nativeProvider.getBalance(new PublicKey(address)).then((balance) => balance.toString())\n }\n\n async getBlock(slot: string | number): Promise<Block> {\n const response = await this.nativeProvider.getParsedBlock(parseInt(slot.toString()), {\n commitment: 'confirmed',\n })\n return Block.from(response)\n }\n\n async getBlockNumber(): Promise<number> {\n return this.nativeProvider.getBlockHeight({ commitment: 'confirmed' })\n }\n\n async getSlot(finality?: Finality): Promise<number> {\n return this.nativeProvider.getSlot(finality)\n }\n\n async getBlockTimestamp(slot: string | number): Promise<number> {\n const t = await this.nativeProvider.getBlockTime(parseInt(slot.toString()))\n if (t === null) {\n throw new Error('Block timestamp not available')\n }\n return t\n }\n\n /**\n *\n * @param txHash string The transaction hash is TransactionSignature in Solana\n * @returns TransactionResponse\n */\n async getTransaction(txHash: string): Promise<TransactionResponse> {\n const response: ParsedTransactionWithMeta | null = await this.nativeProvider.getParsedTransaction(txHash, {\n commitment: 'confirmed',\n })\n return TransactionResponse.from(response)\n }\n\n async getTransactionReceipt(txHash: string): Promise<TransactionReceipt> {\n const response: ParsedTransactionWithMeta | null = await this.nativeProvider.getParsedTransaction(txHash, {\n commitment: 'confirmed',\n } satisfies GetVersionedTransactionConfig)\n if (response === null) {\n throw new Error('Transaction not found')\n }\n return TransactionReceipt.from(response)\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async getTransactionCount(\n _addressOrName: string | Promise<string>,\n _blockTag?: BlockTag | Promise<BlockTag>\n ): Promise<number> {\n await Promise.resolve()\n throw new Error('Method not implemented.')\n }\n\n async getBlockWithTransactions(blockTag: string | number): Promise<BlockWithTransactions> {\n if (typeof blockTag === 'string') {\n blockTag = parseInt(blockTag)\n }\n const response = await this.nativeProvider.getBlock(blockTag, { transactionDetails: 'full' })\n if (response === null) {\n throw new Error('Block not found')\n }\n return BlockWithTransactions.from(response)\n }\n\n async sendTransaction(transaction: SignedTransaction, sendOptions?: SendOptions): Promise<TransactionPending> {\n const _transaction = transaction.signed as Transaction | VersionedTransaction | string\n const rawTransaction = toRawTransaction(_transaction)\n\n const response = await this.nativeProvider.sendRawTransaction(rawTransaction, sendOptions)\n return TransactionPending.from(response)\n }\n\n async sendAndConfirm(transaction: SignedTransaction, opts?: ConfirmOptions): Promise<TransactionReceipt> {\n const _transaction = transaction.signed as Transaction | VersionedTransaction | string\n const rawTransaction = toRawTransaction(_transaction)\n\n const response: TransactionSignature = await sendAndConfirmRawTransaction(\n this.nativeProvider,\n Buffer.from(rawTransaction),\n opts\n )\n return TransactionReceipt.from(response)\n }\n}\n","export const version = \"logger/5.7.0\";\n","\"use strict\";\n\nlet _permanentCensorErrors = false;\nlet _censorErrors = false;\n\nconst LogLevels: { [ name: string ]: number } = { debug: 1, \"default\": 2, info: 2, warning: 3, error: 4, off: 5 };\nlet _logLevel = LogLevels[\"default\"];\n\nimport { version } from \"./_version\";\n\nlet _globalLogger: Logger = null;\n\nfunction _checkNormalize(): string {\n try {\n const missing: Array<string> = [ ];\n\n // Make sure all forms of normalization are supported\n [\"NFD\", \"NFC\", \"NFKD\", \"NFKC\"].forEach((form) => {\n try {\n if (\"test\".normalize(form) !== \"test\") {\n throw new Error(\"bad normalize\");\n };\n } catch(error) {\n missing.push(form);\n }\n });\n\n if (missing.length) {\n throw new Error(\"missing \" + missing.join(\", \"));\n }\n\n if (String.fromCharCode(0xe9).normalize(\"NFD\") !== String.fromCharCode(0x65, 0x0301)) {\n throw new Error(\"broken implementation\")\n }\n } catch (error) {\n return error.message;\n }\n\n return null;\n}\n\nconst _normalizeError = _checkNormalize();\n\nexport enum LogLevel {\n DEBUG = \"DEBUG\",\n INFO = \"INFO\",\n WARNING = \"WARNING\",\n ERROR = \"ERROR\",\n OFF = \"OFF\"\n}\n\n\nexport enum ErrorCode {\n\n ///////////////////\n // Generic Errors\n\n // Unknown Error\n UNKNOWN_ERROR = \"UNKNOWN_ERROR\",\n\n // Not Implemented\n NOT_IMPLEMENTED = \"NOT_IMPLEMENTED\",\n\n // Unsupported Operation\n // - operation\n UNSUPPORTED_OPERATION = \"UNSUPPORTED_OPERATION\",\n\n // Network Error (i.e. Ethereum Network, such as an invalid chain ID)\n // - event (\"noNetwork\" is not re-thrown in provider.ready; otherwise thrown)\n NETWORK_ERROR = \"NETWORK_ERROR\",\n\n // Some sort of bad response from the server\n SERVER_ERROR = \"SERVER_ERROR\",\n\n // Timeout\n TIMEOUT = \"TIMEOUT\",\n\n ///////////////////\n // Operational Errors\n\n // Buffer Overrun\n BUFFER_OVERRUN = \"BUFFER_OVERRUN\",\n\n // Numeric Fault\n // - operation: the operation being executed\n // - fault: the reason this faulted\n NUMERIC_FAULT = \"NUMERIC_FAULT\",\n\n\n ///////////////////\n // Argument Errors\n\n // Missing new operator to an object\n // - name: The name of the class\n MISSING_NEW = \"MISSING_NEW\",\n\n // Invalid argument (e.g. value is incompatible with type) to a function:\n // - argument: The argument name that was invalid\n // - value: The value of the argument\n INVALID_ARGUMENT = \"INVALID_ARGUMENT\",\n\n // Missing argument to a function:\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n MISSING_ARGUMENT = \"MISSING_ARGUMENT\",\n\n // Too many arguments\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n UNEXPECTED_ARGUMENT = \"UNEXPECTED_ARGUMENT\",\n\n\n ///////////////////\n // Blockchain Errors\n\n // Call exception\n // - transaction: the transaction\n // - address?: the contract address\n // - args?: The arguments passed into the function\n // - method?: The Solidity method signature\n // - errorSignature?: The EIP848 error signature\n // - errorArgs?: The EIP848 error parameters\n // - reason: The reason (only for EIP848 \"Error(string)\")\n CALL_EXCEPTION = \"CALL_EXCEPTION\",\n\n // Insufficient funds (< value + gasLimit * gasPrice)\n // - transaction: the transaction attempted\n INSUFFICIENT_FUNDS = \"INSUFFICIENT_FUNDS\",\n\n // Nonce has already been used\n // - transaction: the transaction attempted\n NONCE_EXPIRED = \"NONCE_EXPIRED\",\n\n // The replacement fee for the transaction is too low\n // - transaction: the transaction attempted\n REPLACEMENT_UNDERPRICED = \"REPLACEMENT_UNDERPRICED\",\n\n // The gas limit could not be estimated\n // - transaction: the transaction passed to estimateGas\n UNPREDICTABLE_GAS_LIMIT = \"UNPREDICTABLE_GAS_LIMIT\",\n\n // The transaction was replaced by one with a higher gas price\n // - reason: \"cancelled\", \"replaced\" or \"repriced\"\n // - cancelled: true if reason == \"cancelled\" or reason == \"replaced\")\n // - hash: original transaction hash\n // - replacement: the full TransactionsResponse for the replacement\n // - receipt: the receipt of the replacement\n TRANSACTION_REPLACED = \"TRANSACTION_REPLACED\",\n\n\n ///////////////////\n // Interaction Errors\n\n // The user rejected the action, such as signing a message or sending\n // a transaction\n ACTION_REJECTED = \"ACTION_REJECTED\",\n};\n\nconst HEX = \"0123456789abcdef\";\n\nexport class Logger {\n readonly version: string;\n\n static errors = ErrorCode;\n\n static levels = LogLevel;\n\n constructor(version: string) {\n Object.defineProperty(this, \"version\", {\n enumerable: true,\n value: version,\n writable: false\n });\n }\n\n _log(logLevel: LogLevel, args: Array<any>): void {\n const level = logLevel.toLowerCase();\n if (LogLevels[level] == null) {\n this.throwArgumentError(\"invalid log level name\", \"logLevel\", logLevel);\n }\n if (_logLevel > LogLevels[level]) { return; }\n console.log.apply(console, args);\n }\n\n debug(...args: Array<any>): void {\n this._log(Logger.levels.DEBUG, args);\n }\n\n info(...args: Array<any>): void {\n this._log(Logger.levels.INFO, args);\n }\n\n warn(...args: Array<any>): void {\n this._log(Logger.levels.WARNING, args);\n }\n\n makeError(message: string, code?: ErrorCode, params?: any): Error {\n // Errors are being censored\n if (_censorErrors) {\n return this.makeError(\"censored error\", code, { });\n }\n\n if (!code) { code = Logger.errors.UNKNOWN_ERROR; }\n if (!params) { params = {}; }\n\n const messageDetails: Array<string> = [];\n Object.keys(params).forEach((key) => {\n const value = params[key];\n try {\n if (value instanceof Uint8Array) {\n let hex = \"\";\n for (let i = 0; i < value.length; i++) {\n hex += HEX[value[i] >> 4];\n hex += HEX[value[i] & 0x0f];\n }\n messageDetails.push(key + \"=Uint8Array(0x\" + hex + \")\");\n } else {\n messageDetails.push(key + \"=\" + JSON.stringify(value));\n }\n } catch (error) {\n messageDetails.push(key + \"=\" + JSON.stringify(params[key].toString()));\n }\n });\n messageDetails.push(`code=${ code }`);\n messageDetails.push(`version=${ this.version }`);\n\n const reason = message;\n\n let url = \"\";\n\n switch (code) {\n case ErrorCode.NUMERIC_FAULT: {\n url = \"NUMERIC_FAULT\";\n const fault = message;\n\n switch (fault) {\n case \"overflow\": case \"underflow\": case \"division-by-zero\":\n url += \"-\" + fault;\n break;\n case \"negative-power\": case \"negative-width\":\n url += \"-unsupported\";\n break;\n case \"unbound-bitwise-result\":\n url += \"-unbound-result\";\n break;\n }\n break;\n }\n case ErrorCode.CALL_EXCEPTION:\n case ErrorCode.INSUFFICIENT_FUNDS:\n case ErrorCode.MISSING_NEW:\n case ErrorCode.NONCE_EXPIRED:\n case ErrorCode.REPLACEMENT_UNDERPRICED:\n case ErrorCode.TRANSACTION_REPLACED:\n case ErrorCode.UNPREDICTABLE_GAS_LIMIT:\n url = code;\n break;\n }\n\n if (url) {\n message += \" [ See: https:/\\/links.ethers.org/v5-errors-\" + url + \" ]\";\n }\n\n if (messageDetails.length) {\n message += \" (\" + messageDetails.join(\", \") + \")\";\n }\n\n // @TODO: Any??\n const error: any = new Error(message);\n error.reason = reason;\n error.code = code\n\n Object.keys(params).forEach(function(key) {\n error[key] = params[key];\n });\n\n return error;\n }\n\n throwError(message: string, code?: ErrorCode, params?: any): never {\n throw this.makeError(message, code, params);\n }\n\n throwArgumentError(message: string, name: string, value: any): never {\n return this.throwError(message, Logger.errors.INVALID_ARGUMENT, {\n argument: name,\n value: value\n });\n }\n\n assert(condition: any, message: string, code?: ErrorCode, params?: any): void {\n if (!!condition) { return; }\n this.throwError(message, code, params);\n }\n\n assertArgument(condition: any, message: string, name: string, value: any): void {\n if (!!condition) { return; }\n this.throwArgumentError(message, name, value);\n }\n\n checkNormalize(message?: string): void {\n if (message == null) { message = \"platform missing String.prototype.normalize\"; }\n if (_normalizeError) {\n this.throwError(\"platform missing String.prototype.normalize\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"String.prototype.normalize\", form: _normalizeError\n });\n }\n }\n\n checkSafeUint53(value: number, message?: string): void {\n if (typeof(value) !== \"number\") { return; }\n\n if (message == null) { message = \"value not safe\"; }\n\n if (value < 0 || value >= 0x1fffffffffffff) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"out-of-safe-range\",\n value: value\n });\n }\n\n if (value % 1) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"non-integer\",\n value: value\n });\n }\n }\n\n checkArgumentCount(count: number, expectedCount: number, message?: string): void {\n if (message) {\n message = \": \" + message;\n } else {\n message = \"\";\n }\n\n if (count < expectedCount) {\n this.throwError(\"missing argument\" + message, Logger.errors.MISSING_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n\n if (count > expectedCount) {\n this.throwError(\"too many arguments\" + message, Logger.errors.UNEXPECTED_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n }\n\n checkNew(target: any, kind: any): void {\n if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n\n checkAbstract(target: any, kind: any): void {\n if (target === kind) {\n this.throwError(\n \"cannot instantiate abstract class \" + JSON.stringify(kind.name) + \" directly; use a sub-class\",\n Logger.errors.UNSUPPORTED_OPERATION,\n { name: target.name, operation: \"new\" }\n );\n } else if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n\n static globalLogger(): Logger {\n if (!_globalLogger) { _globalLogger = new Logger(version); }\n return _globalLogger;\n }\n\n static setCensorship(censorship: boolean, permanent?: boolean): void {\n if (!censorship && permanent) {\n this.globalLogger().throwError(\"cannot permanently disable censorship\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n\n if (_permanentCensorErrors) {\n if (!censorship) { return; }\n this.globalLogger().throwError(\"error censorship permanent\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n\n _censorErrors = !!censorship;\n _permanentCensorErrors = !!permanent;\n }\n\n static setLogLevel(logLevel: LogLevel): void {\n const level = LogLevels[logLevel.toLowerCase()];\n if (level == null) {\n Logger.globalLogger().warn(\"invalid log level - \" + logLevel);\n return;\n }\n _logLevel = level;\n }\n\n static from(version: string): Logger {\n return new Logger(version);\n }\n}\n","export const version = \"bytes/5.7.0\";\n","\"use strict\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n///////////////////////////////\n// Exported Types\n\nexport type Bytes = ArrayLike<number>;\n\nexport type BytesLike = Bytes | string;\n\nexport type DataOptions = {\n allowMissingPrefix?: boolean;\n hexPad?: \"left\" | \"right\" | null;\n};\n\nexport interface Hexable {\n toHexString(): string;\n}\n\n\n/*\nexport interface HexString {\n length: number;\n substring: (start: number, end?: number) => string;\n\n [index: number]: string;\n}\n*/\n\nexport type SignatureLike = {\n r: string;\n s?: string;\n _vs?: string,\n recoveryParam?: number;\n v?: number;\n} | BytesLike;\n\nexport interface Signature {\n r: string;\n\n s: string;\n _vs: string,\n\n recoveryParam: number;\n v: number;\n\n yParityAndS: string\n compact: string;\n}\n\n///////////////////////////////\n\n\nfunction isHexable(value: any): value is Hexable {\n return !!(value.toHexString);\n}\n\nfunction addSlice(array: Uint8Array): Uint8Array {\n if (array.slice) { return array; }\n\n array.slice = function() {\n const args = Array.prototype.slice.call(arguments);\n return addSlice(new Uint8Array(Array.prototype.slice.apply(array, args)));\n }\n\n return array;\n}\n\nexport function isBytesLike(value: any): value is BytesLike {\n return ((isHexString(value) && !(value.length % 2)) || isBytes(value));\n}\n\nfunction isInteger(value: number) {\n return (typeof(value) === \"number\" && value == value && (value % 1) === 0);\n}\n\nexport function isBytes(value: any): value is Bytes {\n if (value == null) { return false; }\n\n if (value.constructor === Uint8Array) { return true; }\n if (typeof(value) === \"string\") { return false; }\n if (!isInteger(value.length) || value.length < 0) { return false; }\n\n for (let i = 0; i < value.length; i++) {\n const v = value[i];\n if (!isInteger(v) || v < 0 || v >= 256) { return false; }\n }\n return true;\n}\n\n\nexport function arrayify(value: BytesLike | Hexable | number, options?: DataOptions): Uint8Array {\n if (!options) { options = { }; }\n\n if (typeof(value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid arrayify value\");\n\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value = parseInt(String(value / 256));\n }\n if (result.length === 0) { result.push(0); }\n\n return addSlice(new Uint8Array(result));\n }\n\n if (options.allowMissingPrefix && typeof(value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n\n if (isHexable(value)) { value = value.toHexString(); }\n\n if (isHexString(value)) {\n let hex = (<string>value).substring(2);\n if (hex.length % 2) {\n if (options.hexPad === \"left\") {\n hex = \"0\" + hex;\n } else if (options.hexPad === \"right\") {\n hex += \"0\";\n } else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n\n const result = [];\n for (let i = 0; i < hex.length; i += 2) {\n result.push(parseInt(hex.substring(i, i + 2), 16));\n }\n\n return addSlice(new Uint8Array(result));\n }\n\n if (isBytes(value)) {\n return addSlice(new Uint8Array(value));\n }\n\n return logger.throwArgumentError(\"invalid arrayify value\", \"value\", value);\n}\n\nexport function concat(items: ReadonlyArray<BytesLike>): Uint8Array {\n const objects = items.map(item => arrayify(item));\n const length = objects.reduce((accum, item) => (accum + item.length), 0);\n\n const result = new Uint8Array(length);\n\n objects.reduce((offset, object) => {\n result.set(object, offset);\n return offset + object.length;\n }, 0);\n\n return addSlice(result);\n}\n\nexport function stripZeros(value: BytesLike): Uint8Array {\n let result: Uint8Array = arrayify(value);\n\n if (result.length === 0) { return result; }\n\n // Find the first non-zero entry\n let start = 0;\n while (start < result.length && result[start] === 0) { start++ }\n\n // If we started with zeros, strip them\n if (start) {\n result = result.slice(start);\n }\n\n return result;\n}\n\nexport function zeroPad(value: BytesLike, length: number): Uint8Array {\n value = arrayify(value);\n\n if (value.length > length) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[0]);\n }\n\n const result = new Uint8Array(length);\n result.set(value, length - value.length);\n return addSlice(result);\n}\n\n\nexport function isHexString(value: any, length?: number): boolean {\n if (typeof(value) !== \"string\" || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n return false\n }\n if (length && value.length !== 2 + 2 * length) { return false; }\n return true;\n}\n\nconst HexCharacters: string = \"0123456789abcdef\";\n\nexport function hexlify(value: BytesLike | Hexable | number | bigint, options?: DataOptions): string {\n if (!options) { options = { }; }\n\n if (typeof(value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid hexlify value\");\n\n let hex = \"\";\n while (value) {\n hex = HexCharacters[value & 0xf] + hex;\n value = Math.floor(value / 16);\n }\n\n if (hex.length) {\n if (hex.length % 2) { hex = \"0\" + hex; }\n return \"0x\" + hex;\n }\n\n return \"0x00\";\n }\n\n if (typeof(value) === \"bigint\") {\n value = value.toString(16);\n if (value.length % 2) { return (\"0x0\" + value); }\n return \"0x\" + value;\n }\n\n if (options.allowMissingPrefix && typeof(value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n\n if (isHexable(value)) { return value.toHexString(); }\n\n if (isHexString(value)) {\n if ((<string>value).length % 2) {\n if (options.hexPad === \"left\") {\n value = \"0x0\" + (<string>value).substring(2);\n } else if (options.hexPad === \"right\") {\n value += \"0\";\n } else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n return (<string>value).toLowerCase();\n }\n\n if (isBytes(value)) {\n let result = \"0x\";\n for (let i = 0; i < value.length; i++) {\n let v = value[i];\n result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];\n }\n return result;\n }\n\n return logger.throwArgumentError(\"invalid hexlify value\", \"value\", value);\n}\n\n/*\nfunction unoddify(value: BytesLike | Hexable | number): BytesLike | Hexable | number {\n if (typeof(value) === \"string\" && value.length % 2 && value.substring(0, 2) === \"0x\") {\n return \"0x0\" + value.substring(2);\n }\n return value;\n}\n*/\nexport function hexDataLength(data: BytesLike) {\n if (typeof(data) !== \"string\") {\n data = hexlify(data);\n } else if (!isHexString(data) || (data.length % 2)) {\n return null;\n }\n\n return (data.length - 2) / 2;\n}\n\nexport function hexDataSlice(data: BytesLike, offset: number, endOffset?: number): string {\n if (typeof(data) !== \"string\") {\n data = hexlify(data);\n } else if (!isHexString(data) || (data.length % 2)) {\n logger.throwArgumentError(\"invalid hexData\", \"value\", data );\n }\n\n offset = 2 + 2 * offset;\n\n if (endOffset != null) {\n return \"0x\" + data.substring(offset, 2 + 2 * endOffset);\n }\n\n return \"0x\" + data.substring(offset);\n}\n\nexport function hexConcat(items: ReadonlyArray<BytesLike>): string {\n let result = \"0x\";\n items.forEach((item) => {\n result += hexlify(item).substring(2);\n });\n return result;\n}\n\nexport function hexValue(value: BytesLike | Hexable | number | bigint): string {\n const trimmed = hexStripZeros(hexlify(value, { hexPad: \"left\" }));\n if (trimmed === \"0x\") { return \"0x0\"; }\n return trimmed;\n}\n\nexport function hexStripZeros(value: BytesLike): string {\n if (typeof(value) !== \"string\") { value = hexlify(value); }\n\n if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n value = value.substring(2);\n let offset = 0;\n while (offset < value.length && value[offset] === \"0\") { offset++; }\n return \"0x\" + value.substring(offset);\n}\n\nexport function hexZeroPad(value: BytesLike, length: number): string {\n if (typeof(value) !== \"string\") {\n value = hexlify(value);\n } else if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n\n if (value.length > 2 * length + 2) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[1]);\n }\n\n while (value.length < 2 * length + 2) {\n value = \"0x0\" + value.substring(2);\n }\n\n return value;\n}\n\nexport function splitSignature(signature: SignatureLike): Signature {\n\n const result = {\n r: \"0x\",\n s: \"0x\",\n _vs: \"0x\",\n recoveryParam: 0,\n v: 0,\n yParityAndS: \"0x\",\n compact: \"0x\"\n };\n\n if (isBytesLike(signature)) {\n let bytes: Uint8Array = arrayify(signature);\n\n // Get the r, s and v\n if (bytes.length === 64) {\n // EIP-2098; pull the v from the top bit of s and clear it\n result.v = 27 + (bytes[32] >> 7);\n bytes[32] &= 0x7f;\n\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n\n } else if (bytes.length === 65) {\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n result.v = bytes[64];\n } else {\n\n logger.throwArgumentError(\"invalid signature string\", \"signature\", signature);\n }\n\n\n // Allow a recid to be used as the v\n if (result.v < 27) {\n if (result.v === 0 || result.v === 1) {\n result.v += 27;\n } else {\n logger.throwArgumentError(\"signature invalid v byte\", \"signature\", signature);\n }\n }\n\n // Compute recoveryParam from v\n result.recoveryParam = 1 - (result.v % 2);\n\n // Compute _vs from recoveryParam and s\n if (result.recoveryParam) { bytes[32] |= 0x80; }\n result._vs = hexlify(bytes.slice(32, 64))\n\n } else {\n result.r = signature.r;\n result.s = signature.s;\n result.v = signature.v;\n result.recoveryParam = signature.recoveryParam;\n result._vs = signature._vs;\n\n // If the _vs is available, use it to populate missing s, v and recoveryParam\n // and verify non-missing s, v and recoveryParam\n if (result._vs != null) {\n const vs = zeroPad(arrayify(result._vs), 32);\n result._vs = hexlify(vs);\n\n // Set or check the recid\n const recoveryParam = ((vs[0] >= 128) ? 1: 0);\n if (result.recoveryParam == null) {\n result.recoveryParam = recoveryParam;\n } else if (result.recoveryParam !== recoveryParam) {\n logger.throwArgumentError(\"signature recoveryParam mismatch _vs\", \"signature\", signature);\n }\n\n // Set or check the s\n vs[0] &= 0x7f;\n const s = hexlify(vs);\n if (result.s == null) {\n result.s = s;\n } else if (result.s !== s) {\n logger.throwArgumentError(\"signature v mismatch _vs\", \"signature\", signature);\n }\n }\n\n // Use recid and v to populate each other\n if (result.recoveryParam == null) {\n if (result.v == null) {\n logger.throwArgumentError(\"signature missing v and recoveryParam\", \"signature\", signature);\n } else if (result.v === 0 || result.v === 1) {\n result.recoveryParam = result.v;\n } else {\n result.recoveryParam = 1 - (result.v % 2);\n }\n } else {\n if (result.v == null) {\n result.v = 27 + result.recoveryParam;\n } else {\n const recId = (result.v === 0 || result.v === 1) ? result.v :(1 - (result.v % 2));\n if (result.recoveryParam !== recId) {\n logger.throwArgumentError(\"signature recoveryParam mismatch v\", \"signature\", signature);\n }\n }\n }\n\n if (result.r == null || !isHexString(result.r)) {\n logger.throwArgumentError(\"signature missing or invalid r\", \"signature\", signature);\n } else {\n result.r = hexZeroPad(result.r, 32);\n }\n\n if (result.s == null || !isHexString(result.s)) {\n logger.throwArgumentError(\"signature missing or invalid s\", \"signature\", signature);\n } else {\n result.s = hexZeroPad(result.s, 32);\n }\n\n const vs = arrayify(result.s);\n if (vs[0] >= 128) {\n logger.throwArgumentError(\"signature s out of range\", \"signature\", signature);\n }\n if (result.recoveryParam) { vs[0] |= 0x80; }\n const _vs = hexlify(vs);\n\n if (result._vs) {\n if (!isHexString(result._vs)) {\n logger.throwArgumentError(\"signature invalid _vs\", \"signature\", signature);\n }\n result._vs = hexZeroPad(result._vs, 32);\n }\n\n // Set or check the _vs\n if (result._vs == null) {\n result._vs = _vs;\n } else if (result._vs !== _vs) {\n logger.throwArgumentError(\"signature _vs mismatch v and s\", \"signature\", signature);\n }\n }\n\n result.yParityAndS = result._vs;\n result.compact = result.r + result.yParityAndS.substring(2);\n\n return result;\n}\n\nexport function joinSignature(signature: SignatureLike): string {\n signature = splitSignature(signature);\n\n return hexlify(concat([\n signature.r,\n signature.s,\n (signature.recoveryParam ? \"0x1c\": \"0x1b\")\n ]));\n}\n\n","import { arrayify } from '.store/@ethersproject-bytes-npm-5.7.0-4454fe4cb0/package'\nimport { Transaction, VersionedTransaction } from '@solana/web3.js'\n\nexport function toRawTransaction(transaction: Transaction | VersionedTransaction | string): Uint8Array {\n const retval = typeof transaction === 'string' ? arrayify(transaction) : transaction.serialize()\n return retval\n}\n","import {\n Commitment,\n ConfirmOptions,\n Connection,\n GetLatestBlockhashConfig,\n Keypair,\n PublicKey,\n SendOptions,\n Transaction,\n VersionedTransaction,\n sendAndConfirmRawTransaction,\n} from '@solana/web3.js'\nimport * as bip39 from 'bip39'\nimport { derivePath } from 'ed25519-hd-key'\n\nimport {\n Provider,\n SignedTransaction,\n Signer,\n TransactionPending,\n TransactionReceipt,\n TransactionRequest,\n} from '@layerzerolabs/lz-core'\n\nimport { toRawTransaction } from '../utils'\n\nexport class SolanaSigner implements Signer {\n private readonly keypair: Keypair\n private provider?: Connection\n\n private constructor(keypair: Keypair) {\n this.keypair = keypair\n }\n\n static from(source: Keypair): SolanaSigner\n static from(mnemonic: string, path: string): SolanaSigner\n\n static from(source: Keypair | string, path?: string): SolanaSigner {\n if (source instanceof Keypair) {\n return new this(source)\n } else if (typeof source === 'string') {\n const keypair = getKeypair(source, path)\n return new this(keypair)\n } else {\n throw new Error('Invalid parameters')\n }\n }\n\n get native(): unknown {\n return this.keypair\n }\n\n connect(provider: Provider): this {\n if (!(provider.native instanceof Connection)) {\n throw new Error('Only @solana/web3.js Connection is supported.')\n }\n this.provider = provider.native\n return this\n }\n\n async getAddress(): Promise<string> {\n return Promise.resolve(this.keypair.publicKey.toBase58())\n }\n\n get address(): string {\n return this.publicKey.toBase58()\n }\n\n get publicKey(): PublicKey {\n return this.keypair.publicKey\n }\n\n get secretKey(): Uint8Array {\n return this.keypair.secretKey\n }\n\n async sendAndConfirm(transaction: SignedTransaction, opts?: ConfirmOptions): Promise<TransactionReceipt> {\n const provider = this.assertAndGetProvider()\n const _transaction = transaction.signed as Transaction | VersionedTransaction | string\n const rawTransaction = toRawTransaction(_transaction)\n const response = await sendAndConfirmRawTransaction(provider, Buffer.from(rawTransaction), opts)\n return TransactionReceipt.from(response)\n }\n\n async sendTransaction(transaction: SignedTransaction, sendOptions?: SendOptions): Promise<TransactionPending> {\n const provider = this.assertAndGetProvider()\n const _transaction = transaction.signed as Transaction | VersionedTransaction | string\n const rawTransaction = toRawTransaction(_transaction)\n const response = await provider.sendRawTransaction(rawTransaction, sendOptions)\n return TransactionPending.from(response)\n }\n\n async signTransaction(\n transaction: TransactionRequest,\n opts?: Commitment | GetLatestBlockhashConfig\n ): Promise<SignedTransaction> {\n const tx = transaction.request as Transaction | VersionedTransaction\n if (isVersionedTransaction(tx)) {\n tx.sign([this.keypair])\n } else {\n tx.partialSign(this.keypair)\n }\n\n return Promise.resolve(SignedTransaction.from(tx))\n }\n\n async signBuffer(_buffer: Uint8Array): Promise<Uint8Array> {\n await Promise.resolve()\n throw new Error('Method not implemented.')\n }\n\n partialSign(tx: Transaction | VersionedTransaction): void {\n if (isVersionedTransaction(tx)) {\n tx.sign([this.keypair])\n } else {\n tx.partialSign(this.keypair)\n }\n }\n\n private assertAndGetProvider(): Connection {\n if (!this.provider) {\n throw new Error('Signer was not connected to a provider, did you forgot to connect to provider?')\n }\n return this.provider\n }\n\n async buildTransaction(buildTxRequest: unknown): Promise<TransactionRequest> {\n return Promise.reject(new Error('Method not implemented.'))\n }\n}\n\nfunction getKeypair(mnemonic: string, path = \"m/44'/501'/0'/0'\"): Keypair {\n const seed = bip39.mnemonicToSeedSync(mnemonic, '') // (mnemonic, password)\n const privateKey = derivePath(path, seed.toString('hex')).key\n return Keypair.fromSeed(privateKey)\n}\n\n/**\n * Check if a transaction object is a VersionedTransaction or not\n * This function is not exported from @coral-xyz/anchor currently.\n * @param tx\n * @returns bool\n */\nexport const isVersionedTransaction = (tx: Transaction | VersionedTransaction): tx is VersionedTransaction => {\n return 'version' in tx\n}\n"]}
|
package/dist/index.d.mts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Connection, SendOptions, ConfirmOptions, Keypair, PublicKey, Commitment, GetLatestBlockhashConfig, Transaction, VersionedTransaction } from '@solana/web3.js';
|
|
2
2
|
import { Provider, Block, Finality, TransactionResponse, TransactionReceipt, BlockTag, BlockWithTransactions, SignedTransaction, TransactionPending, Signer, TransactionRequest } from '@layerzerolabs/lz-core';
|
|
3
|
-
export { recoverPublicKey } from '@noble/secp256k1';
|
|
4
3
|
|
|
5
4
|
declare class SolanaProvider implements Provider {
|
|
6
5
|
url: string;
|
|
@@ -29,8 +28,6 @@ declare class SolanaProvider implements Provider {
|
|
|
29
28
|
declare class SolanaSigner implements Signer {
|
|
30
29
|
private readonly keypair;
|
|
31
30
|
private provider?;
|
|
32
|
-
private ecdsaPrivateKey?;
|
|
33
|
-
private ecdsaPublicKey?;
|
|
34
31
|
private constructor();
|
|
35
32
|
static from(source: Keypair): SolanaSigner;
|
|
36
33
|
static from(mnemonic: string, path: string): SolanaSigner;
|
|
@@ -40,8 +37,6 @@ declare class SolanaSigner implements Signer {
|
|
|
40
37
|
get address(): string;
|
|
41
38
|
get publicKey(): PublicKey;
|
|
42
39
|
get secretKey(): Uint8Array;
|
|
43
|
-
get ECDSAPrivateKey(): string;
|
|
44
|
-
get ECDSAPublicKey(): string;
|
|
45
40
|
sendAndConfirm(transaction: SignedTransaction, opts?: ConfirmOptions): Promise<TransactionReceipt>;
|
|
46
41
|
sendTransaction(transaction: SignedTransaction, sendOptions?: SendOptions): Promise<TransactionPending>;
|
|
47
42
|
signTransaction(transaction: TransactionRequest, opts?: Commitment | GetLatestBlockhashConfig): Promise<SignedTransaction>;
|
|
@@ -58,10 +53,4 @@ declare class SolanaSigner implements Signer {
|
|
|
58
53
|
*/
|
|
59
54
|
declare const isVersionedTransaction: (tx: Transaction | VersionedTransaction) => tx is VersionedTransaction;
|
|
60
55
|
|
|
61
|
-
|
|
62
|
-
signature: Uint8Array;
|
|
63
|
-
recoveryId: number;
|
|
64
|
-
}>;
|
|
65
|
-
declare function getECDSAPublicKey(privateKey: string): string;
|
|
66
|
-
|
|
67
|
-
export { SolanaProvider, SolanaSigner, getECDSAPublicKey, isVersionedTransaction, signWithECDSA };
|
|
56
|
+
export { SolanaProvider, SolanaSigner, isVersionedTransaction };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Connection, SendOptions, ConfirmOptions, Keypair, PublicKey, Commitment, GetLatestBlockhashConfig, Transaction, VersionedTransaction } from '@solana/web3.js';
|
|
2
2
|
import { Provider, Block, Finality, TransactionResponse, TransactionReceipt, BlockTag, BlockWithTransactions, SignedTransaction, TransactionPending, Signer, TransactionRequest } from '@layerzerolabs/lz-core';
|
|
3
|
-
export { recoverPublicKey } from '@noble/secp256k1';
|
|
4
3
|
|
|
5
4
|
declare class SolanaProvider implements Provider {
|
|
6
5
|
url: string;
|
|
@@ -29,8 +28,6 @@ declare class SolanaProvider implements Provider {
|
|
|
29
28
|
declare class SolanaSigner implements Signer {
|
|
30
29
|
private readonly keypair;
|
|
31
30
|
private provider?;
|
|
32
|
-
private ecdsaPrivateKey?;
|
|
33
|
-
private ecdsaPublicKey?;
|
|
34
31
|
private constructor();
|
|
35
32
|
static from(source: Keypair): SolanaSigner;
|
|
36
33
|
static from(mnemonic: string, path: string): SolanaSigner;
|
|
@@ -40,8 +37,6 @@ declare class SolanaSigner implements Signer {
|
|
|
40
37
|
get address(): string;
|
|
41
38
|
get publicKey(): PublicKey;
|
|
42
39
|
get secretKey(): Uint8Array;
|
|
43
|
-
get ECDSAPrivateKey(): string;
|
|
44
|
-
get ECDSAPublicKey(): string;
|
|
45
40
|
sendAndConfirm(transaction: SignedTransaction, opts?: ConfirmOptions): Promise<TransactionReceipt>;
|
|
46
41
|
sendTransaction(transaction: SignedTransaction, sendOptions?: SendOptions): Promise<TransactionPending>;
|
|
47
42
|
signTransaction(transaction: TransactionRequest, opts?: Commitment | GetLatestBlockhashConfig): Promise<SignedTransaction>;
|
|
@@ -58,10 +53,4 @@ declare class SolanaSigner implements Signer {
|
|
|
58
53
|
*/
|
|
59
54
|
declare const isVersionedTransaction: (tx: Transaction | VersionedTransaction) => tx is VersionedTransaction;
|
|
60
55
|
|
|
61
|
-
|
|
62
|
-
signature: Uint8Array;
|
|
63
|
-
recoveryId: number;
|
|
64
|
-
}>;
|
|
65
|
-
declare function getECDSAPublicKey(privateKey: string): string;
|
|
66
|
-
|
|
67
|
-
export { SolanaProvider, SolanaSigner, getECDSAPublicKey, isVersionedTransaction, signWithECDSA };
|
|
56
|
+
export { SolanaProvider, SolanaSigner, isVersionedTransaction };
|
package/dist/index.mjs
CHANGED
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
import { Connection, PublicKey, sendAndConfirmRawTransaction, Keypair } from '@solana/web3.js';
|
|
2
2
|
import { Block, TransactionResponse, TransactionReceipt, BlockWithTransactions, TransactionPending, SignedTransaction } from '@layerzerolabs/lz-core';
|
|
3
|
-
import { hexlify } from '@ethersproject/bytes';
|
|
4
3
|
import * as bip39 from 'bip39';
|
|
5
4
|
import { derivePath } from 'ed25519-hd-key';
|
|
6
|
-
import { sign, getPublicKey } from '@noble/secp256k1';
|
|
7
|
-
export { recoverPublicKey } from '@noble/secp256k1';
|
|
8
5
|
|
|
9
6
|
// src/providers/solana.ts
|
|
10
7
|
|
|
@@ -488,36 +485,16 @@ var SolanaProvider = class _SolanaProvider {
|
|
|
488
485
|
return TransactionReceipt.from(response);
|
|
489
486
|
}
|
|
490
487
|
};
|
|
491
|
-
async function signWithECDSA(data, privateKey) {
|
|
492
|
-
const [signature, recoveryId] = await sign(data, privateKey.replace("0x", ""), {
|
|
493
|
-
canonical: true,
|
|
494
|
-
recovered: true,
|
|
495
|
-
der: false
|
|
496
|
-
});
|
|
497
|
-
return {
|
|
498
|
-
signature,
|
|
499
|
-
recoveryId
|
|
500
|
-
};
|
|
501
|
-
}
|
|
502
|
-
function getECDSAPublicKey(privateKey) {
|
|
503
|
-
return hexlify(getPublicKey(privateKey.replace("0x", "")).subarray(1));
|
|
504
|
-
}
|
|
505
|
-
|
|
506
|
-
// src/signers/solana.ts
|
|
507
488
|
var SolanaSigner = class {
|
|
508
|
-
constructor(keypair
|
|
489
|
+
constructor(keypair) {
|
|
509
490
|
this.keypair = keypair;
|
|
510
|
-
this.ecdsaPrivateKey = ecdsaPrivateKey;
|
|
511
|
-
if (ecdsaPrivateKey !== void 0) {
|
|
512
|
-
this.ecdsaPublicKey = getECDSAPublicKey(ecdsaPrivateKey);
|
|
513
|
-
}
|
|
514
491
|
}
|
|
515
492
|
static from(source, path) {
|
|
516
493
|
if (source instanceof Keypair) {
|
|
517
494
|
return new this(source);
|
|
518
495
|
} else if (typeof source === "string") {
|
|
519
|
-
const
|
|
520
|
-
return new this(keypair
|
|
496
|
+
const keypair = getKeypair(source, path);
|
|
497
|
+
return new this(keypair);
|
|
521
498
|
} else {
|
|
522
499
|
throw new Error("Invalid parameters");
|
|
523
500
|
}
|
|
@@ -544,18 +521,6 @@ var SolanaSigner = class {
|
|
|
544
521
|
get secretKey() {
|
|
545
522
|
return this.keypair.secretKey;
|
|
546
523
|
}
|
|
547
|
-
get ECDSAPrivateKey() {
|
|
548
|
-
if (this.ecdsaPrivateKey === void 0) {
|
|
549
|
-
throw new Error("ECDSA private key is not available");
|
|
550
|
-
}
|
|
551
|
-
return this.ecdsaPrivateKey;
|
|
552
|
-
}
|
|
553
|
-
get ECDSAPublicKey() {
|
|
554
|
-
if (this.ecdsaPublicKey === void 0) {
|
|
555
|
-
throw new Error("ECDSA public key is not available");
|
|
556
|
-
}
|
|
557
|
-
return this.ecdsaPublicKey;
|
|
558
|
-
}
|
|
559
524
|
async sendAndConfirm(transaction, opts) {
|
|
560
525
|
const provider = this.assertAndGetProvider();
|
|
561
526
|
const _transaction = transaction.signed;
|
|
@@ -603,12 +568,12 @@ var SolanaSigner = class {
|
|
|
603
568
|
function getKeypair(mnemonic, path = "m/44'/501'/0'/0'") {
|
|
604
569
|
const seed = bip39.mnemonicToSeedSync(mnemonic, "");
|
|
605
570
|
const privateKey = derivePath(path, seed.toString("hex")).key;
|
|
606
|
-
return
|
|
571
|
+
return Keypair.fromSeed(privateKey);
|
|
607
572
|
}
|
|
608
573
|
var isVersionedTransaction = (tx) => {
|
|
609
574
|
return "version" in tx;
|
|
610
575
|
};
|
|
611
576
|
|
|
612
|
-
export { SolanaProvider, SolanaSigner,
|
|
577
|
+
export { SolanaProvider, SolanaSigner, isVersionedTransaction };
|
|
613
578
|
//# sourceMappingURL=out.js.map
|
|
614
579
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/providers/solana.ts","../../../../node_modules/.store/@ethersproject-logger-npm-5.7.0-63fe9c3d29/package/src.ts/_version.ts","../../../../node_modules/.store/@ethersproject-logger-npm-5.7.0-63fe9c3d29/package/src.ts/index.ts","../../../../node_modules/.store/@ethersproject-bytes-npm-5.7.0-4454fe4cb0/package/src.ts/_version.ts","../../../../node_modules/.store/@ethersproject-bytes-npm-5.7.0-4454fe4cb0/package/src.ts/index.ts","../src/utils.ts","../src/signers/solana.ts","../src/ecdsa.ts"],"names":["LogLevel","ErrorCode","version","error","hexlify","Connection","sendAndConfirmRawTransaction","SignedTransaction","TransactionPending","TransactionReceipt"],"mappings":"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","sourcesContent":["import {\n ConfirmOptions,\n Connection,\n GetVersionedTransactionConfig,\n ParsedTransactionWithMeta,\n PublicKey,\n SendOptions,\n Transaction,\n TransactionSignature,\n VersionedTransaction,\n sendAndConfirmRawTransaction,\n} from '@solana/web3.js'\n\nimport {\n Block,\n BlockTag,\n BlockWithTransactions,\n Finality,\n Provider,\n SignedTransaction,\n TransactionPending,\n TransactionReceipt,\n TransactionResponse,\n} from '@layerzerolabs/lz-core'\n\nimport { toRawTransaction } from '../utils'\n\nexport class SolanaProvider implements Provider {\n nativeProvider: Connection\n\n constructor(public url: string) {\n this.nativeProvider = new Connection(url, 'confirmed')\n }\n\n static from(url: string): SolanaProvider\n\n static from(source: string): SolanaProvider {\n if (typeof source === 'string') {\n return new SolanaProvider(source)\n } else {\n throw new Error('Invalid parameters')\n }\n }\n\n get native(): Connection {\n return this.nativeProvider\n }\n\n async getBalance(address: string): Promise<string> {\n return this.nativeProvider.getBalance(new PublicKey(address)).then((balance) => balance.toString())\n }\n\n async getBlock(slot: string | number): Promise<Block> {\n const response = await this.nativeProvider.getParsedBlock(parseInt(slot.toString()), {\n commitment: 'confirmed',\n })\n return Block.from(response)\n }\n\n async getBlockNumber(): Promise<number> {\n return this.nativeProvider.getBlockHeight({ commitment: 'confirmed' })\n }\n\n async getSlot(finality?: Finality): Promise<number> {\n return this.nativeProvider.getSlot(finality)\n }\n\n async getBlockTimestamp(slot: string | number): Promise<number> {\n const t = await this.nativeProvider.getBlockTime(parseInt(slot.toString()))\n if (t === null) {\n throw new Error('Block timestamp not available')\n }\n return t\n }\n\n /**\n *\n * @param txHash string The transaction hash is TransactionSignature in Solana\n * @returns TransactionResponse\n */\n async getTransaction(txHash: string): Promise<TransactionResponse> {\n const response: ParsedTransactionWithMeta | null = await this.nativeProvider.getParsedTransaction(txHash, {\n commitment: 'confirmed',\n })\n return TransactionResponse.from(response)\n }\n\n async getTransactionReceipt(txHash: string): Promise<TransactionReceipt> {\n const response: ParsedTransactionWithMeta | null = await this.nativeProvider.getParsedTransaction(txHash, {\n commitment: 'confirmed',\n } satisfies GetVersionedTransactionConfig)\n if (response === null) {\n throw new Error('Transaction not found')\n }\n return TransactionReceipt.from(response)\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async getTransactionCount(\n _addressOrName: string | Promise<string>,\n _blockTag?: BlockTag | Promise<BlockTag>\n ): Promise<number> {\n await Promise.resolve()\n throw new Error('Method not implemented.')\n }\n\n async getBlockWithTransactions(blockTag: string | number): Promise<BlockWithTransactions> {\n if (typeof blockTag === 'string') {\n blockTag = parseInt(blockTag)\n }\n const response = await this.nativeProvider.getBlock(blockTag, { transactionDetails: 'full' })\n if (response === null) {\n throw new Error('Block not found')\n }\n return BlockWithTransactions.from(response)\n }\n\n async sendTransaction(transaction: SignedTransaction, sendOptions?: SendOptions): Promise<TransactionPending> {\n const _transaction = transaction.signed as Transaction | VersionedTransaction | string\n const rawTransaction = toRawTransaction(_transaction)\n\n const response = await this.nativeProvider.sendRawTransaction(rawTransaction, sendOptions)\n return TransactionPending.from(response)\n }\n\n async sendAndConfirm(transaction: SignedTransaction, opts?: ConfirmOptions): Promise<TransactionReceipt> {\n const _transaction = transaction.signed as Transaction | VersionedTransaction | string\n const rawTransaction = toRawTransaction(_transaction)\n\n const response: TransactionSignature = await sendAndConfirmRawTransaction(\n this.nativeProvider,\n Buffer.from(rawTransaction),\n opts\n )\n return TransactionReceipt.from(response)\n }\n}\n","export const version = \"logger/5.7.0\";\n","\"use strict\";\n\nlet _permanentCensorErrors = false;\nlet _censorErrors = false;\n\nconst LogLevels: { [ name: string ]: number } = { debug: 1, \"default\": 2, info: 2, warning: 3, error: 4, off: 5 };\nlet _logLevel = LogLevels[\"default\"];\n\nimport { version } from \"./_version\";\n\nlet _globalLogger: Logger = null;\n\nfunction _checkNormalize(): string {\n try {\n const missing: Array<string> = [ ];\n\n // Make sure all forms of normalization are supported\n [\"NFD\", \"NFC\", \"NFKD\", \"NFKC\"].forEach((form) => {\n try {\n if (\"test\".normalize(form) !== \"test\") {\n throw new Error(\"bad normalize\");\n };\n } catch(error) {\n missing.push(form);\n }\n });\n\n if (missing.length) {\n throw new Error(\"missing \" + missing.join(\", \"));\n }\n\n if (String.fromCharCode(0xe9).normalize(\"NFD\") !== String.fromCharCode(0x65, 0x0301)) {\n throw new Error(\"broken implementation\")\n }\n } catch (error) {\n return error.message;\n }\n\n return null;\n}\n\nconst _normalizeError = _checkNormalize();\n\nexport enum LogLevel {\n DEBUG = \"DEBUG\",\n INFO = \"INFO\",\n WARNING = \"WARNING\",\n ERROR = \"ERROR\",\n OFF = \"OFF\"\n}\n\n\nexport enum ErrorCode {\n\n ///////////////////\n // Generic Errors\n\n // Unknown Error\n UNKNOWN_ERROR = \"UNKNOWN_ERROR\",\n\n // Not Implemented\n NOT_IMPLEMENTED = \"NOT_IMPLEMENTED\",\n\n // Unsupported Operation\n // - operation\n UNSUPPORTED_OPERATION = \"UNSUPPORTED_OPERATION\",\n\n // Network Error (i.e. Ethereum Network, such as an invalid chain ID)\n // - event (\"noNetwork\" is not re-thrown in provider.ready; otherwise thrown)\n NETWORK_ERROR = \"NETWORK_ERROR\",\n\n // Some sort of bad response from the server\n SERVER_ERROR = \"SERVER_ERROR\",\n\n // Timeout\n TIMEOUT = \"TIMEOUT\",\n\n ///////////////////\n // Operational Errors\n\n // Buffer Overrun\n BUFFER_OVERRUN = \"BUFFER_OVERRUN\",\n\n // Numeric Fault\n // - operation: the operation being executed\n // - fault: the reason this faulted\n NUMERIC_FAULT = \"NUMERIC_FAULT\",\n\n\n ///////////////////\n // Argument Errors\n\n // Missing new operator to an object\n // - name: The name of the class\n MISSING_NEW = \"MISSING_NEW\",\n\n // Invalid argument (e.g. value is incompatible with type) to a function:\n // - argument: The argument name that was invalid\n // - value: The value of the argument\n INVALID_ARGUMENT = \"INVALID_ARGUMENT\",\n\n // Missing argument to a function:\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n MISSING_ARGUMENT = \"MISSING_ARGUMENT\",\n\n // Too many arguments\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n UNEXPECTED_ARGUMENT = \"UNEXPECTED_ARGUMENT\",\n\n\n ///////////////////\n // Blockchain Errors\n\n // Call exception\n // - transaction: the transaction\n // - address?: the contract address\n // - args?: The arguments passed into the function\n // - method?: The Solidity method signature\n // - errorSignature?: The EIP848 error signature\n // - errorArgs?: The EIP848 error parameters\n // - reason: The reason (only for EIP848 \"Error(string)\")\n CALL_EXCEPTION = \"CALL_EXCEPTION\",\n\n // Insufficient funds (< value + gasLimit * gasPrice)\n // - transaction: the transaction attempted\n INSUFFICIENT_FUNDS = \"INSUFFICIENT_FUNDS\",\n\n // Nonce has already been used\n // - transaction: the transaction attempted\n NONCE_EXPIRED = \"NONCE_EXPIRED\",\n\n // The replacement fee for the transaction is too low\n // - transaction: the transaction attempted\n REPLACEMENT_UNDERPRICED = \"REPLACEMENT_UNDERPRICED\",\n\n // The gas limit could not be estimated\n // - transaction: the transaction passed to estimateGas\n UNPREDICTABLE_GAS_LIMIT = \"UNPREDICTABLE_GAS_LIMIT\",\n\n // The transaction was replaced by one with a higher gas price\n // - reason: \"cancelled\", \"replaced\" or \"repriced\"\n // - cancelled: true if reason == \"cancelled\" or reason == \"replaced\")\n // - hash: original transaction hash\n // - replacement: the full TransactionsResponse for the replacement\n // - receipt: the receipt of the replacement\n TRANSACTION_REPLACED = \"TRANSACTION_REPLACED\",\n\n\n ///////////////////\n // Interaction Errors\n\n // The user rejected the action, such as signing a message or sending\n // a transaction\n ACTION_REJECTED = \"ACTION_REJECTED\",\n};\n\nconst HEX = \"0123456789abcdef\";\n\nexport class Logger {\n readonly version: string;\n\n static errors = ErrorCode;\n\n static levels = LogLevel;\n\n constructor(version: string) {\n Object.defineProperty(this, \"version\", {\n enumerable: true,\n value: version,\n writable: false\n });\n }\n\n _log(logLevel: LogLevel, args: Array<any>): void {\n const level = logLevel.toLowerCase();\n if (LogLevels[level] == null) {\n this.throwArgumentError(\"invalid log level name\", \"logLevel\", logLevel);\n }\n if (_logLevel > LogLevels[level]) { return; }\n console.log.apply(console, args);\n }\n\n debug(...args: Array<any>): void {\n this._log(Logger.levels.DEBUG, args);\n }\n\n info(...args: Array<any>): void {\n this._log(Logger.levels.INFO, args);\n }\n\n warn(...args: Array<any>): void {\n this._log(Logger.levels.WARNING, args);\n }\n\n makeError(message: string, code?: ErrorCode, params?: any): Error {\n // Errors are being censored\n if (_censorErrors) {\n return this.makeError(\"censored error\", code, { });\n }\n\n if (!code) { code = Logger.errors.UNKNOWN_ERROR; }\n if (!params) { params = {}; }\n\n const messageDetails: Array<string> = [];\n Object.keys(params).forEach((key) => {\n const value = params[key];\n try {\n if (value instanceof Uint8Array) {\n let hex = \"\";\n for (let i = 0; i < value.length; i++) {\n hex += HEX[value[i] >> 4];\n hex += HEX[value[i] & 0x0f];\n }\n messageDetails.push(key + \"=Uint8Array(0x\" + hex + \")\");\n } else {\n messageDetails.push(key + \"=\" + JSON.stringify(value));\n }\n } catch (error) {\n messageDetails.push(key + \"=\" + JSON.stringify(params[key].toString()));\n }\n });\n messageDetails.push(`code=${ code }`);\n messageDetails.push(`version=${ this.version }`);\n\n const reason = message;\n\n let url = \"\";\n\n switch (code) {\n case ErrorCode.NUMERIC_FAULT: {\n url = \"NUMERIC_FAULT\";\n const fault = message;\n\n switch (fault) {\n case \"overflow\": case \"underflow\": case \"division-by-zero\":\n url += \"-\" + fault;\n break;\n case \"negative-power\": case \"negative-width\":\n url += \"-unsupported\";\n break;\n case \"unbound-bitwise-result\":\n url += \"-unbound-result\";\n break;\n }\n break;\n }\n case ErrorCode.CALL_EXCEPTION:\n case ErrorCode.INSUFFICIENT_FUNDS:\n case ErrorCode.MISSING_NEW:\n case ErrorCode.NONCE_EXPIRED:\n case ErrorCode.REPLACEMENT_UNDERPRICED:\n case ErrorCode.TRANSACTION_REPLACED:\n case ErrorCode.UNPREDICTABLE_GAS_LIMIT:\n url = code;\n break;\n }\n\n if (url) {\n message += \" [ See: https:/\\/links.ethers.org/v5-errors-\" + url + \" ]\";\n }\n\n if (messageDetails.length) {\n message += \" (\" + messageDetails.join(\", \") + \")\";\n }\n\n // @TODO: Any??\n const error: any = new Error(message);\n error.reason = reason;\n error.code = code\n\n Object.keys(params).forEach(function(key) {\n error[key] = params[key];\n });\n\n return error;\n }\n\n throwError(message: string, code?: ErrorCode, params?: any): never {\n throw this.makeError(message, code, params);\n }\n\n throwArgumentError(message: string, name: string, value: any): never {\n return this.throwError(message, Logger.errors.INVALID_ARGUMENT, {\n argument: name,\n value: value\n });\n }\n\n assert(condition: any, message: string, code?: ErrorCode, params?: any): void {\n if (!!condition) { return; }\n this.throwError(message, code, params);\n }\n\n assertArgument(condition: any, message: string, name: string, value: any): void {\n if (!!condition) { return; }\n this.throwArgumentError(message, name, value);\n }\n\n checkNormalize(message?: string): void {\n if (message == null) { message = \"platform missing String.prototype.normalize\"; }\n if (_normalizeError) {\n this.throwError(\"platform missing String.prototype.normalize\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"String.prototype.normalize\", form: _normalizeError\n });\n }\n }\n\n checkSafeUint53(value: number, message?: string): void {\n if (typeof(value) !== \"number\") { return; }\n\n if (message == null) { message = \"value not safe\"; }\n\n if (value < 0 || value >= 0x1fffffffffffff) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"out-of-safe-range\",\n value: value\n });\n }\n\n if (value % 1) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"non-integer\",\n value: value\n });\n }\n }\n\n checkArgumentCount(count: number, expectedCount: number, message?: string): void {\n if (message) {\n message = \": \" + message;\n } else {\n message = \"\";\n }\n\n if (count < expectedCount) {\n this.throwError(\"missing argument\" + message, Logger.errors.MISSING_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n\n if (count > expectedCount) {\n this.throwError(\"too many arguments\" + message, Logger.errors.UNEXPECTED_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n }\n\n checkNew(target: any, kind: any): void {\n if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n\n checkAbstract(target: any, kind: any): void {\n if (target === kind) {\n this.throwError(\n \"cannot instantiate abstract class \" + JSON.stringify(kind.name) + \" directly; use a sub-class\",\n Logger.errors.UNSUPPORTED_OPERATION,\n { name: target.name, operation: \"new\" }\n );\n } else if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n\n static globalLogger(): Logger {\n if (!_globalLogger) { _globalLogger = new Logger(version); }\n return _globalLogger;\n }\n\n static setCensorship(censorship: boolean, permanent?: boolean): void {\n if (!censorship && permanent) {\n this.globalLogger().throwError(\"cannot permanently disable censorship\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n\n if (_permanentCensorErrors) {\n if (!censorship) { return; }\n this.globalLogger().throwError(\"error censorship permanent\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n\n _censorErrors = !!censorship;\n _permanentCensorErrors = !!permanent;\n }\n\n static setLogLevel(logLevel: LogLevel): void {\n const level = LogLevels[logLevel.toLowerCase()];\n if (level == null) {\n Logger.globalLogger().warn(\"invalid log level - \" + logLevel);\n return;\n }\n _logLevel = level;\n }\n\n static from(version: string): Logger {\n return new Logger(version);\n }\n}\n","export const version = \"bytes/5.7.0\";\n","\"use strict\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n///////////////////////////////\n// Exported Types\n\nexport type Bytes = ArrayLike<number>;\n\nexport type BytesLike = Bytes | string;\n\nexport type DataOptions = {\n allowMissingPrefix?: boolean;\n hexPad?: \"left\" | \"right\" | null;\n};\n\nexport interface Hexable {\n toHexString(): string;\n}\n\n\n/*\nexport interface HexString {\n length: number;\n substring: (start: number, end?: number) => string;\n\n [index: number]: string;\n}\n*/\n\nexport type SignatureLike = {\n r: string;\n s?: string;\n _vs?: string,\n recoveryParam?: number;\n v?: number;\n} | BytesLike;\n\nexport interface Signature {\n r: string;\n\n s: string;\n _vs: string,\n\n recoveryParam: number;\n v: number;\n\n yParityAndS: string\n compact: string;\n}\n\n///////////////////////////////\n\n\nfunction isHexable(value: any): value is Hexable {\n return !!(value.toHexString);\n}\n\nfunction addSlice(array: Uint8Array): Uint8Array {\n if (array.slice) { return array; }\n\n array.slice = function() {\n const args = Array.prototype.slice.call(arguments);\n return addSlice(new Uint8Array(Array.prototype.slice.apply(array, args)));\n }\n\n return array;\n}\n\nexport function isBytesLike(value: any): value is BytesLike {\n return ((isHexString(value) && !(value.length % 2)) || isBytes(value));\n}\n\nfunction isInteger(value: number) {\n return (typeof(value) === \"number\" && value == value && (value % 1) === 0);\n}\n\nexport function isBytes(value: any): value is Bytes {\n if (value == null) { return false; }\n\n if (value.constructor === Uint8Array) { return true; }\n if (typeof(value) === \"string\") { return false; }\n if (!isInteger(value.length) || value.length < 0) { return false; }\n\n for (let i = 0; i < value.length; i++) {\n const v = value[i];\n if (!isInteger(v) || v < 0 || v >= 256) { return false; }\n }\n return true;\n}\n\n\nexport function arrayify(value: BytesLike | Hexable | number, options?: DataOptions): Uint8Array {\n if (!options) { options = { }; }\n\n if (typeof(value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid arrayify value\");\n\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value = parseInt(String(value / 256));\n }\n if (result.length === 0) { result.push(0); }\n\n return addSlice(new Uint8Array(result));\n }\n\n if (options.allowMissingPrefix && typeof(value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n\n if (isHexable(value)) { value = value.toHexString(); }\n\n if (isHexString(value)) {\n let hex = (<string>value).substring(2);\n if (hex.length % 2) {\n if (options.hexPad === \"left\") {\n hex = \"0\" + hex;\n } else if (options.hexPad === \"right\") {\n hex += \"0\";\n } else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n\n const result = [];\n for (let i = 0; i < hex.length; i += 2) {\n result.push(parseInt(hex.substring(i, i + 2), 16));\n }\n\n return addSlice(new Uint8Array(result));\n }\n\n if (isBytes(value)) {\n return addSlice(new Uint8Array(value));\n }\n\n return logger.throwArgumentError(\"invalid arrayify value\", \"value\", value);\n}\n\nexport function concat(items: ReadonlyArray<BytesLike>): Uint8Array {\n const objects = items.map(item => arrayify(item));\n const length = objects.reduce((accum, item) => (accum + item.length), 0);\n\n const result = new Uint8Array(length);\n\n objects.reduce((offset, object) => {\n result.set(object, offset);\n return offset + object.length;\n }, 0);\n\n return addSlice(result);\n}\n\nexport function stripZeros(value: BytesLike): Uint8Array {\n let result: Uint8Array = arrayify(value);\n\n if (result.length === 0) { return result; }\n\n // Find the first non-zero entry\n let start = 0;\n while (start < result.length && result[start] === 0) { start++ }\n\n // If we started with zeros, strip them\n if (start) {\n result = result.slice(start);\n }\n\n return result;\n}\n\nexport function zeroPad(value: BytesLike, length: number): Uint8Array {\n value = arrayify(value);\n\n if (value.length > length) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[0]);\n }\n\n const result = new Uint8Array(length);\n result.set(value, length - value.length);\n return addSlice(result);\n}\n\n\nexport function isHexString(value: any, length?: number): boolean {\n if (typeof(value) !== \"string\" || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n return false\n }\n if (length && value.length !== 2 + 2 * length) { return false; }\n return true;\n}\n\nconst HexCharacters: string = \"0123456789abcdef\";\n\nexport function hexlify(value: BytesLike | Hexable | number | bigint, options?: DataOptions): string {\n if (!options) { options = { }; }\n\n if (typeof(value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid hexlify value\");\n\n let hex = \"\";\n while (value) {\n hex = HexCharacters[value & 0xf] + hex;\n value = Math.floor(value / 16);\n }\n\n if (hex.length) {\n if (hex.length % 2) { hex = \"0\" + hex; }\n return \"0x\" + hex;\n }\n\n return \"0x00\";\n }\n\n if (typeof(value) === \"bigint\") {\n value = value.toString(16);\n if (value.length % 2) { return (\"0x0\" + value); }\n return \"0x\" + value;\n }\n\n if (options.allowMissingPrefix && typeof(value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n\n if (isHexable(value)) { return value.toHexString(); }\n\n if (isHexString(value)) {\n if ((<string>value).length % 2) {\n if (options.hexPad === \"left\") {\n value = \"0x0\" + (<string>value).substring(2);\n } else if (options.hexPad === \"right\") {\n value += \"0\";\n } else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n return (<string>value).toLowerCase();\n }\n\n if (isBytes(value)) {\n let result = \"0x\";\n for (let i = 0; i < value.length; i++) {\n let v = value[i];\n result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];\n }\n return result;\n }\n\n return logger.throwArgumentError(\"invalid hexlify value\", \"value\", value);\n}\n\n/*\nfunction unoddify(value: BytesLike | Hexable | number): BytesLike | Hexable | number {\n if (typeof(value) === \"string\" && value.length % 2 && value.substring(0, 2) === \"0x\") {\n return \"0x0\" + value.substring(2);\n }\n return value;\n}\n*/\nexport function hexDataLength(data: BytesLike) {\n if (typeof(data) !== \"string\") {\n data = hexlify(data);\n } else if (!isHexString(data) || (data.length % 2)) {\n return null;\n }\n\n return (data.length - 2) / 2;\n}\n\nexport function hexDataSlice(data: BytesLike, offset: number, endOffset?: number): string {\n if (typeof(data) !== \"string\") {\n data = hexlify(data);\n } else if (!isHexString(data) || (data.length % 2)) {\n logger.throwArgumentError(\"invalid hexData\", \"value\", data );\n }\n\n offset = 2 + 2 * offset;\n\n if (endOffset != null) {\n return \"0x\" + data.substring(offset, 2 + 2 * endOffset);\n }\n\n return \"0x\" + data.substring(offset);\n}\n\nexport function hexConcat(items: ReadonlyArray<BytesLike>): string {\n let result = \"0x\";\n items.forEach((item) => {\n result += hexlify(item).substring(2);\n });\n return result;\n}\n\nexport function hexValue(value: BytesLike | Hexable | number | bigint): string {\n const trimmed = hexStripZeros(hexlify(value, { hexPad: \"left\" }));\n if (trimmed === \"0x\") { return \"0x0\"; }\n return trimmed;\n}\n\nexport function hexStripZeros(value: BytesLike): string {\n if (typeof(value) !== \"string\") { value = hexlify(value); }\n\n if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n value = value.substring(2);\n let offset = 0;\n while (offset < value.length && value[offset] === \"0\") { offset++; }\n return \"0x\" + value.substring(offset);\n}\n\nexport function hexZeroPad(value: BytesLike, length: number): string {\n if (typeof(value) !== \"string\") {\n value = hexlify(value);\n } else if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n\n if (value.length > 2 * length + 2) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[1]);\n }\n\n while (value.length < 2 * length + 2) {\n value = \"0x0\" + value.substring(2);\n }\n\n return value;\n}\n\nexport function splitSignature(signature: SignatureLike): Signature {\n\n const result = {\n r: \"0x\",\n s: \"0x\",\n _vs: \"0x\",\n recoveryParam: 0,\n v: 0,\n yParityAndS: \"0x\",\n compact: \"0x\"\n };\n\n if (isBytesLike(signature)) {\n let bytes: Uint8Array = arrayify(signature);\n\n // Get the r, s and v\n if (bytes.length === 64) {\n // EIP-2098; pull the v from the top bit of s and clear it\n result.v = 27 + (bytes[32] >> 7);\n bytes[32] &= 0x7f;\n\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n\n } else if (bytes.length === 65) {\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n result.v = bytes[64];\n } else {\n\n logger.throwArgumentError(\"invalid signature string\", \"signature\", signature);\n }\n\n\n // Allow a recid to be used as the v\n if (result.v < 27) {\n if (result.v === 0 || result.v === 1) {\n result.v += 27;\n } else {\n logger.throwArgumentError(\"signature invalid v byte\", \"signature\", signature);\n }\n }\n\n // Compute recoveryParam from v\n result.recoveryParam = 1 - (result.v % 2);\n\n // Compute _vs from recoveryParam and s\n if (result.recoveryParam) { bytes[32] |= 0x80; }\n result._vs = hexlify(bytes.slice(32, 64))\n\n } else {\n result.r = signature.r;\n result.s = signature.s;\n result.v = signature.v;\n result.recoveryParam = signature.recoveryParam;\n result._vs = signature._vs;\n\n // If the _vs is available, use it to populate missing s, v and recoveryParam\n // and verify non-missing s, v and recoveryParam\n if (result._vs != null) {\n const vs = zeroPad(arrayify(result._vs), 32);\n result._vs = hexlify(vs);\n\n // Set or check the recid\n const recoveryParam = ((vs[0] >= 128) ? 1: 0);\n if (result.recoveryParam == null) {\n result.recoveryParam = recoveryParam;\n } else if (result.recoveryParam !== recoveryParam) {\n logger.throwArgumentError(\"signature recoveryParam mismatch _vs\", \"signature\", signature);\n }\n\n // Set or check the s\n vs[0] &= 0x7f;\n const s = hexlify(vs);\n if (result.s == null) {\n result.s = s;\n } else if (result.s !== s) {\n logger.throwArgumentError(\"signature v mismatch _vs\", \"signature\", signature);\n }\n }\n\n // Use recid and v to populate each other\n if (result.recoveryParam == null) {\n if (result.v == null) {\n logger.throwArgumentError(\"signature missing v and recoveryParam\", \"signature\", signature);\n } else if (result.v === 0 || result.v === 1) {\n result.recoveryParam = result.v;\n } else {\n result.recoveryParam = 1 - (result.v % 2);\n }\n } else {\n if (result.v == null) {\n result.v = 27 + result.recoveryParam;\n } else {\n const recId = (result.v === 0 || result.v === 1) ? result.v :(1 - (result.v % 2));\n if (result.recoveryParam !== recId) {\n logger.throwArgumentError(\"signature recoveryParam mismatch v\", \"signature\", signature);\n }\n }\n }\n\n if (result.r == null || !isHexString(result.r)) {\n logger.throwArgumentError(\"signature missing or invalid r\", \"signature\", signature);\n } else {\n result.r = hexZeroPad(result.r, 32);\n }\n\n if (result.s == null || !isHexString(result.s)) {\n logger.throwArgumentError(\"signature missing or invalid s\", \"signature\", signature);\n } else {\n result.s = hexZeroPad(result.s, 32);\n }\n\n const vs = arrayify(result.s);\n if (vs[0] >= 128) {\n logger.throwArgumentError(\"signature s out of range\", \"signature\", signature);\n }\n if (result.recoveryParam) { vs[0] |= 0x80; }\n const _vs = hexlify(vs);\n\n if (result._vs) {\n if (!isHexString(result._vs)) {\n logger.throwArgumentError(\"signature invalid _vs\", \"signature\", signature);\n }\n result._vs = hexZeroPad(result._vs, 32);\n }\n\n // Set or check the _vs\n if (result._vs == null) {\n result._vs = _vs;\n } else if (result._vs !== _vs) {\n logger.throwArgumentError(\"signature _vs mismatch v and s\", \"signature\", signature);\n }\n }\n\n result.yParityAndS = result._vs;\n result.compact = result.r + result.yParityAndS.substring(2);\n\n return result;\n}\n\nexport function joinSignature(signature: SignatureLike): string {\n signature = splitSignature(signature);\n\n return hexlify(concat([\n signature.r,\n signature.s,\n (signature.recoveryParam ? \"0x1c\": \"0x1b\")\n ]));\n}\n\n","import { arrayify } from '.store/@ethersproject-bytes-npm-5.7.0-4454fe4cb0/package'\nimport { Transaction, VersionedTransaction } from '@solana/web3.js'\n\nexport function toRawTransaction(transaction: Transaction | VersionedTransaction | string): Uint8Array {\n const retval = typeof transaction === 'string' ? arrayify(transaction) : transaction.serialize()\n return retval\n}\n","import { hexlify } from '@ethersproject/bytes'\nimport {\n Commitment,\n ConfirmOptions,\n Connection,\n GetLatestBlockhashConfig,\n Keypair,\n PublicKey,\n SendOptions,\n Transaction,\n VersionedTransaction,\n sendAndConfirmRawTransaction,\n} from '@solana/web3.js'\nimport * as bip39 from 'bip39'\nimport { derivePath } from 'ed25519-hd-key'\n\nimport {\n Provider,\n SignedTransaction,\n Signer,\n TransactionPending,\n TransactionReceipt,\n TransactionRequest,\n} from '@layerzerolabs/lz-core'\n\nimport { getECDSAPublicKey } from '../ecdsa'\nimport { toRawTransaction } from '../utils'\n\nexport class SolanaSigner implements Signer {\n private readonly keypair: Keypair\n private provider?: Connection\n private ecdsaPrivateKey?: string\n private ecdsaPublicKey?: string\n\n private constructor(keypair: Keypair, ecdsaPrivateKey?: string) {\n this.keypair = keypair\n this.ecdsaPrivateKey = ecdsaPrivateKey\n if (ecdsaPrivateKey !== undefined) {\n this.ecdsaPublicKey = getECDSAPublicKey(ecdsaPrivateKey)\n }\n }\n\n static from(source: Keypair): SolanaSigner\n static from(mnemonic: string, path: string): SolanaSigner\n\n static from(source: Keypair | string, path?: string): SolanaSigner {\n if (source instanceof Keypair) {\n return new this(source)\n } else if (typeof source === 'string') {\n const { ecdsaPrivateKey, keypair } = getKeypair(source, path)\n return new this(keypair, ecdsaPrivateKey)\n } else {\n throw new Error('Invalid parameters')\n }\n }\n\n get native(): unknown {\n return this.keypair\n }\n\n connect(provider: Provider): this {\n if (!(provider.native instanceof Connection)) {\n throw new Error('Only @solana/web3.js Connection is supported.')\n }\n this.provider = provider.native\n return this\n }\n\n async getAddress(): Promise<string> {\n return Promise.resolve(this.keypair.publicKey.toBase58())\n }\n\n get address(): string {\n return this.publicKey.toBase58()\n }\n\n get publicKey(): PublicKey {\n return this.keypair.publicKey\n }\n\n get secretKey(): Uint8Array {\n return this.keypair.secretKey\n }\n\n get ECDSAPrivateKey(): string {\n if (this.ecdsaPrivateKey === undefined) {\n throw new Error('ECDSA private key is not available')\n }\n return this.ecdsaPrivateKey\n }\n\n get ECDSAPublicKey(): string {\n if (this.ecdsaPublicKey === undefined) {\n throw new Error('ECDSA public key is not available')\n }\n return this.ecdsaPublicKey\n }\n\n async sendAndConfirm(transaction: SignedTransaction, opts?: ConfirmOptions): Promise<TransactionReceipt> {\n const provider = this.assertAndGetProvider()\n const _transaction = transaction.signed as Transaction | VersionedTransaction | string\n const rawTransaction = toRawTransaction(_transaction)\n const response = await sendAndConfirmRawTransaction(provider, Buffer.from(rawTransaction), opts)\n return TransactionReceipt.from(response)\n }\n\n async sendTransaction(transaction: SignedTransaction, sendOptions?: SendOptions): Promise<TransactionPending> {\n const provider = this.assertAndGetProvider()\n const _transaction = transaction.signed as Transaction | VersionedTransaction | string\n const rawTransaction = toRawTransaction(_transaction)\n const response = await provider.sendRawTransaction(rawTransaction, sendOptions)\n return TransactionPending.from(response)\n }\n\n async signTransaction(\n transaction: TransactionRequest,\n opts?: Commitment | GetLatestBlockhashConfig\n ): Promise<SignedTransaction> {\n const tx = transaction.request as Transaction | VersionedTransaction\n if (isVersionedTransaction(tx)) {\n tx.sign([this.keypair])\n } else {\n tx.partialSign(this.keypair)\n }\n\n return Promise.resolve(SignedTransaction.from(tx))\n }\n\n async signBuffer(_buffer: Uint8Array): Promise<Uint8Array> {\n await Promise.resolve()\n throw new Error('Method not implemented.')\n }\n\n partialSign(tx: Transaction | VersionedTransaction): void {\n if (isVersionedTransaction(tx)) {\n tx.sign([this.keypair])\n } else {\n tx.partialSign(this.keypair)\n }\n }\n\n private assertAndGetProvider(): Connection {\n if (!this.provider) {\n throw new Error('Signer was not connected to a provider, did you forgot to connect to provider?')\n }\n return this.provider\n }\n\n async buildTransaction(buildTxRequest: unknown): Promise<TransactionRequest> {\n return Promise.reject(new Error('Method not implemented.'))\n }\n}\n\nfunction getKeypair(mnemonic: string, path = \"m/44'/501'/0'/0'\"): { ecdsaPrivateKey: string; keypair: Keypair } {\n const seed = bip39.mnemonicToSeedSync(mnemonic, '') // (mnemonic, password)\n const privateKey = derivePath(path, seed.toString('hex')).key\n return { ecdsaPrivateKey: hexlify(privateKey), keypair: Keypair.fromSeed(privateKey) }\n}\n\n/**\n * Check if a transaction object is a VersionedTransaction or not\n * This function is not exported from @coral-xyz/anchor currently.\n * @param tx\n * @returns bool\n */\nexport const isVersionedTransaction = (tx: Transaction | VersionedTransaction): tx is VersionedTransaction => {\n return 'version' in tx\n}\n","import { hexlify } from '@ethersproject/bytes'\nimport { getPublicKey, sign } from '@noble/secp256k1'\n\nexport { recoverPublicKey } from '@noble/secp256k1'\n\nexport async function signWithECDSA(\n data: Buffer,\n privateKey: string\n): Promise<{ signature: Uint8Array; recoveryId: number }> {\n const [signature, recoveryId] = await sign(data, privateKey.replace('0x', ''), {\n canonical: true,\n recovered: true,\n der: false,\n })\n return {\n signature,\n recoveryId,\n }\n}\n\nexport function getECDSAPublicKey(privateKey: string): string {\n // remove the compression byte\n return hexlify(getPublicKey(privateKey.replace('0x', '')).subarray(1))\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/providers/solana.ts","../../../../node_modules/.store/@ethersproject-logger-npm-5.7.0-63fe9c3d29/package/src.ts/_version.ts","../../../../node_modules/.store/@ethersproject-logger-npm-5.7.0-63fe9c3d29/package/src.ts/index.ts","../../../../node_modules/.store/@ethersproject-bytes-npm-5.7.0-4454fe4cb0/package/src.ts/_version.ts","../../../../node_modules/.store/@ethersproject-bytes-npm-5.7.0-4454fe4cb0/package/src.ts/index.ts","../src/utils.ts","../src/signers/solana.ts"],"names":["LogLevel","ErrorCode","version","error","Connection","sendAndConfirmRawTransaction","SignedTransaction","TransactionPending","TransactionReceipt"],"mappings":"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","sourcesContent":["import {\n ConfirmOptions,\n Connection,\n GetVersionedTransactionConfig,\n ParsedTransactionWithMeta,\n PublicKey,\n SendOptions,\n Transaction,\n TransactionSignature,\n VersionedTransaction,\n sendAndConfirmRawTransaction,\n} from '@solana/web3.js'\n\nimport {\n Block,\n BlockTag,\n BlockWithTransactions,\n Finality,\n Provider,\n SignedTransaction,\n TransactionPending,\n TransactionReceipt,\n TransactionResponse,\n} from '@layerzerolabs/lz-core'\n\nimport { toRawTransaction } from '../utils'\n\nexport class SolanaProvider implements Provider {\n nativeProvider: Connection\n\n constructor(public url: string) {\n this.nativeProvider = new Connection(url, 'confirmed')\n }\n\n static from(url: string): SolanaProvider\n\n static from(source: string): SolanaProvider {\n if (typeof source === 'string') {\n return new SolanaProvider(source)\n } else {\n throw new Error('Invalid parameters')\n }\n }\n\n get native(): Connection {\n return this.nativeProvider\n }\n\n async getBalance(address: string): Promise<string> {\n return this.nativeProvider.getBalance(new PublicKey(address)).then((balance) => balance.toString())\n }\n\n async getBlock(slot: string | number): Promise<Block> {\n const response = await this.nativeProvider.getParsedBlock(parseInt(slot.toString()), {\n commitment: 'confirmed',\n })\n return Block.from(response)\n }\n\n async getBlockNumber(): Promise<number> {\n return this.nativeProvider.getBlockHeight({ commitment: 'confirmed' })\n }\n\n async getSlot(finality?: Finality): Promise<number> {\n return this.nativeProvider.getSlot(finality)\n }\n\n async getBlockTimestamp(slot: string | number): Promise<number> {\n const t = await this.nativeProvider.getBlockTime(parseInt(slot.toString()))\n if (t === null) {\n throw new Error('Block timestamp not available')\n }\n return t\n }\n\n /**\n *\n * @param txHash string The transaction hash is TransactionSignature in Solana\n * @returns TransactionResponse\n */\n async getTransaction(txHash: string): Promise<TransactionResponse> {\n const response: ParsedTransactionWithMeta | null = await this.nativeProvider.getParsedTransaction(txHash, {\n commitment: 'confirmed',\n })\n return TransactionResponse.from(response)\n }\n\n async getTransactionReceipt(txHash: string): Promise<TransactionReceipt> {\n const response: ParsedTransactionWithMeta | null = await this.nativeProvider.getParsedTransaction(txHash, {\n commitment: 'confirmed',\n } satisfies GetVersionedTransactionConfig)\n if (response === null) {\n throw new Error('Transaction not found')\n }\n return TransactionReceipt.from(response)\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async getTransactionCount(\n _addressOrName: string | Promise<string>,\n _blockTag?: BlockTag | Promise<BlockTag>\n ): Promise<number> {\n await Promise.resolve()\n throw new Error('Method not implemented.')\n }\n\n async getBlockWithTransactions(blockTag: string | number): Promise<BlockWithTransactions> {\n if (typeof blockTag === 'string') {\n blockTag = parseInt(blockTag)\n }\n const response = await this.nativeProvider.getBlock(blockTag, { transactionDetails: 'full' })\n if (response === null) {\n throw new Error('Block not found')\n }\n return BlockWithTransactions.from(response)\n }\n\n async sendTransaction(transaction: SignedTransaction, sendOptions?: SendOptions): Promise<TransactionPending> {\n const _transaction = transaction.signed as Transaction | VersionedTransaction | string\n const rawTransaction = toRawTransaction(_transaction)\n\n const response = await this.nativeProvider.sendRawTransaction(rawTransaction, sendOptions)\n return TransactionPending.from(response)\n }\n\n async sendAndConfirm(transaction: SignedTransaction, opts?: ConfirmOptions): Promise<TransactionReceipt> {\n const _transaction = transaction.signed as Transaction | VersionedTransaction | string\n const rawTransaction = toRawTransaction(_transaction)\n\n const response: TransactionSignature = await sendAndConfirmRawTransaction(\n this.nativeProvider,\n Buffer.from(rawTransaction),\n opts\n )\n return TransactionReceipt.from(response)\n }\n}\n","export const version = \"logger/5.7.0\";\n","\"use strict\";\n\nlet _permanentCensorErrors = false;\nlet _censorErrors = false;\n\nconst LogLevels: { [ name: string ]: number } = { debug: 1, \"default\": 2, info: 2, warning: 3, error: 4, off: 5 };\nlet _logLevel = LogLevels[\"default\"];\n\nimport { version } from \"./_version\";\n\nlet _globalLogger: Logger = null;\n\nfunction _checkNormalize(): string {\n try {\n const missing: Array<string> = [ ];\n\n // Make sure all forms of normalization are supported\n [\"NFD\", \"NFC\", \"NFKD\", \"NFKC\"].forEach((form) => {\n try {\n if (\"test\".normalize(form) !== \"test\") {\n throw new Error(\"bad normalize\");\n };\n } catch(error) {\n missing.push(form);\n }\n });\n\n if (missing.length) {\n throw new Error(\"missing \" + missing.join(\", \"));\n }\n\n if (String.fromCharCode(0xe9).normalize(\"NFD\") !== String.fromCharCode(0x65, 0x0301)) {\n throw new Error(\"broken implementation\")\n }\n } catch (error) {\n return error.message;\n }\n\n return null;\n}\n\nconst _normalizeError = _checkNormalize();\n\nexport enum LogLevel {\n DEBUG = \"DEBUG\",\n INFO = \"INFO\",\n WARNING = \"WARNING\",\n ERROR = \"ERROR\",\n OFF = \"OFF\"\n}\n\n\nexport enum ErrorCode {\n\n ///////////////////\n // Generic Errors\n\n // Unknown Error\n UNKNOWN_ERROR = \"UNKNOWN_ERROR\",\n\n // Not Implemented\n NOT_IMPLEMENTED = \"NOT_IMPLEMENTED\",\n\n // Unsupported Operation\n // - operation\n UNSUPPORTED_OPERATION = \"UNSUPPORTED_OPERATION\",\n\n // Network Error (i.e. Ethereum Network, such as an invalid chain ID)\n // - event (\"noNetwork\" is not re-thrown in provider.ready; otherwise thrown)\n NETWORK_ERROR = \"NETWORK_ERROR\",\n\n // Some sort of bad response from the server\n SERVER_ERROR = \"SERVER_ERROR\",\n\n // Timeout\n TIMEOUT = \"TIMEOUT\",\n\n ///////////////////\n // Operational Errors\n\n // Buffer Overrun\n BUFFER_OVERRUN = \"BUFFER_OVERRUN\",\n\n // Numeric Fault\n // - operation: the operation being executed\n // - fault: the reason this faulted\n NUMERIC_FAULT = \"NUMERIC_FAULT\",\n\n\n ///////////////////\n // Argument Errors\n\n // Missing new operator to an object\n // - name: The name of the class\n MISSING_NEW = \"MISSING_NEW\",\n\n // Invalid argument (e.g. value is incompatible with type) to a function:\n // - argument: The argument name that was invalid\n // - value: The value of the argument\n INVALID_ARGUMENT = \"INVALID_ARGUMENT\",\n\n // Missing argument to a function:\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n MISSING_ARGUMENT = \"MISSING_ARGUMENT\",\n\n // Too many arguments\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n UNEXPECTED_ARGUMENT = \"UNEXPECTED_ARGUMENT\",\n\n\n ///////////////////\n // Blockchain Errors\n\n // Call exception\n // - transaction: the transaction\n // - address?: the contract address\n // - args?: The arguments passed into the function\n // - method?: The Solidity method signature\n // - errorSignature?: The EIP848 error signature\n // - errorArgs?: The EIP848 error parameters\n // - reason: The reason (only for EIP848 \"Error(string)\")\n CALL_EXCEPTION = \"CALL_EXCEPTION\",\n\n // Insufficient funds (< value + gasLimit * gasPrice)\n // - transaction: the transaction attempted\n INSUFFICIENT_FUNDS = \"INSUFFICIENT_FUNDS\",\n\n // Nonce has already been used\n // - transaction: the transaction attempted\n NONCE_EXPIRED = \"NONCE_EXPIRED\",\n\n // The replacement fee for the transaction is too low\n // - transaction: the transaction attempted\n REPLACEMENT_UNDERPRICED = \"REPLACEMENT_UNDERPRICED\",\n\n // The gas limit could not be estimated\n // - transaction: the transaction passed to estimateGas\n UNPREDICTABLE_GAS_LIMIT = \"UNPREDICTABLE_GAS_LIMIT\",\n\n // The transaction was replaced by one with a higher gas price\n // - reason: \"cancelled\", \"replaced\" or \"repriced\"\n // - cancelled: true if reason == \"cancelled\" or reason == \"replaced\")\n // - hash: original transaction hash\n // - replacement: the full TransactionsResponse for the replacement\n // - receipt: the receipt of the replacement\n TRANSACTION_REPLACED = \"TRANSACTION_REPLACED\",\n\n\n ///////////////////\n // Interaction Errors\n\n // The user rejected the action, such as signing a message or sending\n // a transaction\n ACTION_REJECTED = \"ACTION_REJECTED\",\n};\n\nconst HEX = \"0123456789abcdef\";\n\nexport class Logger {\n readonly version: string;\n\n static errors = ErrorCode;\n\n static levels = LogLevel;\n\n constructor(version: string) {\n Object.defineProperty(this, \"version\", {\n enumerable: true,\n value: version,\n writable: false\n });\n }\n\n _log(logLevel: LogLevel, args: Array<any>): void {\n const level = logLevel.toLowerCase();\n if (LogLevels[level] == null) {\n this.throwArgumentError(\"invalid log level name\", \"logLevel\", logLevel);\n }\n if (_logLevel > LogLevels[level]) { return; }\n console.log.apply(console, args);\n }\n\n debug(...args: Array<any>): void {\n this._log(Logger.levels.DEBUG, args);\n }\n\n info(...args: Array<any>): void {\n this._log(Logger.levels.INFO, args);\n }\n\n warn(...args: Array<any>): void {\n this._log(Logger.levels.WARNING, args);\n }\n\n makeError(message: string, code?: ErrorCode, params?: any): Error {\n // Errors are being censored\n if (_censorErrors) {\n return this.makeError(\"censored error\", code, { });\n }\n\n if (!code) { code = Logger.errors.UNKNOWN_ERROR; }\n if (!params) { params = {}; }\n\n const messageDetails: Array<string> = [];\n Object.keys(params).forEach((key) => {\n const value = params[key];\n try {\n if (value instanceof Uint8Array) {\n let hex = \"\";\n for (let i = 0; i < value.length; i++) {\n hex += HEX[value[i] >> 4];\n hex += HEX[value[i] & 0x0f];\n }\n messageDetails.push(key + \"=Uint8Array(0x\" + hex + \")\");\n } else {\n messageDetails.push(key + \"=\" + JSON.stringify(value));\n }\n } catch (error) {\n messageDetails.push(key + \"=\" + JSON.stringify(params[key].toString()));\n }\n });\n messageDetails.push(`code=${ code }`);\n messageDetails.push(`version=${ this.version }`);\n\n const reason = message;\n\n let url = \"\";\n\n switch (code) {\n case ErrorCode.NUMERIC_FAULT: {\n url = \"NUMERIC_FAULT\";\n const fault = message;\n\n switch (fault) {\n case \"overflow\": case \"underflow\": case \"division-by-zero\":\n url += \"-\" + fault;\n break;\n case \"negative-power\": case \"negative-width\":\n url += \"-unsupported\";\n break;\n case \"unbound-bitwise-result\":\n url += \"-unbound-result\";\n break;\n }\n break;\n }\n case ErrorCode.CALL_EXCEPTION:\n case ErrorCode.INSUFFICIENT_FUNDS:\n case ErrorCode.MISSING_NEW:\n case ErrorCode.NONCE_EXPIRED:\n case ErrorCode.REPLACEMENT_UNDERPRICED:\n case ErrorCode.TRANSACTION_REPLACED:\n case ErrorCode.UNPREDICTABLE_GAS_LIMIT:\n url = code;\n break;\n }\n\n if (url) {\n message += \" [ See: https:/\\/links.ethers.org/v5-errors-\" + url + \" ]\";\n }\n\n if (messageDetails.length) {\n message += \" (\" + messageDetails.join(\", \") + \")\";\n }\n\n // @TODO: Any??\n const error: any = new Error(message);\n error.reason = reason;\n error.code = code\n\n Object.keys(params).forEach(function(key) {\n error[key] = params[key];\n });\n\n return error;\n }\n\n throwError(message: string, code?: ErrorCode, params?: any): never {\n throw this.makeError(message, code, params);\n }\n\n throwArgumentError(message: string, name: string, value: any): never {\n return this.throwError(message, Logger.errors.INVALID_ARGUMENT, {\n argument: name,\n value: value\n });\n }\n\n assert(condition: any, message: string, code?: ErrorCode, params?: any): void {\n if (!!condition) { return; }\n this.throwError(message, code, params);\n }\n\n assertArgument(condition: any, message: string, name: string, value: any): void {\n if (!!condition) { return; }\n this.throwArgumentError(message, name, value);\n }\n\n checkNormalize(message?: string): void {\n if (message == null) { message = \"platform missing String.prototype.normalize\"; }\n if (_normalizeError) {\n this.throwError(\"platform missing String.prototype.normalize\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"String.prototype.normalize\", form: _normalizeError\n });\n }\n }\n\n checkSafeUint53(value: number, message?: string): void {\n if (typeof(value) !== \"number\") { return; }\n\n if (message == null) { message = \"value not safe\"; }\n\n if (value < 0 || value >= 0x1fffffffffffff) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"out-of-safe-range\",\n value: value\n });\n }\n\n if (value % 1) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"non-integer\",\n value: value\n });\n }\n }\n\n checkArgumentCount(count: number, expectedCount: number, message?: string): void {\n if (message) {\n message = \": \" + message;\n } else {\n message = \"\";\n }\n\n if (count < expectedCount) {\n this.throwError(\"missing argument\" + message, Logger.errors.MISSING_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n\n if (count > expectedCount) {\n this.throwError(\"too many arguments\" + message, Logger.errors.UNEXPECTED_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n }\n\n checkNew(target: any, kind: any): void {\n if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n\n checkAbstract(target: any, kind: any): void {\n if (target === kind) {\n this.throwError(\n \"cannot instantiate abstract class \" + JSON.stringify(kind.name) + \" directly; use a sub-class\",\n Logger.errors.UNSUPPORTED_OPERATION,\n { name: target.name, operation: \"new\" }\n );\n } else if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n\n static globalLogger(): Logger {\n if (!_globalLogger) { _globalLogger = new Logger(version); }\n return _globalLogger;\n }\n\n static setCensorship(censorship: boolean, permanent?: boolean): void {\n if (!censorship && permanent) {\n this.globalLogger().throwError(\"cannot permanently disable censorship\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n\n if (_permanentCensorErrors) {\n if (!censorship) { return; }\n this.globalLogger().throwError(\"error censorship permanent\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n\n _censorErrors = !!censorship;\n _permanentCensorErrors = !!permanent;\n }\n\n static setLogLevel(logLevel: LogLevel): void {\n const level = LogLevels[logLevel.toLowerCase()];\n if (level == null) {\n Logger.globalLogger().warn(\"invalid log level - \" + logLevel);\n return;\n }\n _logLevel = level;\n }\n\n static from(version: string): Logger {\n return new Logger(version);\n }\n}\n","export const version = \"bytes/5.7.0\";\n","\"use strict\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n///////////////////////////////\n// Exported Types\n\nexport type Bytes = ArrayLike<number>;\n\nexport type BytesLike = Bytes | string;\n\nexport type DataOptions = {\n allowMissingPrefix?: boolean;\n hexPad?: \"left\" | \"right\" | null;\n};\n\nexport interface Hexable {\n toHexString(): string;\n}\n\n\n/*\nexport interface HexString {\n length: number;\n substring: (start: number, end?: number) => string;\n\n [index: number]: string;\n}\n*/\n\nexport type SignatureLike = {\n r: string;\n s?: string;\n _vs?: string,\n recoveryParam?: number;\n v?: number;\n} | BytesLike;\n\nexport interface Signature {\n r: string;\n\n s: string;\n _vs: string,\n\n recoveryParam: number;\n v: number;\n\n yParityAndS: string\n compact: string;\n}\n\n///////////////////////////////\n\n\nfunction isHexable(value: any): value is Hexable {\n return !!(value.toHexString);\n}\n\nfunction addSlice(array: Uint8Array): Uint8Array {\n if (array.slice) { return array; }\n\n array.slice = function() {\n const args = Array.prototype.slice.call(arguments);\n return addSlice(new Uint8Array(Array.prototype.slice.apply(array, args)));\n }\n\n return array;\n}\n\nexport function isBytesLike(value: any): value is BytesLike {\n return ((isHexString(value) && !(value.length % 2)) || isBytes(value));\n}\n\nfunction isInteger(value: number) {\n return (typeof(value) === \"number\" && value == value && (value % 1) === 0);\n}\n\nexport function isBytes(value: any): value is Bytes {\n if (value == null) { return false; }\n\n if (value.constructor === Uint8Array) { return true; }\n if (typeof(value) === \"string\") { return false; }\n if (!isInteger(value.length) || value.length < 0) { return false; }\n\n for (let i = 0; i < value.length; i++) {\n const v = value[i];\n if (!isInteger(v) || v < 0 || v >= 256) { return false; }\n }\n return true;\n}\n\n\nexport function arrayify(value: BytesLike | Hexable | number, options?: DataOptions): Uint8Array {\n if (!options) { options = { }; }\n\n if (typeof(value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid arrayify value\");\n\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value = parseInt(String(value / 256));\n }\n if (result.length === 0) { result.push(0); }\n\n return addSlice(new Uint8Array(result));\n }\n\n if (options.allowMissingPrefix && typeof(value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n\n if (isHexable(value)) { value = value.toHexString(); }\n\n if (isHexString(value)) {\n let hex = (<string>value).substring(2);\n if (hex.length % 2) {\n if (options.hexPad === \"left\") {\n hex = \"0\" + hex;\n } else if (options.hexPad === \"right\") {\n hex += \"0\";\n } else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n\n const result = [];\n for (let i = 0; i < hex.length; i += 2) {\n result.push(parseInt(hex.substring(i, i + 2), 16));\n }\n\n return addSlice(new Uint8Array(result));\n }\n\n if (isBytes(value)) {\n return addSlice(new Uint8Array(value));\n }\n\n return logger.throwArgumentError(\"invalid arrayify value\", \"value\", value);\n}\n\nexport function concat(items: ReadonlyArray<BytesLike>): Uint8Array {\n const objects = items.map(item => arrayify(item));\n const length = objects.reduce((accum, item) => (accum + item.length), 0);\n\n const result = new Uint8Array(length);\n\n objects.reduce((offset, object) => {\n result.set(object, offset);\n return offset + object.length;\n }, 0);\n\n return addSlice(result);\n}\n\nexport function stripZeros(value: BytesLike): Uint8Array {\n let result: Uint8Array = arrayify(value);\n\n if (result.length === 0) { return result; }\n\n // Find the first non-zero entry\n let start = 0;\n while (start < result.length && result[start] === 0) { start++ }\n\n // If we started with zeros, strip them\n if (start) {\n result = result.slice(start);\n }\n\n return result;\n}\n\nexport function zeroPad(value: BytesLike, length: number): Uint8Array {\n value = arrayify(value);\n\n if (value.length > length) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[0]);\n }\n\n const result = new Uint8Array(length);\n result.set(value, length - value.length);\n return addSlice(result);\n}\n\n\nexport function isHexString(value: any, length?: number): boolean {\n if (typeof(value) !== \"string\" || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n return false\n }\n if (length && value.length !== 2 + 2 * length) { return false; }\n return true;\n}\n\nconst HexCharacters: string = \"0123456789abcdef\";\n\nexport function hexlify(value: BytesLike | Hexable | number | bigint, options?: DataOptions): string {\n if (!options) { options = { }; }\n\n if (typeof(value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid hexlify value\");\n\n let hex = \"\";\n while (value) {\n hex = HexCharacters[value & 0xf] + hex;\n value = Math.floor(value / 16);\n }\n\n if (hex.length) {\n if (hex.length % 2) { hex = \"0\" + hex; }\n return \"0x\" + hex;\n }\n\n return \"0x00\";\n }\n\n if (typeof(value) === \"bigint\") {\n value = value.toString(16);\n if (value.length % 2) { return (\"0x0\" + value); }\n return \"0x\" + value;\n }\n\n if (options.allowMissingPrefix && typeof(value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n\n if (isHexable(value)) { return value.toHexString(); }\n\n if (isHexString(value)) {\n if ((<string>value).length % 2) {\n if (options.hexPad === \"left\") {\n value = \"0x0\" + (<string>value).substring(2);\n } else if (options.hexPad === \"right\") {\n value += \"0\";\n } else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n return (<string>value).toLowerCase();\n }\n\n if (isBytes(value)) {\n let result = \"0x\";\n for (let i = 0; i < value.length; i++) {\n let v = value[i];\n result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];\n }\n return result;\n }\n\n return logger.throwArgumentError(\"invalid hexlify value\", \"value\", value);\n}\n\n/*\nfunction unoddify(value: BytesLike | Hexable | number): BytesLike | Hexable | number {\n if (typeof(value) === \"string\" && value.length % 2 && value.substring(0, 2) === \"0x\") {\n return \"0x0\" + value.substring(2);\n }\n return value;\n}\n*/\nexport function hexDataLength(data: BytesLike) {\n if (typeof(data) !== \"string\") {\n data = hexlify(data);\n } else if (!isHexString(data) || (data.length % 2)) {\n return null;\n }\n\n return (data.length - 2) / 2;\n}\n\nexport function hexDataSlice(data: BytesLike, offset: number, endOffset?: number): string {\n if (typeof(data) !== \"string\") {\n data = hexlify(data);\n } else if (!isHexString(data) || (data.length % 2)) {\n logger.throwArgumentError(\"invalid hexData\", \"value\", data );\n }\n\n offset = 2 + 2 * offset;\n\n if (endOffset != null) {\n return \"0x\" + data.substring(offset, 2 + 2 * endOffset);\n }\n\n return \"0x\" + data.substring(offset);\n}\n\nexport function hexConcat(items: ReadonlyArray<BytesLike>): string {\n let result = \"0x\";\n items.forEach((item) => {\n result += hexlify(item).substring(2);\n });\n return result;\n}\n\nexport function hexValue(value: BytesLike | Hexable | number | bigint): string {\n const trimmed = hexStripZeros(hexlify(value, { hexPad: \"left\" }));\n if (trimmed === \"0x\") { return \"0x0\"; }\n return trimmed;\n}\n\nexport function hexStripZeros(value: BytesLike): string {\n if (typeof(value) !== \"string\") { value = hexlify(value); }\n\n if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n value = value.substring(2);\n let offset = 0;\n while (offset < value.length && value[offset] === \"0\") { offset++; }\n return \"0x\" + value.substring(offset);\n}\n\nexport function hexZeroPad(value: BytesLike, length: number): string {\n if (typeof(value) !== \"string\") {\n value = hexlify(value);\n } else if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n\n if (value.length > 2 * length + 2) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[1]);\n }\n\n while (value.length < 2 * length + 2) {\n value = \"0x0\" + value.substring(2);\n }\n\n return value;\n}\n\nexport function splitSignature(signature: SignatureLike): Signature {\n\n const result = {\n r: \"0x\",\n s: \"0x\",\n _vs: \"0x\",\n recoveryParam: 0,\n v: 0,\n yParityAndS: \"0x\",\n compact: \"0x\"\n };\n\n if (isBytesLike(signature)) {\n let bytes: Uint8Array = arrayify(signature);\n\n // Get the r, s and v\n if (bytes.length === 64) {\n // EIP-2098; pull the v from the top bit of s and clear it\n result.v = 27 + (bytes[32] >> 7);\n bytes[32] &= 0x7f;\n\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n\n } else if (bytes.length === 65) {\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n result.v = bytes[64];\n } else {\n\n logger.throwArgumentError(\"invalid signature string\", \"signature\", signature);\n }\n\n\n // Allow a recid to be used as the v\n if (result.v < 27) {\n if (result.v === 0 || result.v === 1) {\n result.v += 27;\n } else {\n logger.throwArgumentError(\"signature invalid v byte\", \"signature\", signature);\n }\n }\n\n // Compute recoveryParam from v\n result.recoveryParam = 1 - (result.v % 2);\n\n // Compute _vs from recoveryParam and s\n if (result.recoveryParam) { bytes[32] |= 0x80; }\n result._vs = hexlify(bytes.slice(32, 64))\n\n } else {\n result.r = signature.r;\n result.s = signature.s;\n result.v = signature.v;\n result.recoveryParam = signature.recoveryParam;\n result._vs = signature._vs;\n\n // If the _vs is available, use it to populate missing s, v and recoveryParam\n // and verify non-missing s, v and recoveryParam\n if (result._vs != null) {\n const vs = zeroPad(arrayify(result._vs), 32);\n result._vs = hexlify(vs);\n\n // Set or check the recid\n const recoveryParam = ((vs[0] >= 128) ? 1: 0);\n if (result.recoveryParam == null) {\n result.recoveryParam = recoveryParam;\n } else if (result.recoveryParam !== recoveryParam) {\n logger.throwArgumentError(\"signature recoveryParam mismatch _vs\", \"signature\", signature);\n }\n\n // Set or check the s\n vs[0] &= 0x7f;\n const s = hexlify(vs);\n if (result.s == null) {\n result.s = s;\n } else if (result.s !== s) {\n logger.throwArgumentError(\"signature v mismatch _vs\", \"signature\", signature);\n }\n }\n\n // Use recid and v to populate each other\n if (result.recoveryParam == null) {\n if (result.v == null) {\n logger.throwArgumentError(\"signature missing v and recoveryParam\", \"signature\", signature);\n } else if (result.v === 0 || result.v === 1) {\n result.recoveryParam = result.v;\n } else {\n result.recoveryParam = 1 - (result.v % 2);\n }\n } else {\n if (result.v == null) {\n result.v = 27 + result.recoveryParam;\n } else {\n const recId = (result.v === 0 || result.v === 1) ? result.v :(1 - (result.v % 2));\n if (result.recoveryParam !== recId) {\n logger.throwArgumentError(\"signature recoveryParam mismatch v\", \"signature\", signature);\n }\n }\n }\n\n if (result.r == null || !isHexString(result.r)) {\n logger.throwArgumentError(\"signature missing or invalid r\", \"signature\", signature);\n } else {\n result.r = hexZeroPad(result.r, 32);\n }\n\n if (result.s == null || !isHexString(result.s)) {\n logger.throwArgumentError(\"signature missing or invalid s\", \"signature\", signature);\n } else {\n result.s = hexZeroPad(result.s, 32);\n }\n\n const vs = arrayify(result.s);\n if (vs[0] >= 128) {\n logger.throwArgumentError(\"signature s out of range\", \"signature\", signature);\n }\n if (result.recoveryParam) { vs[0] |= 0x80; }\n const _vs = hexlify(vs);\n\n if (result._vs) {\n if (!isHexString(result._vs)) {\n logger.throwArgumentError(\"signature invalid _vs\", \"signature\", signature);\n }\n result._vs = hexZeroPad(result._vs, 32);\n }\n\n // Set or check the _vs\n if (result._vs == null) {\n result._vs = _vs;\n } else if (result._vs !== _vs) {\n logger.throwArgumentError(\"signature _vs mismatch v and s\", \"signature\", signature);\n }\n }\n\n result.yParityAndS = result._vs;\n result.compact = result.r + result.yParityAndS.substring(2);\n\n return result;\n}\n\nexport function joinSignature(signature: SignatureLike): string {\n signature = splitSignature(signature);\n\n return hexlify(concat([\n signature.r,\n signature.s,\n (signature.recoveryParam ? \"0x1c\": \"0x1b\")\n ]));\n}\n\n","import { arrayify } from '.store/@ethersproject-bytes-npm-5.7.0-4454fe4cb0/package'\nimport { Transaction, VersionedTransaction } from '@solana/web3.js'\n\nexport function toRawTransaction(transaction: Transaction | VersionedTransaction | string): Uint8Array {\n const retval = typeof transaction === 'string' ? arrayify(transaction) : transaction.serialize()\n return retval\n}\n","import {\n Commitment,\n ConfirmOptions,\n Connection,\n GetLatestBlockhashConfig,\n Keypair,\n PublicKey,\n SendOptions,\n Transaction,\n VersionedTransaction,\n sendAndConfirmRawTransaction,\n} from '@solana/web3.js'\nimport * as bip39 from 'bip39'\nimport { derivePath } from 'ed25519-hd-key'\n\nimport {\n Provider,\n SignedTransaction,\n Signer,\n TransactionPending,\n TransactionReceipt,\n TransactionRequest,\n} from '@layerzerolabs/lz-core'\n\nimport { toRawTransaction } from '../utils'\n\nexport class SolanaSigner implements Signer {\n private readonly keypair: Keypair\n private provider?: Connection\n\n private constructor(keypair: Keypair) {\n this.keypair = keypair\n }\n\n static from(source: Keypair): SolanaSigner\n static from(mnemonic: string, path: string): SolanaSigner\n\n static from(source: Keypair | string, path?: string): SolanaSigner {\n if (source instanceof Keypair) {\n return new this(source)\n } else if (typeof source === 'string') {\n const keypair = getKeypair(source, path)\n return new this(keypair)\n } else {\n throw new Error('Invalid parameters')\n }\n }\n\n get native(): unknown {\n return this.keypair\n }\n\n connect(provider: Provider): this {\n if (!(provider.native instanceof Connection)) {\n throw new Error('Only @solana/web3.js Connection is supported.')\n }\n this.provider = provider.native\n return this\n }\n\n async getAddress(): Promise<string> {\n return Promise.resolve(this.keypair.publicKey.toBase58())\n }\n\n get address(): string {\n return this.publicKey.toBase58()\n }\n\n get publicKey(): PublicKey {\n return this.keypair.publicKey\n }\n\n get secretKey(): Uint8Array {\n return this.keypair.secretKey\n }\n\n async sendAndConfirm(transaction: SignedTransaction, opts?: ConfirmOptions): Promise<TransactionReceipt> {\n const provider = this.assertAndGetProvider()\n const _transaction = transaction.signed as Transaction | VersionedTransaction | string\n const rawTransaction = toRawTransaction(_transaction)\n const response = await sendAndConfirmRawTransaction(provider, Buffer.from(rawTransaction), opts)\n return TransactionReceipt.from(response)\n }\n\n async sendTransaction(transaction: SignedTransaction, sendOptions?: SendOptions): Promise<TransactionPending> {\n const provider = this.assertAndGetProvider()\n const _transaction = transaction.signed as Transaction | VersionedTransaction | string\n const rawTransaction = toRawTransaction(_transaction)\n const response = await provider.sendRawTransaction(rawTransaction, sendOptions)\n return TransactionPending.from(response)\n }\n\n async signTransaction(\n transaction: TransactionRequest,\n opts?: Commitment | GetLatestBlockhashConfig\n ): Promise<SignedTransaction> {\n const tx = transaction.request as Transaction | VersionedTransaction\n if (isVersionedTransaction(tx)) {\n tx.sign([this.keypair])\n } else {\n tx.partialSign(this.keypair)\n }\n\n return Promise.resolve(SignedTransaction.from(tx))\n }\n\n async signBuffer(_buffer: Uint8Array): Promise<Uint8Array> {\n await Promise.resolve()\n throw new Error('Method not implemented.')\n }\n\n partialSign(tx: Transaction | VersionedTransaction): void {\n if (isVersionedTransaction(tx)) {\n tx.sign([this.keypair])\n } else {\n tx.partialSign(this.keypair)\n }\n }\n\n private assertAndGetProvider(): Connection {\n if (!this.provider) {\n throw new Error('Signer was not connected to a provider, did you forgot to connect to provider?')\n }\n return this.provider\n }\n\n async buildTransaction(buildTxRequest: unknown): Promise<TransactionRequest> {\n return Promise.reject(new Error('Method not implemented.'))\n }\n}\n\nfunction getKeypair(mnemonic: string, path = \"m/44'/501'/0'/0'\"): Keypair {\n const seed = bip39.mnemonicToSeedSync(mnemonic, '') // (mnemonic, password)\n const privateKey = derivePath(path, seed.toString('hex')).key\n return Keypair.fromSeed(privateKey)\n}\n\n/**\n * Check if a transaction object is a VersionedTransaction or not\n * This function is not exported from @coral-xyz/anchor currently.\n * @param tx\n * @returns bool\n */\nexport const isVersionedTransaction = (tx: Transaction | VersionedTransaction): tx is VersionedTransaction => {\n return 'version' in tx\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@layerzerolabs/lz-corekit-solana",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.4",
|
|
4
4
|
"description": "LayerZero Core Library",
|
|
5
5
|
"license": "BUSL-1.1",
|
|
6
6
|
"exports": {
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
26
|
"@ethersproject/bytes": "^5.7.0",
|
|
27
|
-
"@layerzerolabs/lz-core": "^3.0.
|
|
27
|
+
"@layerzerolabs/lz-core": "^3.0.4",
|
|
28
28
|
"@noble/hashes": "^1.3.2",
|
|
29
29
|
"@noble/secp256k1": "^1.7.1",
|
|
30
30
|
"@solana/web3.js": "^1.92.1",
|
|
@@ -36,8 +36,8 @@
|
|
|
36
36
|
"devDependencies": {
|
|
37
37
|
"@jest/globals": "^29.7.0",
|
|
38
38
|
"@layerzerolabs/tronweb-typescript": "^0.0.0",
|
|
39
|
-
"@layerzerolabs/tsup-config-next": "^3.0.
|
|
40
|
-
"@layerzerolabs/typescript-config-next": "^3.0.
|
|
39
|
+
"@layerzerolabs/tsup-config-next": "^3.0.4",
|
|
40
|
+
"@layerzerolabs/typescript-config-next": "^3.0.4",
|
|
41
41
|
"@types/jest": "^29.5.10",
|
|
42
42
|
"@types/tronweb": "npm:@layerzerolabs/tronweb-typescript@workspace:^",
|
|
43
43
|
"jest": "^29.7.0",
|