diff --git a/src.ts/ethers.ts b/src.ts/ethers.ts index 7f3786e80c..1f5c54d8c5 100644 --- a/src.ts/ethers.ts +++ b/src.ts/ethers.ts @@ -186,7 +186,7 @@ export type { ErrorCode, FixedFormat, Utf8ErrorFunc, UnicodeNormalizationForm, Utf8ErrorReason, - RlpStructuredData, + RlpStructuredData, RlpStructuredDataish, GetUrlResponse, FetchPreflightFunc, FetchProcessFunc, FetchRetryFunc, diff --git a/src.ts/utils/index.ts b/src.ts/utils/index.ts index 7aba68c4b2..8880934885 100644 --- a/src.ts/utils/index.ts +++ b/src.ts/utils/index.ts @@ -86,7 +86,7 @@ export type { FixedFormat } from "./fixednumber.js" export type { BigNumberish, Numeric } from "./maths.js"; -export type { RlpStructuredData } from "./rlp.js"; +export type { RlpStructuredData, RlpStructuredDataish } from "./rlp.js"; export type { Utf8ErrorFunc, diff --git a/src.ts/utils/rlp-encode.ts b/src.ts/utils/rlp-encode.ts index a2cd0bcadd..a823cbbc7f 100644 --- a/src.ts/utils/rlp-encode.ts +++ b/src.ts/utils/rlp-encode.ts @@ -2,7 +2,7 @@ import { getBytes } from "./data.js"; -import type { RlpStructuredData } from "./rlp.js"; +import type { RlpStructuredDataish } from "./rlp.js"; function arrayifyInteger(value: number): Array { @@ -14,7 +14,7 @@ function arrayifyInteger(value: number): Array { return result; } -function _encode(object: Array | string): Array { +function _encode(object: Array | string | Uint8Array): Array { if (Array.isArray(object)) { let payload: Array = []; object.forEach(function(child) { @@ -54,7 +54,7 @@ const nibbles = "0123456789abcdef"; /** * Encodes %%object%% as an RLP-encoded [[DataHexString]]. */ -export function encodeRlp(object: RlpStructuredData): string { +export function encodeRlp(object: RlpStructuredDataish): string { let result = "0x"; for (const v of _encode(object)) { result += nibbles[v >> 4]; diff --git a/src.ts/utils/rlp.ts b/src.ts/utils/rlp.ts index 5a8e328863..5c6551c441 100644 --- a/src.ts/utils/rlp.ts +++ b/src.ts/utils/rlp.ts @@ -13,3 +13,8 @@ export { encodeRlp } from "./rlp-encode.js"; */ export type RlpStructuredData = string | Array; +/** + * An RLP-encoded structure, which allows Uint8Array. + */ +export type RlpStructuredDataish = string | Uint8Array | Array; +