{"version":3,"sources":["../../src/sdk/common/utils/hexlify.ts"],"sourcesContent":["\"use strict\";\n\nimport { Hex } from \"viem\";\nimport { Bytes, Hexable } from \"../types\";\n\n///////////////////////////////\n// Exported Types\n\nexport type BytesLike = Uint8Array | Hex | Bytes | String\n\nexport type DataOptions = {\n    allowMissingPrefix?: boolean;\n    hexPad?: \"left\" | \"right\" | null;\n};\n\n///////////////////////////////\n\n\nfunction isHexableValue(value: any): value is Hexable {\n    return !!(value.toHexString);\n}\n\nexport function isBytesLikeValue(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\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\n\nexport function 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        throw new Error(`Invalid Hexlify value - CheckSafeInteger Failed due to out-of-safe-range value: ${value}`);\n    }\n\n    if (value % 1) {\n        throw new Error(`Invalid Hexlify value - CCheckSafeInteger Failed due to non-integer value: ${value}`);\n    }\n}\n\nconst HexCharacters = \"0123456789abcdef\";\n\nexport function hexlifyValue(value: BytesLike | Hexable | number | bigint, options?: DataOptions): string {\n    if (!options) { options = {}; }\n\n    if (typeof (value) === \"number\") {\n        checkSafeUint53(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 (isHexableValue(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                throw new Error(`invalid hexlify value - hex data is odd-length for 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            const v = value[i];\n            result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];\n        }\n        return result;\n    }\n\n    throw new Error(`invalid hexlify value - ${value}`);\n}\n"],"mappings":"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","names":[]}