{
  "name": "backend",
  "private": true,
  "scripts": {
    "types:generate": "ts-node scripts/generate-model-types.ts",
    "types:generate:force": "ts-node scripts/generate-model-types.ts --force",
    "predev": "npm run types:generate",
    "dev": "nodemon",
    "clean": "node -e \"const fs=require('fs');const p=require('path');const d=p.join(__dirname,'dist');if(fs.existsSync(d)){fs.rmSync(d,{recursive:true,force:true});console.log('Cleaned dist folder')}\"",
    "prebuild": "npm run types:generate",
    "build": "tsc -p tsconfig.json --noEmit false",
    "minify": "node scripts/minify.mjs",
    "bundle": "npm run clean && npm run build && npm run minify",
    "start": "pm2 start dist/index.js --env production",
    "seed": "sequelize-cli db:seed:all --config ./config.js",
    "test": "jest",
    "test:watch": "jest --watch",
    "test:coverage": "jest --coverage",
    "test:integration": "jest --testPathPatterns=integration",
    "test:unit": "jest --testPathPatterns=unit",
    "test:binary": "jest --testPathPatterns=binary",
    "test:exchange": "jest --testPathPatterns=exchange",
    "lint": "eslint src --ext .ts",
    "lint:fix": "eslint src --ext .ts --fix"
  },
  "dependencies": {
    "@google/generative-ai": "^0.24.1",
    "@paypal/paypal-server-sdk": "^2.2.0",
    "@sendgrid/mail": "^8.1.6",
    "@solana/spl-token": "^0.4.14",
    "@solana/web3.js": "^1.98.4",
    "@types/ejs": "^3.1.5",
    "@types/validator": "^13.15.10",
    "adm-zip": "^0.5.16",
    "ajv": "^8.18.0",
    "ajv-formats": "^3.0.1",
    "archiver": "^7.0.1",
    "argon2": "^0.44.0",
    "bcrypt": "^6.0.0",
    "bignumber.js": "^9.3.1",
    "bip39": "^3.1.0",
    "bitcoinjs-lib": "^7.0.1",
    "bn.js": "^5.2.3",
    "bull": "^4.16.5",
    "bullmq": "^5.71.0",
    "cassandra-driver": "^4.8.0",
    "ccxt": "^4.5.44",
    "cheerio": "^1.2.0",
    "chokidar": "^5.0.0",
    "cli-spinners": "^2.9.2",
    "csv-parse": "^6.2.0",
    "csv-stringify": "^6.7.0",
    "date-fns": "^4.1.0",
    "dotenv": "^16.6.1",
    "ecpair": "^3.0.1",
    "ed25519-hd-key": "^1.3.0",
    "ejs": "^3.1.10",
    "firebase-admin": "^13.7.0",
    "fs-extra": "^11.3.4",
    "generate-password": "^1.7.1",
    "google-auth-library": "^10.6.2",
    "heic-convert": "^2.1.0",
    "https-proxy-agent": "^7.0.6",
    "ioredis": "^5.10.0",
    "ip": "^2.0.1",
    "isomorphic-dompurify": "^2.36.0",
    "lodash": "^4.17.23",
    "log-update": "^5.0.1",
    "mime": "^4.1.0",
    "mime-types": "^3.0.2",
    "module-alias": "^2.3.4",
    "mysql2": "^3.20.0",
    "mysqldump": "^3.2.0",
    "nodemailer": "^6.10.1",
    "openai": "^6.32.0",
    "otplib": "^12.0.1",
    "p-queue": "^8.1.1",
    "qrcode": "^1.5.4",
    "redlock": "5.0.0-beta.2",
    "regexparam": "^3.0.0",
    "sequelize": "^6.37.8",
    "sequelize-cli": "^6.6.5",
    "sequelize-typescript": "^2.1.6",
    "sharp": "^0.34.5",
    "socks-proxy-agent": "^8.0.5",
    "stripe": "^20.4.1",
    "tiny-secp256k1": "^2.2.4",
    "tonweb": "^0.0.66",
    "tonweb-mnemonic": "^1.0.1",
    "tronweb": "^6.2.2",
    "twilio": "^5.13.0",
    "uWebSockets.js": "github:uNetworking/uWebSockets.js#v20.51.0",
    "uuid": "^8.3.2",
    "validator": "^13.15.26",
    "web-push": "^3.6.7",
    "winston": "^3.19.0",
    "winston-daily-rotate-file": "^5.0.0",
    "ws": "^8.19.0",
    "xlsx": "^0.18.5",
    "xml2js": "^0.6.2",
    "xmlbuilder": "^15.1.1",
    "zeromq": "^6.5.0"
  },
  "devDependencies": {
    "@types/bcrypt": "^6.0.0",
    "@types/jest": "^30.0.0",
    "@types/node": "^24.12.0",
    "@types/supertest": "^6.0.3",
    "@typescript-eslint/eslint-plugin": "8.49.0",
    "@typescript-eslint/parser": "8.49.0",
    "eslint": "^9.39.4",
    "javascript-obfuscator": "^5.3.0",
    "jest": "^30.3.0",
    "nodemon": "^3.1.14",
    "supertest": "^7.2.2",
    "terser": "^5.46.1",
    "ts-jest": "^29.4.6",
    "ts-morph": "^27.0.2",
    "ts-node": "^10.9.2",
    "tsconfig-paths": "^4.2.0",
    "tsx": "^4.21.0",
    "typescript": "^5.9.3"
  }
}