cyb/scripts/generate-lithium-clients.mjs

import path from 'node:path';
import { fileURLToPath } from 'node:url';
import { execSync } from 'node:child_process';
import { TSBuilder } from '@cosmwasm/ts-codegen';

const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);

const cybTsRoot = path.resolve(__dirname, '..');
const cwCyberRoot = path.resolve(cybTsRoot, '../cw-cyber');

execSync('./scripts/generate-lithium-schema.sh', {
  cwd: cwCyberRoot,
  stdio: 'inherit',
});

const contracts = [
  { name: 'LitiumCore', dir: path.join(cwCyberRoot, 'contracts/litium-core/schema') },
  { name: 'LitiumStake', dir: path.join(cwCyberRoot, 'contracts/litium-stake/schema') },
  { name: 'LitiumWrap', dir: path.join(cwCyberRoot, 'contracts/litium-wrap/schema') },
  { name: 'LitiumRefer', dir: path.join(cwCyberRoot, 'contracts/litium-refer/schema') },
  { name: 'LitiumMine', dir: path.join(cwCyberRoot, 'contracts/litium-mine/schema') },
];

const outPath = path.join(cybTsRoot, 'src/generated/lithium');
const builder = new TSBuilder({
  contracts,
  outPath,
});

await builder.build();
console.log(`[ts-codegen] generated lithium clients at ${outPath}`);

Neighbours