type BoardName = 'uno' | 'nano' | 'mega' | 'leonardo'; type Protocol = 'stk500v1' | 'stk500v2' | 'avr109'; interface BoardConfig { baudRate: number; productId: string[]; protocol: Protocol; } const boards: Record = { uno: { baudRate: 115200, productId: ['0x0043', '0x7523', '0x0001', '0xea60', '0x6015'], protocol: 'stk500v1' }, nano: { baudRate: 115200, productId: ['0x6001', '0x7523'], protocol: 'stk500v1' }, mega: { baudRate: 115200, productId: ['0x0042', '0x6001', '0x0010', '0x7523'], protocol: 'stk500v2' }, leonardo: { baudRate: 57600, productId: ['0x0036', '0x8036', '0x800c'], protocol: 'avr109' } } function getBoardConfigByName(name: BoardName) { return boards[name] } export { BoardName, BoardConfig, Protocol, getBoardConfigByName };