Files
Sankofa/blockchain/scripts/generate-types.ts

45 lines
1.3 KiB
TypeScript
Raw Permalink Normal View History

/**
* Generate TypeScript types from compiled smart contracts
* Run: pnpm exec ts-node scripts/generate-types.ts
*/
import { execSync } from 'child_process'
import * as fs from 'fs'
import * as path from 'path'
async function generateTypes() {
console.log('Generating TypeScript types from smart contracts...')
try {
// Run typechain to generate types
execSync('npx typechain --target ethers-v6 --out-dir ../api/src/types/contracts artifacts/contracts/**/*.json', {
cwd: path.join(__dirname, '..'),
stdio: 'inherit',
})
console.log('✓ TypeScript types generated successfully')
console.log('Types are available in: api/src/types/contracts/')
// Create index file for easy imports
const typesDir = path.join(__dirname, '../../api/src/types/contracts')
if (fs.existsSync(typesDir)) {
const indexContent = `// Auto-generated contract type exports
// This file is generated by scripts/generate-types.ts
export * from './ResourceProvisioning'
export * from './IdentityManagement'
export * from './Billing'
export * from './Compliance'
`
fs.writeFileSync(path.join(typesDir, 'index.ts'), indexContent)
console.log('✓ Created index.ts for contract types')
}
} catch (error) {
console.error('Failed to generate types:', error)
process.exit(1)
}
}
generateTypes()