import { Component, OnInit } from '@angular/core';
import { StateService } from 'src/app/services/state.service';
import { WebsocketService } from 'src/app/services/websocket.service';
import { Observable, merge, of } from 'rxjs';
import { SeoService } from 'src/app/services/seo.service';

@Component({
  selector: 'app-api-docs',
  templateUrl: './api-docs.component.html',
  styleUrls: ['./api-docs.component.scss']
})
export class ApiDocsComponent implements OnInit {
  hostname = document.location.hostname;
  network$: Observable<string>;
  active = 0;

  code = {
    recommendedFees: {
      codeSample: {
        esModule: `const { %{1}: { fees } } = mempoolJS();

  const feesRecommended = await fees.getFeesRecommended();
  console.log(feesRecommended);`,
        commonJS: `const { %{1}: { fees } } = mempoolJS();

        const feesRecommended = await fees.getFeesRecommended();
        console.log(feesRecommended);`,
        curl: `curl -X GET "https://mempool.space/api/v1/fees/recommended"`,
      },
      responseSample: `{
  fastestFee: 60,
  halfHourFee: 35,
  hourFee: 20,
  minimumFee: 1
}`,
    },
    mempoolBlocks: {
      codeSample: {
        esModule: `const { %{1}: { fees } } = mempoolJS();

  const feesMempoolBlocks = await fees.getFeesMempoolBlocks();
  console.log(feesMempoolBlocks);`,
        commonJS: `const { %{1}: { fees } } = mempoolJS();

        const feesMempoolBlocks = await fees.getFeesMempoolBlocks();
        console.log(feesMempoolBlocks);`,
        curl: `curl -X GET "https://mempool.space/api/v1/fees/mempool-blocks"`,
      },
      responseSample: `[
  {
    blockSize: 1325044,
    blockVSize: 974920,
    nTx: 2314,
    totalFees: 57600850,
    medianFee: 59.73444413716814,
    feeRange: [
      14.091264667535855,
      27.88170055452865,
      50.123893805309734,
      59,
      60.267857142857146,
      65.47085201793722,
      100,
      474.934036939314
    ]
  },
  ...
]`,
    },
    cpfp: {
      codeSample: {
        esModule: `const { %{1}: { fees } } = mempoolJS();
  const txid = 'txid';

  const feesCPFP = await fees.getCPFP({ txid });
  console.log(feesCPFP);`,
        commonJS: `const { %{1}: { fees } } = mempoolJS();
        const txid = 'txid';

        const feesCPFP = await fees.getCPFP({ txid });`,
        curl: `curl -X GET "https://mempool.space/api/v1/cpfp/:txid"`,
      },
      responseSample: ``,
    },
    mempool: {
      codeSample: {
        esModule: `const { %{1}: { mempool } } = mempoolJS();

  const getMempool = await mempool.getMempool();
  console.log(getMempool);`,
        commonJS: `const { %{1}: { mempool } } = mempoolJS();

        const getMempool = await mempool.getMempool();
        console.log(getMempool);`,
        curl: `curl -X GET "https://mempool.space/api/mempool"`,
      },
      responseSample: `{
  count: 12262,
  vsize: 18726518,
  total_fee: 99943359,
  fee_histogram: [
    [ 121.72455, 50049 ],
    ... 142 more items
  ]
}`,
    },
    mempoolTxs: {
      codeSample: {
        esModule: `const { %{1}: { mempool } } = mempoolJS();

  const getMempoolTxids = await mempool.getMempoolTxids();
  console.log(getMempoolTxids);`,
        commonJS: `const { %{1}: { mempool } } = mempoolJS();

        const getMempoolTxids = await mempool.getMempoolTxids();
        console.log(getMempoolTxids);`,
        curl: `curl -X GET "https://mempool.space/api/mempool/txids"`,
      },
      responseSample: `[
  '0873cc5e6c63704a27c63d5b86231db2a688d1e8dee466c8162aa6a398e719c5',
  ... 12308 more items
]`,
    },
    mempoolRecent: {
      codeSample: {
        esModule: `const { %{1}: { mempool } } = mempoolJS();

  const getMempoolRecent = await mempool.getMempoolRecent();
  console.log(getMempoolRecent);`,
        commonJS: `
        const { %{1}: { mempool } } = mempoolJS();

        const getMempoolRecent = await mempool.getMempoolRecent();
        console.log(getMempoolRecent);`,
        curl: `curl -X GET "https://mempool.space/api/mempool/recent"`,
      },
      responseSample: `[
  {
    txid: '4ab126bfde126a7824336080cbad0e6c3db0d39873b2093080ec5dc09205dca6',
    fee: 8520,
    vsize: 141,
    value: 3428127849
  },
  ...
]`,
    },
    block: {
      codeSample: {
        esModule: `const { %{1}: { blocks } } = mempoolJS();
  const hash =
    '000000000000000015dc777b3ff2611091336355d3f0ee9766a2cf3be8e4b1ce';

  const block = await blocks.getBlock({ hash });
  console.log(block);`,
        commonJS: `const { %{1}: { blocks } } = mempoolJS();
        const hash =
          '000000000000000015dc777b3ff2611091336355d3f0ee9766a2cf3be8e4b1ce';

        const block = await blocks.getBlock({ hash });
        console.log(block);`,
        curl: `curl -X GET "https://mempool.space/api/block/:hash"`,
      },
      responseSample: `{
    id: "000000000000000015dc777b3ff2611091336355d3f0ee9766a2cf3be8e4b1ce",
    height: 363366,
    version: 2,
    timestamp: 1435766771,
    tx_count: 494,
    size: 286494,
    weight: 1145976,
    merkle_root: "9d3cb87bf05ebae366b4262ed5f768ce8c62fc385c3886c9cb097647b04b686c",
    previousblockhash: "000000000000000010c545b6fa3ef1f7cf45a2a8760b1ee9f2e89673218207ce",
    mediantime: 1435763435,
    nonce: 2892644888,
    bits: 404111758,
    difficulty: 49402014931
  }`,
    },
    blockHeight: {
      codeSample: {
        esModule: `const { %{1}: { blocks } } = mempoolJS();

  const blockHeight = await blocks.getBlockHeight({ height: 0 });
  console.log(blockHeight);
`,
        commonJS: `const { %{1}: { blocks } } = mempoolJS();

        const blockHeight = await blocks.getBlockHeight({ height: 0 });
        console.log(blockHeight);`,
        curl: `curl -X GET "https://mempool.space/api/block-height/:height"`,
      },
      responseSample: `000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f`,
    },
    blockRaw: {
      codeSample: {
        esModule: `const { %{1}: { blocks } } = mempoolJS();
  const hash =
    '000000000000000015dc777b3ff2611091336355d3f0ee9766a2cf3be8e4b1ce';

  const blockRaw = await blocks.getBlockRaw({ hash });
  console.log(blockRaw);
`,
        commonJS: `const { %{1}: { blocks } } = mempoolJS();
        const hash =
          '000000000000000015dc777b3ff2611091336355d3f0ee9766a2cf3be8e4b1ce';

        const blockRaw = await blocks.getBlockRaw({ hash });
        console.log(blockRaw);`,
        curl: `curl -X GET "https://mempool.space/api/block/:hash/raw"`,
      },
      responseSample: ``,
    },
    blockStatus: {
      codeSample: {
        esModule: `const { %{1}: { blocks } } = mempoolJS();
  const hash =
    '000000000000000015dc777b3ff2611091336355d3f0ee9766a2cf3be8e4b1ce';

  const blockStatus = await blocks.getBlockStatus({ hash });
  console.log(blockStatus);
`,
        commonJS: `const { %{1}: { blocks } } = mempoolJS();
        const hash =
          '000000000000000015dc777b3ff2611091336355d3f0ee9766a2cf3be8e4b1ce';

        const blockStatus = await blocks.getBlockStatus({ hash });
        console.log(blockStatus);`,
        curl: `curl -X GET "https://mempool.space/api/block/:hash/status"`,
      },
      responseSample: `{
  in_best_chain: true,
  height: 363366,
  next_best: "000000000000000015eb17c390eb4a920fc745332fda6a62179a6afe0d6a6548"
}`,
    },
    blockTipHeight: {
      codeSample: {
        esModule: `const { %{1}: { blocks } } = mempoolJS();
  const blocksTipHeight = await blocks.getBlocksTipHeight();
  console.log(blocksTipHeight);
`,
        commonJS: `const { %{1}: { blocks } } = mempoolJS();

        const blocksTipHeight = await blocks.getBlocksTipHeight();
        console.log(blocksTipHeight);`,
        curl: `curl -X GET "https://mempool.space/api/blocks/tip/height"`,
      },
      responseSample: `685442`,
    },
    blockTipHash: {
      codeSample: {
        esModule: `const { %{1}: { blocks } } = mempoolJS();
  const blocksTipHash = await blocks.getBlocksTipHash();
  console.log(blocksTipHash);
`,
        commonJS: `const { %{1}: { blocks } } = mempoolJS();

        const blocksTipHash = await blocks.getBlocksTipHash();
        console.log(blocksTipHash);`,
        curl: `curl -X GET "https://mempool.space/api/blocks/tip/hash"`,
      },
      responseSample: `00000000000000000009165c5600f52cb7436b40f3ad48e996de63d63e1a124e`,
    },
    blockTxId: {
      codeSample: {
        esModule: `const { %{1}: { blocks } } = mempoolJS();
  const hash =
    '000000000000000015dc777b3ff2611091336355d3f0ee9766a2cf3be8e4b1ce';

  const blockTxid = await blocks.getBlockTxid({ hash, index: 218 });
  console.log(blockTxid);
`,
        commonJS: `const { %{1}: { blocks } } = mempoolJS();
        const hash =
          '000000000000000015dc777b3ff2611091336355d3f0ee9766a2cf3be8e4b1ce';

        const blockTxid = await blocks.getBlockTxid({ hash, index: 218 });
        console.log(blockTxid);`,
        curl: `curl -X GET "https://mempool.space/api/block/:hash/txid/:index"`,
      },
      responseSample: `0fa6da60e484941f255cbb025c3d6440e5a7e970119e899b4065c7999360e406`,
    },
    blockTxIds: {
      codeSample: {
        esModule: `const { %{1}: { blocks } } = mempoolJS();
  const hash =
    '000000000000000015dc777b3ff2611091336355d3f0ee9766a2cf3be8e4b1ce';

  const blockTxids = await blocks.getBlockTxids({ hash });
  console.log(blockTxids);
`,
        commonJS: `const { %{1}: { blocks } } = mempoolJS();
        const hash =
          '000000000000000015dc777b3ff2611091336355d3f0ee9766a2cf3be8e4b1ce';

        const blockTxids = await blocks.getBlockTxids({ hash });
        console.log(blockTxids);`,
        curl: `curl -X GET "https://mempool.space/api/block/:hash/txids"`,
      },
      responseSample: `[
  "cfe624ccdd8010cf78dbedd1b25e1ff601b470c4d7d90fa9fc8c1bcc5cdc6e0e",
  "a5ef89881bd5103f223a0fa285dfc75f4718974cb792cf85e623a7de05801bc9",
  "94e8c35414db17cd10efa0ac4115e086edb168ba7bd86e737e5b8cab96821580",
  ...
]`,
    },
    blockTxs: {
      codeSample: {
        esModule: `const { %{1}: { blocks } } = mempoolJS();
  const hash =
    '000000000000000015dc777b3ff2611091336355d3f0ee9766a2cf3be8e4b1ce';

  const blockTxs = await blocks.getBlockTxs({ hash });
  console.log(blockTxs);
`,
        commonJS: `const { %{1}: { blocks } } = mempoolJS();
        const hash =
          '000000000000000015dc777b3ff2611091336355d3f0ee9766a2cf3be8e4b1ce';

        const blockTxs = await blocks.getBlockTxs({ hash });
        console.log(blockTxs);`,
        curl: `curl -X GET "https://mempool.space/api/block/:hash/txs[/:start_index]"`,
      },
      responseSample: `[
  {
    txid: "cfe624ccdd8010cf78dbedd1b25e1ff601b470c4d7d90fa9fc8c1bcc5cdc6e0e",
    version: 1,
    locktime: 0,
    vin: [ [Object] ],
    vout: [ [Object] ],
    size: 102,
    weight: 408,
    fee: 0,
    status: {
      confirmed: true,
      block_height: 363366,
      block_hash: "000000000000000015dc777b3ff2611091336355d3f0ee9766a2cf3be8e4b1ce",
      block_time: 1435766771
    }
  },
  ...
]`,
    },
    blocks: {
      codeSample: {
        esModule: `const { %{1}: { blocks } } = mempoolJS();

  const getBlocks = await blocks.getBlocks({ start_height: 9999 });
  console.log(getBlocks);
`,
        commonJS: `const { %{1}: { blocks } } = mempoolJS();

        const getBlocks = await blocks.getBlocks({ start_height: 9999 });
        console.log(getBlocks);`,
        curl: `curl -X GET "https://mempool.space/api/blocks[/:start_height]"`,
      },
      responseSample: `[
  {
    id: '00000000fbc97cc6c599ce9c24dd4a2243e2bfd518eda56e1d5e47d29e29c3a7',
    height: 9999,
    version: 1,
    timestamp: 1238987491,
    tx_count: 1,
    size: 216,
    weight: 864,
    merkle_root: '5012c1d2a46d5684aa0331f0d8a900767c86c0fd83bb632f357b1ea11fa69179',
    previousblockhash: '000000003dd32df94cfafd16e0a8300ea14d67dcfee9e1282786c2617b8daa09',
    mediantime: 1238984702,
    nonce: 3568610608,
    bits: 486604799,
    difficulty: 1
  },
  ...
]`,
    },
    transaction: {
      codeSample: {
        esModule: `const { %{1}: { transactions } } = mempoolJS();
  const txid =
  '15e10745f15593a899cef391191bdd3d7c12412cc4696b7bcb669d0feadc8521';

  const tx = await transactions.getTx({ txid });
  console.log(tx);
`,
        commonJS: `const { %{1}: { transactions } } = mempoolJS();
  const txid =
  '15e10745f15593a899cef391191bdd3d7c12412cc4696b7bcb669d0feadc8521';

  const tx = await transactions.getTx({ txid });
  console.log(tx);`,
  curl: `curl -X GET "https://mempool.space/api/tx/:txid"`,
},
responseSample: `{
  txid: "15e10745f15593a899cef391191bdd3d7c12412cc4696b7bcb669d0feadc8521",
  version: 1,
  locktime: 0,
  vin: [
    {
      txid: "1fdfed84588cb826b876cd761ecebcf1726453437f0a6826e82ed54b2807a036",
      vout: 12,
      prevout: [Object],
      scriptsig: "483045022100bcdf40fb3b5ebfa2c158ac8d1a41c03eb3dba4e180b00e81836bafd56d946efd022005cc40e35022b614275c1e485c409599667cbd41f6e5d78f421cb260a020a24f01210255ea3f53ce3ed1ad2c08dfc23b211b15b852afb819492a9a0f3f99e5747cb5f0",
      scriptsig_asm: "OP_PUSHBYTES_72 3045022100bcdf40fb3b5ebfa2c158ac8d1a41c03eb3dba4e180b00e81836bafd56d946efd022005cc40e35022b614275c1e485c409599667cbd41f6e5d78f421cb260a020a24f01 OP_PUSHBYTES_33 0255ea3f53ce3ed1ad2c08dfc23b211b15b852afb819492a9a0f3f99e5747cb5f0",
      is_coinbase: false,
      sequence: 4294967295
    },
    ...
  ],
  vout: [
    {
      scriptpubkey: "76a91472d52e2f5b88174c35ee29844cce0d6d24b921ef88ac",
      scriptpubkey_asm: "OP_DUP OP_HASH160 OP_PUSHBYTES_20 72d52e2f5b88174c35ee29844cce0d6d24b921ef OP_EQUALVERIFY OP_CHECKSIG",
      scriptpubkey_type: "p2pkh",
      scriptpubkey_address: "1BUBQuPV3gEV7P2XLNuAJQjf5t265Yyj9t",
      value: 1240000000
    },
    ...
  ],
  size: 884,
  weight: 3536,
  fee: 20000,
  status: {
    confirmed: true,
    block_height: 363348,
    block_hash: "0000000000000000139385d7aa78ffb45469e0c715b8d6ea6cb2ffa98acc7171",
    block_time: 1435754650
  }
}`,
    },
    transactionHex: {
      codeSample: {
        esModule: `const { %{1}: { transactions } } = mempoolJS();
  const txid =
  '15e10745f15593a899cef391191bdd3d7c12412cc4696b7bcb669d0feadc8521';

  const txHex = await transactions.getTxHex({ txid });
  console.log(txHex);
`,
        commonJS: `const { %{1}: { transactions } } = mempoolJS();
        const txid =
        '15e10745f15593a899cef391191bdd3d7c12412cc4696b7bcb669d0feadc8521';

        const txHex = await transactions.getTxHex({ txid });
        console.log(txHex);`,
        curl: `curl -X GET "https://mempool.space/api/tx/:txid/hex"`,
      },
      responseSample: `010000000536a007284bd52ee826680a7f43536472f1bcce1e76cd76b826b88c5884eddf1f0c0000006b483045022100bcdf40fb3b5ebfa2c158ac8d1a41c03eb3dba4e180b00e81836bafd56d946efd022005cc40e35022b614275c1e485c409599667cbd41f6e5d78f421cb260a020a24f01210255ea3f53ce3ed1ad2c08dfc23b211b15b852afb819492a9a0f3f99e5747cb5f0ffffffffee08cb90c4e84dd7952b2cfad81ed3b088f5b32183da2894c969f6aa7ec98405020000006a47304402206332beadf5302281f88502a53cc4dd492689057f2f2f0f82476c1b5cd107c14a02207f49abc24fc9d94270f53a4fb8a8fbebf872f85fff330b72ca91e06d160dcda50121027943329cc801a8924789dc3c561d89cf234082685cbda90f398efa94f94340f2ffffffff36a007284bd52ee826680a7f43536472f1bcce1e76cd76b826b88c5884eddf1f060000006b4830450221009c97a25ae70e208b25306cc870686c1f0c238100e9100aa2599b3cd1c010d8ff0220545b34c80ed60efcfbd18a7a22f00b5f0f04cfe58ca30f21023b873a959f1bd3012102e54cd4a05fe29be75ad539a80e7a5608a15dffbfca41bec13f6bf4a32d92e2f4ffffffff73cabea6245426bf263e7ec469a868e2e12a83345e8d2a5b0822bc7f43853956050000006b483045022100b934aa0f5cf67f284eebdf4faa2072345c2e448b758184cee38b7f3430129df302200dffac9863e03e08665f3fcf9683db0000b44bf1e308721eb40d76b180a457ce012103634b52718e4ddf125f3e66e5a3cd083765820769fd7824fd6aa38eded48cd77fffffffff36a007284bd52ee826680a7f43536472f1bcce1e76cd76b826b88c5884eddf1f0b0000006a47304402206348e277f65b0d23d8598944cc203a477ba1131185187493d164698a2b13098a02200caaeb6d3847b32568fd58149529ef63f0902e7d9c9b4cc5f9422319a8beecd50121025af6ba0ccd2b7ac96af36272ae33fa6c793aa69959c97989f5fa397eb8d13e69ffffffff0400e6e849000000001976a91472d52e2f5b88174c35ee29844cce0d6d24b921ef88ac20aaa72e000000001976a914c15b731d0116ef8192f240d4397a8cdbce5fe8bc88acf02cfa51000000001976a914c7ee32e6945d7de5a4541dd2580927128c11517488acf012e39b000000001976a9140a59837ccd4df25adc31cdad39be6a8d97557ed688ac00000000`,
    },
    transactionMerkleblockProof: {
      codeSample: {
        esModule: `const { %{1}: { transactions } } = mempoolJS();
  const txid =
  '15e10745f15593a899cef391191bdd3d7c12412cc4696b7bcb669d0feadc8521';

  const txMerkleBlockProof = await transactions.getTxMerkleBlockProof({ txid });
  console.log(txMerkleBlockProof);
`,
        commonJS: `const { %{1}: { transactions } } = mempoolJS();
        const txid =
        '15e10745f15593a899cef391191bdd3d7c12412cc4696b7bcb669d0feadc8521';

        const txMerkleBlockProof = await transactions.getTxMerkleBlockProof({ txid });
        console.log(txMerkleBlockProof);`,
        curl: `curl -X GET "https://mempool.space/api/tx/:txid/merkleblock-proof"`,
      },
      responseSample: `0300000058f6dd09ac5aea942c01d12e75b351e73f4304cc442741000000000000000000ef0c2fa8517414b742094a020da7eba891b47d660ef66f126ad01e5be99a2fd09ae093558e411618c14240df820700000ce4d15e17594f257b22d1ddf47d07b3b88779a8374fcd515ad883d79726c6027da6abfcbc1341a049b30277d3bf14e4663ecaa55b76cb638bb92b028e9bdeeeba65a06adaae75df61e79677b13b5d45523d5ab4067f6f3c89e27458b9c1072910436afdd26b9b89489d89f2a7daaad6d375e3ebafb169bfa3cf266b9605964debb72a79a6491481295dc5ed5198b989c6126c8b4d354c274f115a91b7d01d878c01c9a70ba5d78e11c38d1f7b94692afb177e63a9371b60665ee4cfc49cd9cffa78244de209537d97b19d5938a67078af79f7258d7afe325b16c68089fe31f9ac2185dcea0f9d66cb7b6b69c42c41127c3ddd1b1991f3ce99a89355f14507e115f92356b4c0984e291567cf9d869918726b0e650274a6c692682320257c9925eeb7240c4ced055b8b8cf804d33bbec407b4058b1e1f7c5a7127770f7cac890879706e1e34ef8e1b715e182cc691524135bc78da898afc89b401862af259dca1da9065dad015d747181e12ffb73ea0ba0480a0b89ff33fb3884514554be97bf0b603add505`,
    },
    tramsactionMerkleProof: {
      codeSample: {
        esModule: `const { %{1}: { transactions } } = mempoolJS();
  const txid =
  '15e10745f15593a899cef391191bdd3d7c12412cc4696b7bcb669d0feadc8521';

  const txMerkleProof = await transactions.getTxMerkleProof({ txid });
  console.log(txMerkleProof);
`,
        commonJS: `const { %{1}: { transactions } } = mempoolJS();
        const txid =
        '15e10745f15593a899cef391191bdd3d7c12412cc4696b7bcb669d0feadc8521';

        const txMerkleProof = await transactions.getTxMerkleProof({ txid });
        console.log(txMerkleProof);`,
        curl: `curl -X GET "https://mempool.space/api/tx/:txid/merkle-proof"`,
      },
      responseSample: `{
  block_height: 363348,
  merkle: [
    "acf931fe8980c6165b32fe7a8d25f779af7870a638599db1977d5309e24d2478",
    ...
  ],
  pos: 1465
}`,
    },
    transactionOutspend: {
      codeSample: {
        esModule: `const { %{1}: { transactions } } = mempoolJS();
  const txid =
  '15e10745f15593a899cef391191bdd3d7c12412cc4696b7bcb669d0feadc8521';

  const txOutspend = await transactions.getTxOutspend({
    txid,
    vout: 3,
  });
  console.log(txOutspend);
`,
        commonJS: `const { %{1}: { transactions } } = mempoolJS();
        const txid =
        '15e10745f15593a899cef391191bdd3d7c12412cc4696b7bcb669d0feadc8521';

        const txOutspend = await transactions.getTxOutspend({
          txid,
          vout: 3,
        });
        console.log(txOutspend);`,
        curl: `curl -X GET "https://mempool.space/api/tx/:txid/outspend/:vout"`,
      },
      responseSample: `{
  spent: true,
  txid: "2a1b8ec06d68096911da82b02806c3848c415b0044a0046850c4a97cbffac7b1",
  vin: 1,
  status: {
    confirmed: true,
    block_height: 363354,
    block_hash: "000000000000000012e6130dec174ca877bf39ead6e3d04a8ba3b0cd683c1661",
    block_time: 1435758032
  }
}`,
    },
    transactionOutspends: {
      codeSample: {
        esModule: `const { %{1}: { transactions } } = mempoolJS();
  const txid =
  '15e10745f15593a899cef391191bdd3d7c12412cc4696b7bcb669d0feadc8521';

  const txOutspends = await transactions.getTxOutspends({ txid });
  console.log(txOutspends);
`,
        commonJS: `const { %{1}: { transactions } } = mempoolJS();
        const txid =
        '15e10745f15593a899cef391191bdd3d7c12412cc4696b7bcb669d0feadc8521';

        const txOutspends = await transactions.getTxOutspends({ txid });
        console.log(txOutspends);`,
        curl: `curl -X GET "https://mempool.space/api/tx/:txid/outspends"`,
      },
      responseSample: `[
  {
    spent: true,
    txid: "34de8ba520eb846da8831fa47c06eef9b4eb4a2ff6a3271165fd6b9aafc5a20c",
    vin: 12,
    status: {
      confirmed: true,
      block_height: 363349,
      block_hash: "000000000000000012ad81b3ea2cb1c4ba115901bd1b41cd05a6a8d736691322",
      block_time: 1435754897
    }
  },
  ...
]`,
    },
    transactionRaw: {
      codeSample: {
        esModule: `const { %{1}: { transactions } } = mempoolJS();
  const txid =
  '15e10745f15593a899cef391191bdd3d7c12412cc4696b7bcb669d0feadc8521';

  const txRaw = await transactions.getTxRaw({ txid });
  console.log(txRaw);
`,
        commonJS: `const { %{1}: { transactions } } = mempoolJS();
        const txid =
        '15e10745f15593a899cef391191bdd3d7c12412cc4696b7bcb669d0feadc8521';

        const txRaw = await transactions.getTxRaw({ txid });
        console.log(txRaw);`,
        curl: `curl -X GET "https://mempool.space/api/tx/:txid/raw"`,
      },
      responseSample: ``,
    },
    transactionStatus: {
      codeSample: {
        esModule: `const { %{1}: { transactions } } = mempoolJS();
  const txid =
  '15e10745f15593a899cef391191bdd3d7c12412cc4696b7bcb669d0feadc8521';

  const txStatus = await transactions.getTxStatus({ txid });
  console.log(txStatus);
`,
        commonJS: `const { %{1}: { transactions } } = mempoolJS();
        const txid =
        '15e10745f15593a899cef391191bdd3d7c12412cc4696b7bcb669d0feadc8521';

        const txStatus = await transactions.getTxStatus({ txid });
        console.log(txStatus);`,
        curl: `curl -X GET "https://mempool.space/api/tx/:txid/status"`,
      },
      responseSample: `{
  confirmed: true,
  block_height: 363348,
  block_hash: "0000000000000000139385d7aa78ffb45469e0c715b8d6ea6cb2ffa98acc7171",
  block_time: 1435754650
}`,
    },
    postTransaction: {
      codeSample: {
        esModule: `const { %{1}: { transactions } } = mempoolJS();
  const txid =
  '15e10745f15593a899cef391191bdd3d7c12412cc4696b7bcb669d0feadc8521';

  const postTx = await transactions.postTx({ txid });
  console.log(postTx);
`,
        commonJS: `const { %{1}: { transactions } } = mempoolJS();
        const txid =
        '15e10745f15593a899cef391191bdd3d7c12412cc4696b7bcb669d0feadc8521';

        const postTx = await transactions.postTx({ txid });
        console.log(postTx);`,
        curl: `curl -X POST "https://mempool.space/api/tx"`,
      },
      responseSample: ``,
    },
    address: {
      codeSample: {
        esModule: `const { %{1}: { addresses } } = mempoolJS();
  const address = '1wizSAYSbuyXbt9d8JV8ytm5acqq2TorC';

  const myAddress = await addresses.getAddress({ address });
  console.log(myAddress);
`,
        commonJS: `const { %{1}: { addresses } } = mempoolJS();
        const address = '1wizSAYSbuyXbt9d8JV8ytm5acqq2TorC';

        const myAddress = await addresses.getAddress({ address });
        console.log(myAddress);`,
        curl: `curl -X GET "https://mempool.space/api/address/:address"`,
      },
      responseSample: `{
  address: "1wizSAYSbuyXbt9d8JV8ytm5acqq2TorC",
  chain_stats: {
    funded_txo_count: 765,
    funded_txo_sum: 87749875807,
    spent_txo_count: 765,
    spent_txo_sum: 87749875807,
    tx_count: 875
  },
  mempool_stats: {
    funded_txo_count: 0,
    funded_txo_sum: 0,
    spent_txo_count: 0,
    spent_txo_sum: 0,
    tx_count: 0
  }
}`,
    },
    addressTransactions: {
      codeSample: {
        esModule: `const { %{1}: { addresses } } = mempoolJS();
  const address = '1wizSAYSbuyXbt9d8JV8ytm5acqq2TorC';

  const addressTxs = await addresses.getAddressTxs({ address });
  console.log(addressTxs);
`,
        commonJS: `const { %{1}: { addresses } } = mempoolJS();
        const address = '1wizSAYSbuyXbt9d8JV8ytm5acqq2TorC';

        const addressTxs = await addresses.getAddressTxs({ address });
        console.log(addressTxs);`,
        curl: `curl -X GET "https://mempool.space/api/address/:address/txs"`,
      },
      responseSample: `[
  {
    txid: "f39fbfd2482ac8a7174fe27caddd66aec05eec0d0e988ddf0de2136a416394c4",
    version: 2,
    locktime: 0,
    vin: [ [Object] ],
    vout: [ [Object], [Object] ],
    size: 251,
    weight: 1004,
    fee: 8212,
    status: {
      confirmed: true,
      block_height: 684536,
      block_hash: "00000000000000000008df08f428ca4e8251ba9171d9060b056f1f94d4fefbc7",
      block_time: 1621687336
    }
  },
  ...
]`,
    },
    addressTransactionsChain: {
      codeSample: {
        esModule: `const { %{1}: { addresses } } = mempoolJS();
  const address = '1wizSAYSbuyXbt9d8JV8ytm5acqq2TorC';

  const addressTxsChain = await addresses.getAddressTxsChain({ address });
  console.log(addressTxsChain);
`,
        commonJS: `const { %{1}: { addresses } } = mempoolJS();
        const address = '1wizSAYSbuyXbt9d8JV8ytm5acqq2TorC';

        const addressTxsChain = await addresses.getAddressTxsChain({ address });
        console.log(addressTxsChain);`,
        curl: `curl -X GET "https://mempool.space/api/address/:address/txs/chain"`,
      },
      responseSample: `[
  {
    txid: "f39fbfd2482ac8a7174fe27caddd66aec05eec0d0e988ddf0de2136a416394c4",
    version: 2,
    locktime: 0,
    vin: [ [Object] ],
    vout: [ [Object], [Object] ],
    size: 251,
    weight: 1004,
    fee: 8212,
    status: {
      confirmed: true,
      block_height: 684536,
      block_hash: "00000000000000000008df08f428ca4e8251ba9171d9060b056f1f94d4fefbc7",
      block_time: 1621687336
    }
  },
  ...
]`,
    },
    addressTransactionsMempool: {
      codeSample: {
        esModule: `const { %{1}: { addresses } } = mempoolJS();
  const address = '1EnX7FFCzdBjpYnErSTaxaWyTND4m86ebK';

  const addressTxsMempool = await addresses.getAddressTxsMempool({ address });
  console.log(addressTxsMempool);`,
        commonJS: `const { %{1}: { addresses } } = mempoolJS();
        const address = '1EnX7FFCzdBjpYnErSTaxaWyTND4m86ebK';

        const addressTxsMempool = await addresses.getAddressTxsMempool({ address });
        console.log(addressTxsMempool);`,
        curl: `curl -X GET "https://mempool.space/api/address/:address/txs/mempool"`,
      },
      responseSample: `[
  {
    txid: "16cd9bbc6b62313a22d16671fa559aec6bf581df8b5853d37775c84b0fddfa90",
    version: 2,
    locktime: 0,
    vin: [ [Object] ],
    vout: [ [Object], [Object] ],
    size: 226,
    weight: 904,
    fee: 6720,
    status: { confirmed: false }
  }
]`,
    },
    addressUTXO: {
      codeSample: {
        esModule: `const { %{1}: { addresses } } = mempoolJS();
  const address = '1PQwtwajfHWyAkedss5utwBvULqbGocRpu';

  const addressTxsUtxo = await addresses.getAddressTxsUtxo({ address });
  console.log(addressTxsUtxo);
`,
        commonJS: `const { %{1}: { addresses } } = mempoolJS();
        const address = '1PQwtwajfHWyAkedss5utwBvULqbGocRpu';

        const addressTxsUtxo = await addresses.getAddressTxsUtxo({ address });
        console.log(addressTxsUtxo);`,
        curl: `curl -X GET "https://mempool.space/api/address/:address/utxo"`,
      },
      responseSample: `[
  {
    txid: 'a3e4a5ce88c9a73983aaba34243472377e478c3ca77258018222b813e1256307',
    vout: 0,
    status: {
      confirmed: true,
      block_height: 685094,
      block_hash: '00000000000000000002af00dc86cfc99c8843c7a4906a1ec3b0a79712334d81',
      block_time: 1622081201
    },
    value: 723191295
  },
  ...
]`,
    },
    bisqAddress: {
      codeSample: {
        esModule: `const { bisq: { addresses } } = mempoolJS();
  const address = 'B1DgwRN92rdQ9xpEVCdXRfgeqGw9X4YtrZz';

  const myAddress = await addresses.getAddress({ address });
  console.log(myAddress);
`,
        commonJS: `const { bisq: { addresses } } = mempoolJS();
        const address = 'B1DgwRN92rdQ9xpEVCdXRfgeqGw9X4YtrZz';

        const myAddress = await addresses.getAddress({ address });
        console.log(myAddress);`,
        curl: `curl -X GET "https://mempool.space/api/address/:address"`,
      },
      responseSample: `[]
  {
    "txVersion": "1",
    "id": "d6f0a6fd191ac907ff88fc51af91cae8d50e596a846952ffa0ad0cea84eedc9a",
    "blockHeight": 679129,
    "blockHash": "00000000000000000001328850b0482312325f7f4abd5457e45d37cad664675d",
    "time": 1618369311000,
    "inputs": [ ... ],
    "outputs": [ ... ],
    "txType": "PAY_TRADE_FEE",
    "txTypeDisplayString": "Pay trade fee",
    "burntFee": 6,
    "invalidatedBsq": 0,
    "unlockBlockHeight": 0
  },
  ...
]`,
    },
    bisqBlock: {
      codeSample: {
        esModule: `const { bisq: { blocks } } = mempoolJS();
  const hash = '000000000000000000079aa6bfa46eb8fc20474e8673d6e8a123b211236bf82d';

  const block = await blocks.getBlock({ hash });
  console.log(block);
`,
        commonJS: `const { bisq: { blocks } } = mempoolJS();
        const hash = '000000000000000000079aa6bfa46eb8fc20474e8673d6e8a123b211236bf82d';

        const block = await blocks.getBlock({ hash });
        console.log(block);`,
        curl: `curl -X GET "https://mempool.space/api/block/:hash"`,
      },
      responseSample: `{
  height: 571747,
  time: 1555340856000,
  hash: "000000000000000000079aa6bfa46eb8fc20474e8673d6e8a123b211236bf82d",
  previousBlockHash: "0000000000000000001b8c271a4477a28d4ea7d4d4d1add6d96f386e3f151709",
  txs: [
    {
      txVersion: "1",
      id: "4b5417ec5ab6112bedf539c3b4f5a806ed539542d8b717e1c4470aa3180edce5",
      blockHeight: 571747,
      blockHash: "000000000000000000079aa6bfa46eb8fc20474e8673d6e8a123b211236bf82d",
      time: 1555340856000,
      inputs: [],
      outputs: [Array],
      txType: "GENESIS",
      txTypeDisplayString: "Genesis",
      burntFee: 0,
      invalidatedBsq: 0,
      unlockBlockHeight: 0
    }
  ]
}`,
    },
    bisqBlockTipHeight: {
      codeSample: {
        esModule: `const { bisq: { blocks } } = mempoolJS();
  const hash = '000000000000000000079aa6bfa46eb8fc20474e8673d6e8a123b211236bf82d';

  const myBlocksHeight = await blocks.getBlocksTipHeight({
    index: 0,
    length: 1,
  });
  console.log(myBlocksHeight);
`,
        commonJS: `const { bisq: { blocks } } = mempoolJS();
        const hash = '000000000000000000079aa6bfa46eb8fc20474e8673d6e8a123b211236bf82d';

        const myBlocksHeight = await blocks.getBlocksTipHeight({
          index: 0,
          length: 1,
        });
        console.log(myBlocksHeight);`,
        curl: `curl -X GET "https://mempool.space/api/blocks/tip/height"`,
      },
      responseSample: `685657`,
    },
    bisqBlockIndex: {
      codeSample: {
        esModule: `const { bisq: { blocks } } = mempoolJS();

  const myBlocks = await blocks.getBlocks({ index: 0, length: 1 });
  console.log(myBlocks);
`,
        commonJS: `const { bisq: { blocks } } = mempoolJS();

        const myBlocks = await blocks.getBlocks({ index: 0, length: 1 });
        console.log(myBlocks);`,
        curl: `curl -X GET "https://mempool.space/api/blocks/:index/:length"`,
      },
      responseSample: `[
  {
    height: 685656,
    time: 1622468887000,
    hash: "00000000000000000004c7046979024bd8e8f07389ca53f4f1d7dcf84eefdb21",
    previousBlockHash: "0000000000000000000bf982d024e5afa38be8fc08c3a9b6a2bd89dbd18de832",
    txs: [
      [Object], [Object],
      [Object], [Object],
      [Object], [Object],
      [Object], [Object],
      [Object], [Object],
      [Object]
    ]
  }
]`,
    },
    bisqStats: {
      codeSample: {
        esModule: `const { bisq: { statistics } } = mempoolJS();
  const hash = '000000000000000000079aa6bfa46eb8fc20474e8673d6e8a123b211236bf82d';

  const stats = await statistics.getStats();
  console.log(stats);
`,
        commonJS: `const { bisq: { statistics } } = mempoolJS();
        const hash = '000000000000000000079aa6bfa46eb8fc20474e8673d6e8a123b211236bf82d';

        const stats = await statistics.getStats();
        console.log(stats);`,
        curl: `curl -X GET "https://mempool.space/api/stats"`,
      },
      responseSample: `{
  fastestFee: 88,
  halfHourFee: 49,
  hourFee: 29,
  minimumFee: 1
}`,
    },
    bisqTransaction: {
      codeSample: {
        esModule: `const { bisq: { transactions } } = mempoolJS();
  const txid = '4b5417ec5ab6112bedf539c3b4f5a806ed539542d8b717e1c4470aa3180edce5';

  const tx = await transactions.getTx({ txid });
  console.log(tx);
`,
        commonJS: `const { bisq: { transactions } } = mempoolJS();
        const txid = '4b5417ec5ab6112bedf539c3b4f5a806ed539542d8b717e1c4470aa3180edce5';

        const tx = await transactions.getTx({ txid });
        console.log(tx);`,
        curl: `curl -X GET "https://mempool.space/api/tx/:txid"`,
      },
      responseSample: `{
  "txVersion":"1",
  "id":"4b5417ec5ab6112bedf539c3b4f5a806ed539542d8b717e1c4470aa3180edce5",
  "blockHeight":571747,
  "blockHash":"000000000000000000079aa6bfa46eb8fc20474e8673d6e8a123b211236bf82d",
  "time":1555340856000,
  "inputs": [ [Object], [Object] ],
  "outputs": [ [Object], [Object] ],
  "txType":"GENESIS",
  "txTypeDisplayString":"Genesis",
  "burntFee":0,
  "invalidatedBsq":0,
  "unlockBlockHeight":0
}`,
    },
    bisqTransactions: {
      codeSample: {
        esModule: `const { bisq: { transactions } } = mempoolJS();

  const txs = await transactions.getTxs({ index: 0, length: 1 });
  console.log(txs);
`,
        commonJS: `const { bisq: { transactions } } = mempoolJS();

        const txs = await transactions.getTxs({ index: 0, length: 1 });
        console.log(txs);`,
        curl: `curl -X GET "https://mempool.space/api/txs/:index/:length"`,
      },
      responseSample: `[
  {
    txVersion: "1",
    id: "084e94afb67df0e6dff2e9ae6913d5ccb58f3b2dab0c4543a7c90c33b70c9bed",
    blockHeight: 685656,
    blockHash: "00000000000000000004c7046979024bd8e8f07389ca53f4f1d7dcf84eefdb21",
    time: 1622468887000,
    inputs: [ [Object], [Object] ],
    outputs: [ [Object], [Object], [Object] ],
    txType: "PAY_TRADE_FEE",
    txTypeDisplayString: "Pay trade fee",
    burntFee: 57,
    invalidatedBsq: 0,
    unlockBlockHeight: 0
  }
]`,
    },
    assets: {
      codeSample: {
        esModule: `const { liquid: { assets } } = mempoolJS();
  const asset_id =
    '6f0279e9ed041c3d710a9f57d0c02928416460c4b722ae3457a11eec381c526d';

  const txs = await assets.getAsset({ asset_id });
  console.log(txs);`,
        commonJS: `const { liquid: { assets } } = mempoolJS();
        const asset_id =
          '6f0279e9ed041c3d710a9f57d0c02928416460c4b722ae3457a11eec381c526d';

        const asset = await assets.getAsset({ asset_id });
        console.log(asset);`,
        curl: `curl -X GET "https://mempool.space/api/asset/:asset_id"`,
      },
      responseSample: `{
  asset_id: "6f0279e9ed041c3d710a9f57d0c02928416460c4b722ae3457a11eec381c526d",
  chain_stats: {
    tx_count: 3013,
    peg_in_count: 1832,
    peg_in_amount: 298054170045,
    peg_out_count: 982,
    peg_out_amount: 3905921326,
    burn_count: 199,
    burned_amount: 516003151
  },
  mempool_stats: {
    tx_count: 0,
    peg_in_count: 0,
    peg_in_amount: 0,
    peg_out_count: 0,
    peg_out_amount: 0,
    burn_count: 0,
    burned_amount: 0
  }
}`,
    },
    assetTransactions: {
      codeSample: {
        esModule: `const { liquid: { assets } } = mempoolJS();
  const asset_id =
        '6f0279e9ed041c3d710a9f57d0c02928416460c4b722ae3457a11eec381c526d';

  const assetTxs = await assets.getAssetTxs({ asset_id, is_mempool: false });
  console.log(asset);`,
        commonJS: `const { liquid: { assets } } = mempoolJS();
      const asset_id =
        '6f0279e9ed041c3d710a9f57d0c02928416460c4b722ae3457a11eec381c526d';

      const assetTxs = await assets.getAssetTxs({ asset_id, is_mempool: false });
      console.log(asset);`,
        curl: `curl -X GET "https://mempool.space/api/asset/:asset_id/txs[/mempool|/chain]"`,
      },
      responseSample: `[
  {
    txid: "74057c98274a5e529bd3fcf5b906b235937cea5aed7e43132856b402006068e5",
    version: 2,
    locktime: 0,
    vin: [ [Object] ],
    vout: [ [Object], [Object] ],
    size: 975,
    weight: 1461,
    fee: 42,
    status: {
      confirmed: true,
      block_height: 1337495,
      block_hash: "e73bfee19c8e1b59967cb035f835347a78818f8639ee7ccd157d3372cdcd236e",
      block_time: 1622328838
    }
  },
  ...
]`,
    },
    assetSupply: {
      codeSample: {
        esModule: `const { liquid: { assets } } = mempoolJS();

  const txs = await transactions.getTxs({ index: 0, length: 1 });
  console.log(txs);
`,
        commonJS: `const { liquid: { assets } } = mempoolJS();
      const asset_id =
        '6f0279e9ed041c3d710a9f57d0c02928416460c4b722ae3457a11eec381c526d';

      const assetSupply = await assets.getAssetSupply({ asset_id, decimal: false });
      console.log(assetSupply);`,
        curl: `curl -X GET "https://mempool.space/api/asset/:asset_id/supply[/decimal]"`,
      },
      responseSample: `293689745913`,
    },
    websocket: {
      codeSample: {
        esModule: `const { bitcoin: { websocket } } = mempoolJS();

  const ws = websocket.initServer({
    options: ["blocks", "stats", "mempool-blocks", "live-2h-chart"],
  });

  ws.on("message", function incoming(data) {
    const res = JSON.parse(data.toString());
    if (res.blocks) {
      console.log(res.blocks);
    }
    if (res.mempoolInfo) {
      console.log(res.mempoolInfo);
    }
    if (res.transactions) {
      console.log(res.transactions);
    }
    if (res.mempoolBlocks) {
      console.log(res.mempoolBlocks);
    }
  });`,
        commonJS: `const { bitcoin: { websocket } } = mempoolJS();

        const ws = websocket.initClient({
          options: ['blocks', 'stats', 'mempool-blocks', 'live-2h-chart'],
        });

        ws.addEventListener('message', function incoming({data}) {
          const res = JSON.parse(data.toString());
          if (res.blocks) {
            console.log(res.blocks);
          }
          if (res.mempoolInfo) {
            console.log(res.mempoolInfo);
          }
          if (res.transactions) {
            console.log(res.transactions);
          }
          if (res.mempoolBlocks) {
            console.log(res.mempoolBlocks);
          }
        });`,
        curl: ``,
      },
      responseSample: ``,
    }
  };

  constructor(
    private stateService: StateService,
    private websocketService: WebsocketService,
    private seoService: SeoService,
  ) { }

  ngOnInit(): void {
    this.seoService.setTitle($localize`:@@e351b40b3869a5c7d19c3d4918cb1ac7aaab95c4:API`);
    this.network$ = merge(of(''), this.stateService.networkChanged$);
    this.websocketService.want(['blocks']);

    if (document.location.port !== '') {
      this.hostname = this.hostname + ':' + document.location.port;
    }
  }

}
