{"version":3,"file":"api.cjs","sources":["../src/utils/internal/buildRequestUrl.ts","../src/utils/internal/call.ts","../src/api/models/account-keypair.model.ts","../src/api/models/masternode.model.ts","../src/api/models/node-info.model.ts","../src/api/models/sanity.model.ts","../src/api/models/transaction.model.ts","../src/api/models/asset-balance.model.ts","../src/api/models/asset.model.ts","../src/api/models/asset-order.model.ts","../src/utils/public/buildNodeConfiguration.ts","../src/api/checkAddress.ts","../src/api/checkSignature.ts","../src/api/generateAccount.ts","../src/api/getAddress.ts","../src/api/getAlias.ts","../src/api/getBalance.ts","../src/api/getBase58.ts","../src/api/getBlock.ts","../src/api/getBlockTransactions.ts","../src/api/getCurrentBlock.ts","../src/api/getMasternodes.ts","../src/api/getMempoolSize.ts","../src/api/getNodeInfo.ts","../src/api/getNodeSanityInfo.ts","../src/api/getNodeVersion.ts","../src/api/getPendingBalance.ts","../src/api/getPublicKey.ts","../src/api/getRandomNumber.ts","../src/api/getTransaction.ts","../src/api/getTransactions.ts","../src/api/sendTransaction.ts"],"sourcesContent":["export const buildRequestUrl = (\n    baseUrl: string,\n    endpointUrl: string,\n    args: Record<string, string | number> = {},\n) => {\n    const concatenated = `${baseUrl}/${endpointUrl}`;\n    let withArgs = concatenated.replaceAll(/([^:]\\/)\\/+/g, \"$1\");\n\n    const queryParamValues: Record<string, string> = {};\n\n    for (const [argKey, argValue] of Object.entries(args)) {\n        // \"abc.com/some-route/:foo/some-path\" & {\"foo\": 4} --> \"abc.com/some-route/4/some-path\"\n        if (withArgs.includes(`:${argKey}`)) {\n            withArgs = withArgs.replace(`:${argKey}`, String(argValue));\n        } else if (argValue !== undefined) {\n            queryParamValues[argKey] = String(argValue);\n        }\n    }\n\n    const queryString = new URLSearchParams(queryParamValues).toString();\n    return `${withArgs}?${queryString}`;\n};\n","const packageVersion = process.env?.[\"PACKAGE_VERSION\"] ?? \"Unknown\";\n\nexport const call = async <\n    T extends readonly any[] | Record<string, any> | any,\n>(config: {\n    url: string;\n}) => {\n    const { url } = config;\n\n    const headers = new Headers({\n        \"User-Agent\": `arionum-js/${packageVersion}`,\n    });\n\n    const rawResponse = await fetch(url, { headers });\n\n    if (!rawResponse.ok) {\n        throw new Error(\n            `HTTP Error: Status ${rawResponse.status} ${rawResponse.statusText}`,\n        );\n    }\n\n    const jsonResponse = await rawResponse.json();\n\n    if (jsonResponse.status === \"error\" && jsonResponse.data !== undefined) {\n        throw new Error(`An API error occurred: ${jsonResponse.data}`);\n    } else if (jsonResponse.status !== \"ok\") {\n        throw new Error(\"An unknown API error occurred.\");\n    }\n\n    return jsonResponse.data as T;\n};\n","export interface AccountKeypair {\n    address: string;\n    publicKey: string;\n    privateKey: string;\n}\n\nexport const accountKeypairFromApi = (data: any) => {\n    return {\n        address: data.address,\n        publicKey: data.public_key,\n        privateKey: data.private_key,\n    };\n};\n","export interface Masternode {\n    publicKey: string;\n    height: number;\n    ip: string;\n    lastWonBlock: number;\n    blacklist: number;\n    fails: number;\n    status: boolean;\n    voteKey: string | null;\n    coldLastWonBlock: number;\n    voted: number;\n}\n\nexport const masternodesFromApi = (data: any): Array<Masternode> => {\n    return data.masternodes.map((masternode: any): Masternode => {\n        return {\n            publicKey: masternode.public_key,\n            height: masternode.height,\n            ip: masternode.ip,\n            lastWonBlock: masternode.last_won,\n            blacklist: masternode.blacklist,\n            fails: masternode.fails,\n            status: masternode.status,\n            voteKey: masternode.vote_key,\n            coldLastWonBlock: masternode.cold_last_won,\n            voted: masternode.voted,\n        };\n    });\n};\n","export interface NodeInfo {\n    hostname: string;\n    version: string;\n    databaseVersion: string;\n    statistics: {\n        accounts: number;\n        transactions: number;\n        mempoolTransactions: number;\n        masternodes: number;\n        peers: number;\n    };\n}\n\nexport const nodeInfoFromApi = (data: any): NodeInfo => {\n    return {\n        hostname: data.hostname,\n        version: data.version,\n        databaseVersion: data.dbversion,\n        statistics: {\n            accounts: data.accounts,\n            transactions: data.transactions,\n            mempoolTransactions: data.mempool,\n            masternodes: data.masternodes,\n            peers: data.peers,\n        },\n    };\n};\n","export interface Sanity {\n    isRunning: boolean;\n    isSynchronising: boolean;\n    lastRun: number;\n}\n\nexport const sanityFromApi = (data: any): Sanity => {\n    return {\n        isRunning: data.sanity_running,\n        isSynchronising: data.sanity_sync,\n        lastRun: data.last_sanity,\n    };\n};\n","import { TransactionType } from \"./transaction-type.model\";\n\nexport interface Transaction {\n    id: string;\n    block: string;\n    blockHeight: number;\n    confirmations: number;\n    sourceAddress: string;\n    destinationAddress: string;\n    value: number;\n    fee: number;\n    publicKey: string;\n    signature: string;\n    message: string;\n    type: TransactionType;\n    date: number;\n    version: number;\n}\n\nexport const transactionFromApi = (data: any): Transaction => {\n    return {\n        id: data.id,\n        block: data.block,\n        blockHeight: data.height,\n        confirmations: data.confirmation,\n        sourceAddress: data.src,\n        destinationAddress: data.dst,\n        value: data.val,\n        fee: data.fee,\n        publicKey: data.public_key,\n        signature: data.signature,\n        message: data.message,\n        type: data.type,\n        date: data.date,\n        version: data.version,\n    };\n};\n","export interface AssetBalance {\n    asset: string;\n    alias: string;\n    address: string;\n    balance: number;\n}\n\nexport const assetBalanceFromApi = (data: any): AssetBalance => {\n    return {\n        asset: data.asset,\n        alias: data.alias,\n        address: data.account,\n        balance: data.balance,\n    };\n};\n","export interface Asset {\n    id: string;\n    maxSupply: number;\n    tradeable: boolean;\n    price: number;\n    dividendOnly: boolean;\n    autoDividend: boolean;\n    allowBids: boolean;\n    blockHeight: number;\n    alias: string | null;\n    balance: number;\n}\n\nexport const assetFromApi = (data: any): Asset => {\n    return {\n        id: data.id,\n        maxSupply: data.max_supply,\n        tradeable: data.tradable,\n        price: data.price,\n        dividendOnly: data.dividend_only,\n        autoDividend: data.auto_dividend,\n        allowBids: data.allow_bid,\n        blockHeight: data.height,\n        alias: data.alias,\n        balance: data.balance,\n    };\n};\n","export type AssetOrderType = \"bid\";\n\nexport interface AssetOrder {\n    id: string;\n    address: string;\n    asset: string;\n    price: number;\n    date: number;\n    status: boolean;\n    type: AssetOrderType;\n    value: number;\n    valueDone: number;\n    cancelable: boolean;\n}\n\nexport const assetOrderFromApi = (data: any): AssetOrder => {\n    return {\n        id: data.id,\n        address: data.account,\n        asset: data.asset,\n        price: data.price,\n        date: data.date,\n        status: data.status,\n        type: data.type,\n        value: data.val,\n        valueDone: data.val_done,\n        cancelable: data.cancelable,\n    };\n};\n","import { NodeConfiguration } from \"./models\";\n\nexport const buildNodeConfiguration = (\n    config: NodeConfiguration,\n): NodeConfiguration => {\n    if (!config.url) {\n        throw new Error(`\n          buildNodeConfiguration() requires an object containing a URL. e.g.:\n\n          const nodeConfiguration = buildNodeConfiguration({\n            url: \"http://peer1.arionum.com\",\n          })\n        `);\n    }\n\n    return config;\n};\n","import { NodeConfiguration } from \"../utils/public\";\nimport { buildRequestUrl, call } from \"../utils/internal\";\n\nexport const checkAddress = async (\n    nodeConfiguration: NodeConfiguration,\n    payload: { address: string; publicKey?: string },\n): Promise<boolean> => {\n    const { address, publicKey } = payload;\n\n    const queryParams: Record<string, number | string> = {\n        q: \"checkAddress\",\n        account: address,\n    };\n\n    if (publicKey) {\n        queryParams.public_key = publicKey;\n    }\n\n    const url = buildRequestUrl(nodeConfiguration.url, \"/api.php\", queryParams);\n\n    return await call<boolean>({ url });\n};\n","import { NodeConfiguration } from \"../utils/public\";\nimport { buildRequestUrl } from \"../utils/internal\";\nimport { call } from \"../utils/internal\";\n\nexport const checkSignature = async (\n    nodeConfiguration: NodeConfiguration,\n    payload: { data: string; signature: string; publicKey: string },\n): Promise<boolean> => {\n    const { data, signature, publicKey } = payload;\n\n    const queryParams: Record<string, number | string> = {\n        q: \"checkSignature\",\n        data: data,\n        signature: signature,\n        public_key: publicKey,\n    };\n\n    const url = buildRequestUrl(nodeConfiguration.url, \"/api.php\", queryParams);\n\n    return await call<boolean>({ url });\n};\n","import { NodeConfiguration } from \"../utils/public\";\nimport { buildRequestUrl } from \"../utils/internal\";\nimport { call } from \"../utils/internal\";\nimport { AccountKeypair, accountKeypairFromApi } from \"./models\";\n\nexport const generateAccount = async (\n    nodeConfiguration: NodeConfiguration,\n): Promise<AccountKeypair> => {\n    const queryParams: Record<string, number | string> = {\n        q: \"generateAccount\",\n    };\n\n    const url = buildRequestUrl(nodeConfiguration.url, \"/api.php\", queryParams);\n\n    return accountKeypairFromApi(await call<any>({ url }));\n};\n","import { NodeConfiguration } from \"../utils/public\";\nimport { buildRequestUrl } from \"../utils/internal\";\nimport { call } from \"../utils/internal\";\n\nexport const getAddress = async (\n    nodeConfiguration: NodeConfiguration,\n    payload: { publicKey: string },\n): Promise<string> => {\n    const { publicKey } = payload;\n\n    const queryParams: Record<string, number | string> = {\n        q: \"getAddress\",\n        public_key: publicKey,\n    };\n\n    const url = buildRequestUrl(nodeConfiguration.url, \"/api.php\", queryParams);\n\n    return await call<string>({ url });\n};\n","import { NodeConfiguration } from \"../utils/public\";\nimport { buildRequestUrl } from \"../utils/internal\";\nimport { call } from \"../utils/internal\";\n\nexport const getAlias = async (\n    nodeConfiguration: NodeConfiguration,\n    payload: { address?: string; publicKey?: string },\n): Promise<string> => {\n    const { address, publicKey } = payload;\n\n    const queryParams: Record<string, number | string> = {\n        q: \"getAlias\",\n    };\n\n    if (publicKey) {\n        queryParams.public_key = publicKey;\n    }\n\n    if (address) {\n        queryParams.account = address;\n    }\n\n    const url = buildRequestUrl(nodeConfiguration.url, \"/api.php\", queryParams);\n\n    return await call<string>({ url });\n};\n","import { NodeConfiguration } from \"../utils/public\";\nimport { buildRequestUrl } from \"../utils/internal\";\nimport { call } from \"../utils/internal\";\n\nexport const getBalance = async (\n    nodeConfiguration: NodeConfiguration,\n    payload: { address?: string; alias?: string; publicKey?: string },\n): Promise<string> => {\n    const { address, alias, publicKey } = payload;\n\n    const queryParams: Record<string, number | string> = {\n        q: \"getBalance\",\n    };\n\n    if (publicKey) {\n        queryParams.public_key = publicKey;\n    }\n\n    if (address) {\n        queryParams.account = address;\n    }\n\n    if (alias) {\n        queryParams.alias = alias;\n    }\n\n    const url = buildRequestUrl(nodeConfiguration.url, \"/api.php\", queryParams);\n\n    return await call<string>({ url });\n};\n","import { NodeConfiguration } from \"../utils/public\";\nimport { buildRequestUrl } from \"../utils/internal\";\nimport { call } from \"../utils/internal\";\n\n/** Convert a string to Base58. */\nexport const getBase58 = async (\n    nodeConfiguration: NodeConfiguration,\n    payload: { data: string },\n): Promise<string> => {\n    const { data } = payload;\n\n    const queryParams: Record<string, number | string> = {\n        q: \"base58\",\n        data: data,\n    };\n\n    const url = buildRequestUrl(nodeConfiguration.url, \"/api.php\", queryParams);\n\n    return await call<string>({ url });\n};\n","import { NodeConfiguration } from \"../utils/public\";\nimport { buildRequestUrl } from \"../utils/internal\";\nimport { call } from \"../utils/internal\";\nimport { Block } from \"./models\";\n\nexport const getBlock = async (\n    nodeConfiguration: NodeConfiguration,\n    payload: { height: number },\n): Promise<Block> => {\n    const { height } = payload;\n\n    const queryParams: Record<string, number | string> = {\n        q: \"getBlock\",\n        height: height,\n    };\n\n    const url = buildRequestUrl(nodeConfiguration.url, \"/api.php\", queryParams);\n\n    return await call<Block>({ url });\n};\n","import { NodeConfiguration } from \"../utils/public\";\nimport { buildRequestUrl } from \"../utils/internal\";\nimport { call } from \"../utils/internal\";\nimport { Transaction, transactionFromApi } from \"./models\";\n\nexport const getBlockTransactions = async (\n    nodeConfiguration: NodeConfiguration,\n    payload: {\n        height?: number;\n        blockId?: string;\n        includeMiningRewards?: boolean;\n    },\n): Promise<Array<Transaction>> => {\n    const { height, blockId, includeMiningRewards } = payload;\n\n    const queryParams: Record<string, number | string> = {\n        q: \"getBlockTransactions\",\n    };\n\n    if (height) {\n        queryParams.height = height;\n    }\n\n    if (blockId) {\n        queryParams.block = blockId;\n    }\n\n    if (includeMiningRewards) {\n        queryParams.includeMiningRewards = \"true\";\n    }\n\n    const url = buildRequestUrl(nodeConfiguration.url, \"/api.php\", queryParams);\n\n    return (await call<Array<any>>({ url })).map((data: any) =>\n        transactionFromApi(data),\n    );\n};\n","import { NodeConfiguration } from \"../utils/public\";\nimport { buildRequestUrl } from \"../utils/internal\";\nimport { call } from \"../utils/internal\";\nimport { Block } from \"./models\";\n\nexport const getCurrentBlock = async (\n    nodeConfiguration: NodeConfiguration,\n): Promise<Block> => {\n    const queryParams: Record<string, number | string> = {\n        q: \"currentBlock\",\n    };\n\n    const url = buildRequestUrl(nodeConfiguration.url, \"/api.php\", queryParams);\n\n    return await call<Block>({ url });\n};\n","import { NodeConfiguration } from \"../utils/public\";\nimport { buildRequestUrl } from \"../utils/internal\";\nimport { call } from \"../utils/internal\";\nimport { Masternode, masternodesFromApi } from \"./models\";\n\nexport const getMasternodes = async (\n    nodeConfiguration: NodeConfiguration,\n    payload: { id: string },\n): Promise<Array<Masternode>> => {\n    const { id } = payload;\n\n    const queryParams: Record<string, number | string> = {\n        q: \"masternodes\",\n        transaction: id,\n    };\n\n    const url = buildRequestUrl(nodeConfiguration.url, \"/api.php\", queryParams);\n\n    return masternodesFromApi(await call<Array<any>>({ url }));\n};\n","import { NodeConfiguration } from \"../utils/public\";\nimport { buildRequestUrl } from \"../utils/internal\";\nimport { call } from \"../utils/internal\";\n\nexport const getMempoolSize = async (\n    nodeConfiguration: NodeConfiguration,\n): Promise<number> => {\n    const queryParams: Record<string, number | string> = {\n        q: \"mempoolSize\",\n    };\n\n    const url = buildRequestUrl(nodeConfiguration.url, \"/api.php\", queryParams);\n\n    return await call<number>({ url });\n};\n","import { NodeConfiguration } from \"../utils/public\";\nimport { buildRequestUrl } from \"../utils/internal\";\nimport { call } from \"../utils/internal\";\nimport { NodeInfo, nodeInfoFromApi } from \"./models\";\n\nexport const getNodeInfo = async (\n    nodeConfiguration: NodeConfiguration,\n): Promise<NodeInfo> => {\n    const queryParams: Record<string, number | string> = {\n        q: \"node-info\",\n    };\n\n    const url = buildRequestUrl(nodeConfiguration.url, \"/api.php\", queryParams);\n\n    return nodeInfoFromApi(await call<any>({ url }));\n};\n","import { NodeConfiguration } from \"../utils/public\";\nimport { buildRequestUrl } from \"../utils/internal\";\nimport { call } from \"../utils/internal\";\nimport { Sanity, sanityFromApi } from \"./models\";\n\nexport const getNodeSanityInfo = async (\n    nodeConfiguration: NodeConfiguration,\n): Promise<Sanity> => {\n    const queryParams: Record<string, number | string> = {\n        q: \"sanity\",\n    };\n\n    const url = buildRequestUrl(nodeConfiguration.url, \"/api.php\", queryParams);\n\n    return sanityFromApi(await call<any>({ url }));\n};\n","import { NodeConfiguration } from \"../utils/public\";\nimport { buildRequestUrl } from \"../utils/internal\";\nimport { call } from \"../utils/internal\";\n\nexport const getNodeVersion = async (\n    nodeConfiguration: NodeConfiguration,\n): Promise<string> => {\n    const queryParams: Record<string, number | string> = {\n        q: \"version\",\n    };\n\n    const url = buildRequestUrl(nodeConfiguration.url, \"/api.php\", queryParams);\n\n    return await call<string>({ url });\n};\n","import { NodeConfiguration } from \"../utils/public\";\nimport { buildRequestUrl } from \"../utils/internal\";\nimport { call } from \"../utils/internal\";\n\nexport const getPendingBalance = async (\n    nodeConfiguration: NodeConfiguration,\n    payload: { address?: string; publicKey?: string },\n): Promise<string> => {\n    const { address, publicKey } = payload;\n\n    const queryParams: Record<string, number | string> = {\n        q: \"getPendingBalance\",\n    };\n\n    if (publicKey) {\n        queryParams.public_key = publicKey;\n    }\n\n    if (address) {\n        queryParams.account = address;\n    }\n\n    const url = buildRequestUrl(nodeConfiguration.url, \"/api.php\", queryParams);\n\n    return await call<string>({ url });\n};\n","import { NodeConfiguration } from \"../utils/public\";\nimport { buildRequestUrl } from \"../utils/internal\";\nimport { call } from \"../utils/internal\";\n\nexport const getPublicKey = async (\n    nodeConfiguration: NodeConfiguration,\n    payload: { address: string },\n): Promise<string> => {\n    const { address } = payload;\n\n    const queryParams: Record<string, number | string> = {\n        q: \"getPublicKey\",\n        account: address,\n    };\n\n    const url = buildRequestUrl(nodeConfiguration.url, \"/api.php\", queryParams);\n\n    return await call<string>({ url });\n};\n","import { NodeConfiguration } from \"../utils/public\";\nimport { buildRequestUrl } from \"../utils/internal\";\nimport { call } from \"../utils/internal\";\n\nexport const getRandomNumber = async (\n    nodeConfiguration: NodeConfiguration,\n    payload: {\n        height: number;\n        minimum: number;\n        maximum: number;\n        seed?: string;\n    },\n): Promise<number> => {\n    const { height, minimum, maximum, seed } = payload;\n\n    const queryParams: Record<string, number | string> = {\n        q: \"randomNumber\",\n        height: height,\n        min: minimum,\n        max: maximum,\n    };\n\n    if (seed) {\n        queryParams.seed = seed;\n    }\n\n    const url = buildRequestUrl(nodeConfiguration.url, \"/api.php\", queryParams);\n\n    return await call<number>({ url });\n};\n","import { NodeConfiguration } from \"../utils/public\";\nimport { buildRequestUrl } from \"../utils/internal\";\nimport { call } from \"../utils/internal\";\nimport { Transaction, transactionFromApi } from \"./models\";\n\nexport const getTransaction = async (\n    nodeConfiguration: NodeConfiguration,\n    payload: { id: string },\n): Promise<Transaction> => {\n    const { id } = payload;\n\n    const queryParams: Record<string, number | string> = {\n        q: \"getTransaction\",\n        transaction: id,\n    };\n\n    const url = buildRequestUrl(nodeConfiguration.url, \"/api.php\", queryParams);\n\n    return transactionFromApi(await call<any>({ url }));\n};\n","import { NodeConfiguration } from \"../utils/public\";\nimport { buildRequestUrl } from \"../utils/internal\";\nimport { call } from \"../utils/internal\";\nimport { Transaction, transactionFromApi } from \"./models\";\n\nexport const getTransactions = async (\n    nodeConfiguration: NodeConfiguration,\n    payload: { account?: string; publicKey?: string; limit?: number },\n): Promise<Array<Transaction>> => {\n    const { account, limit, publicKey } = payload;\n\n    const queryParams: Record<string, number | string> = {\n        q: \"getTransactions\",\n    };\n\n    if (publicKey) {\n        queryParams.public_key = publicKey;\n    }\n\n    if (account) {\n        queryParams.account = account;\n    }\n\n    if (limit) {\n        queryParams.limit = limit;\n    }\n\n    const url = buildRequestUrl(nodeConfiguration.url, \"/api.php\", queryParams);\n\n    return (await call<Array<any>>({ url })).map((data: any) =>\n        transactionFromApi(data),\n    );\n};\n","import { NodeConfiguration } from \"../utils/public\";\nimport { buildRequestUrl } from \"../utils/internal\";\nimport { call } from \"../utils/internal\";\nimport { Transaction } from \"./models\";\n\nexport const sendTransaction = async (\n    nodeConfiguration: NodeConfiguration,\n    payload: { transaction: Transaction },\n): Promise<string> => {\n    const { transaction } = payload;\n\n    const queryParams: Record<string, number | string> = {\n        q: \"send\",\n        val: transaction.value,\n        dst: transaction.destinationAddress,\n        public_key: transaction.publicKey,\n        signature: transaction.signature,\n        date: transaction.date,\n        message: transaction.message,\n        version: transaction.version,\n    };\n\n    const url = buildRequestUrl(nodeConfiguration.url, \"/api.php\", queryParams);\n\n    return await call<string>({ url });\n};\n"],"names":["_process$env$PACKAGE_","_process$env","buildRequestUrl","baseUrl","endpointUrl","args","withArgs","replaceAll","queryParamValues","_i","_Object$entries","Object","entries","length","_Object$entries$_i","argKey","argValue","includes","replace","String","undefined","URLSearchParams","toString","packageVersion","process","env","call","config","url","headers","Headers","Promise","resolve","fetch","then","rawResponse","ok","Error","status","statusText","json","jsonResponse","data","e","reject","accountKeypairFromApi","address","publicKey","public_key","privateKey","private_key","masternodesFromApi","masternodes","map","masternode","height","ip","lastWonBlock","last_won","blacklist","fails","voteKey","vote_key","coldLastWonBlock","cold_last_won","voted","nodeInfoFromApi","hostname","version","databaseVersion","dbversion","statistics","accounts","transactions","mempoolTransactions","mempool","peers","sanityFromApi","isRunning","sanity_running","isSynchronising","sanity_sync","lastRun","last_sanity","transactionFromApi","id","block","blockHeight","confirmations","confirmation","sourceAddress","src","destinationAddress","dst","value","val","fee","signature","message","type","date","asset","alias","account","balance","maxSupply","max_supply","tradeable","tradable","price","dividendOnly","dividend_only","autoDividend","auto_dividend","allowBids","allow_bid","valueDone","val_done","cancelable","nodeConfiguration","payload","queryParams","q","blockId","includeMiningRewards","_call","transaction","seed","min","minimum","max","maximum","limit"],"mappings":"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"}