{"version":3,"sources":["jsdelivr-header.js","/npm/hypersdk-client@0.4.17/dist/index.js"],"names":[],"mappings":"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","file":"/npm/hypersdk-client@0.4.17/dist/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/hypersdk-client@0.4.17/dist/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.idStringToBigInt = exports.HyperSDKClient = void 0;\nconst PrivateKeySigner_1 = require(\"./PrivateKeySigner\");\nconst MetamaskSnapSigner_1 = require(\"./MetamaskSnapSigner\");\nconst Marshaler_1 = require(\"./Marshaler\");\nconst HyperSDKHTTPClient_1 = require(\"./HyperSDKHTTPClient\");\nconst base_1 = require(\"@scure/base\");\nconst apiTransformers_1 = require(\"./apiTransformers\");\nconst sha256_1 = require(\"@noble/hashes/sha256\");\nconst CoreSigner_1 = require(\"./CoreSigner\");\n__exportStar(require(\"./Marshaler\"), exports);\n__exportStar(require(\"./types\"), exports);\n// TODO: Implement fee prediction\nconst DEFAULT_MAX_FEE = 1000000n;\nconst DECIMALS = 9;\nclass HyperSDKClient extends EventTarget {\n    constructor(apiHost, vmName, vmRPCPrefix) {\n        super();\n        this.signer = null;\n        this.abi = null;\n        this.marshaler = null;\n        this.blockSubscribers = new Set();\n        this.isPollingBlocks = false;\n        this.http = new HyperSDKHTTPClient_1.HyperSDKHTTPClient(apiHost, vmName, vmRPCPrefix);\n    }\n    // Public methods\n    async connectWallet(params) {\n        this.signer = await this.createSigner(params);\n        await this.signer.connect();\n        this.dispatchEvent(new CustomEvent('signerConnected', { detail: this.signer }));\n        return this.signer;\n    }\n    async sendTransaction(actions) {\n        const txPayload = await this.createTransactionPayload(actions);\n        const abi = await this.getAbi();\n        const signed = await this.getSigner().signTx(txPayload, abi);\n        const { txId } = await this.http.sendRawTx(signed);\n        const result = await this.waitForTransaction(txId);\n        return { txId, result };\n    }\n    //actorHex is optional, if not provided, the signer's public key will be used\n    async executeActions(actions, actorHex) {\n        const marshaler = await this.getMarshaler();\n        const actionBytesArray = actions.map(action => marshaler.encodeTyped(action.actionName, JSON.stringify(action.data)));\n        const actor = actorHex ?? (0, Marshaler_1.addressHexFromPubKey)(this.getSigner().getPublicKey());\n        const output = await this.http.executeActions(actionBytesArray, actor);\n        return output.map(output => marshaler.parseTyped(base_1.base64.decode(output), \"output\")[0]);\n    }\n    async getBalance(address) {\n        const result = await this.http.makeVmAPIRequest('balance', { address });\n        return BigInt(result.amount); // TODO: Handle potential precision loss\n    }\n    convertToNativeTokens(formattedBalance) {\n        const float = parseFloat(formattedBalance);\n        return BigInt(float * 10 ** DECIMALS);\n    }\n    formatNativeTokens(balance) {\n        const divisor = 10n ** BigInt(DECIMALS);\n        const quotient = balance / divisor;\n        const remainder = balance % divisor;\n        const paddedRemainder = remainder.toString().padStart(DECIMALS, '0');\n        return `${quotient}.${paddedRemainder}`;\n    }\n    async getAbi() {\n        if (!this.abi) {\n            const result = await this.http.makeCoreAPIRequest('getABI');\n            this.abi = result.abi;\n        }\n        return this.abi;\n    }\n    async getTransactionStatus(txId) {\n        const response = await this.http.getTransactionStatus(txId);\n        const marshaler = await this.getMarshaler();\n        return (0, apiTransformers_1.processAPITxResult)(response, marshaler);\n    }\n    async listenToBlocks(callback, includeEmpty = false, pollingRateMs = 300) {\n        this.blockSubscribers.add(callback);\n        if (!this.isPollingBlocks) {\n            this.startPollingBlocks(includeEmpty, pollingRateMs);\n        }\n        return () => {\n            this.blockSubscribers.delete(callback);\n        };\n    }\n    // Private methods\n    async startPollingBlocks(includeEmpty, pollingRateMs) {\n        this.isPollingBlocks = true;\n        const marshaler = await this.getMarshaler();\n        let currentHeight = -1;\n        const fetchNextBlock = async () => {\n            if (!this.isPollingBlocks)\n                return;\n            try {\n                const block = currentHeight === -1 ?\n                    await this.http.getLatestBlock()\n                    : await this.http.getBlockByHeight(currentHeight + 1);\n                currentHeight = block.block.block.height;\n                if (includeEmpty || block.block.block.txs.length > 0) {\n                    const executedBlock = (0, apiTransformers_1.processAPIBlock)(block, marshaler);\n                    this.blockSubscribers.forEach(callback => {\n                        try {\n                            callback(executedBlock);\n                        }\n                        catch (error) {\n                            console.error(\"Error in block callback\", error);\n                        }\n                    });\n                }\n                setTimeout(fetchNextBlock, pollingRateMs);\n            }\n            catch (error) {\n                if (error?.message?.includes(\"block not found\")) {\n                    setTimeout(fetchNextBlock, pollingRateMs * 2);\n                }\n                else {\n                    console.error(error);\n                    setTimeout(fetchNextBlock, pollingRateMs * 2); // Longer delay on error\n                }\n            }\n        };\n        fetchNextBlock();\n    }\n    async createSigner(params) {\n        const { chainId } = await this.http.getNetwork();\n        const chainIdBigNumber = idStringToBigInt(chainId);\n        switch (params.type) {\n            case \"ephemeral\":\n                return new PrivateKeySigner_1.EphemeralSigner();\n            case \"private-key\":\n                return new PrivateKeySigner_1.PrivateKeySigner(params.privateKey);\n            case \"metamask-snap\":\n                return new MetamaskSnapSigner_1.MetamaskSnapSigner(params.snapId ?? MetamaskSnapSigner_1.DEFAULT_SNAP_ID);\n            case \"core\":\n                return new CoreSigner_1.CoreSigner({\n                    params,\n                    chainId: chainIdBigNumber,\n                });\n            default:\n                throw new Error(`Invalid signer type: ${params.type}`);\n        }\n    }\n    getSigner() {\n        if (!this.signer) {\n            throw new Error(\"Signer not connected\");\n        }\n        return this.signer;\n    }\n    async getMarshaler() {\n        if (!this.marshaler) {\n            const abi = await this.getAbi();\n            this.marshaler = new Marshaler_1.Marshaler(abi);\n        }\n        return this.marshaler;\n    }\n    async createTransactionPayload(actions) {\n        const { chainId } = await this.http.getNetwork();\n        const chainIdBigNumber = idStringToBigInt(chainId);\n        return {\n            base: {\n                timestamp: String(BigInt(Date.now()) + 59n * 1000n),\n                chainId: String(chainIdBigNumber),\n                maxFee: String(DEFAULT_MAX_FEE),\n            },\n            actions: actions\n        };\n    }\n    async waitForTransaction(txId, timeout = 55000) {\n        const startTime = Date.now();\n        let lastError = null;\n        for (let i = 0; i < 10; i++) {\n            if (Date.now() - startTime > timeout) {\n                throw new Error(\"Transaction wait timed out\");\n            }\n            try {\n                return await this.getTransactionStatus(txId);\n            }\n            catch (error) {\n                lastError = error instanceof Error ? error : new Error(String(error));\n                if (!(error instanceof Error) || error.message !== \"tx not found\") {\n                    throw error;\n                }\n            }\n            await new Promise(resolve => setTimeout(resolve, 100 * i));\n        }\n        throw lastError || new Error(\"Failed to get transaction status\");\n    }\n}\nexports.HyperSDKClient = HyperSDKClient;\nconst cb58 = {\n    encode(data) {\n        return base_1.base58.encode(new Uint8Array([...data, ...(0, sha256_1.sha256)(data).subarray(-4)]));\n    },\n    decode(string) {\n        return base_1.base58.decode(string).subarray(0, -4);\n    },\n};\nfunction idStringToBigInt(id) {\n    const bytes = cb58.decode(id);\n    return BigInt(`0x${bytes.reduce((str, byte) => str + byte.toString(16).padStart(2, '0'), '')}`);\n}\nexports.idStringToBigInt = idStringToBigInt;\n"]}