// This file is automatically generated.
// Please do not change this file!

type Message0<T extends MessagesKey0> = {
  id: T
  value: T
  attributes: Record<string, T>
}

type Message1<T extends MessagesKey1> = {
  id: T
  value: T
  attributes: Record<string, T>
}

import { FluentBundle, FluentVariable } from '@fluent/bundle'

declare global {
  interface FluentBundleTyped extends FluentBundle {
    getMessage<T extends MessagesKey0>(id: T): Message0<T>
formatPattern<T extends MessagesKey0>(...args: PatternArguments0<T>): string
    getMessage<T extends MessagesKey1>(id: T): Message1<T>
formatPattern<T extends MessagesKey1>(...args: PatternArguments1<T>): string
  }
}

type MessagesKey0 = 'hello' |
'how-are-you' |
'bye' |
'lah1b' |
'lah2b' |
'lah3b' |
'lah4b' |
'lah5b' |
'lah6b' |
'lah7b' |
'lah8b' |
'lah9b' |
'blah10' |
'blah11' |
'blah12' |
'blah13' |
'blah14' |
'blah15' |
'blah16' |
'blah17' |
'blah18' |
'blah19' |
'blah20' |
'blah21' |
'blah22'

type MessagesKey1 = 'blah23' |
'blah24' |
'blah25' |
'blah26' |
'blah27' |
'blah28' |
'blah29'
type PatternArguments0<T extends MessagesKey0> = (
  T extends 'hello'
  ? [T, { 'firstName': FluentVariable,'lastName': FluentVariable }]:
T extends 'how-are-you'
  ? [T]:
T extends 'bye'
  ? [T]:
T extends 'lah1b'
  ? [T]:
T extends 'lah2b'
  ? [T]:
T extends 'lah3b'
  ? [T]:
T extends 'lah4b'
  ? [T]:
T extends 'lah5b'
  ? [T]:
T extends 'lah6b'
  ? [T]:
T extends 'lah7b'
  ? [T]:
T extends 'lah8b'
  ? [T]:
T extends 'lah9b'
  ? [T]:
T extends 'blah10'
  ? [T]:
T extends 'blah11'
  ? [T]:
T extends 'blah12'
  ? [T]:
T extends 'blah13'
  ? [T]:
T extends 'blah14'
  ? [T, { 'kek': FluentVariable }]:
T extends 'blah15'
  ? [T]:
T extends 'blah16'
  ? [T]:
T extends 'blah17'
  ? [T]:
T extends 'blah18'
  ? [T]:
T extends 'blah19'
  ? [T]:
T extends 'blah20'
  ? [T]:
T extends 'blah21'
  ? [T]:
T extends 'blah22'
  ? [T]
  : never
)

type PatternArguments1<T extends MessagesKey1> = (
  T extends 'blah23'
  ? [T]:
T extends 'blah24'
  ? [T]:
T extends 'blah25'
  ? [T]:
T extends 'blah26'
  ? [T]:
T extends 'blah27'
  ? [T]:
T extends 'blah28'
  ? [T]:
T extends 'blah29'
  ? [T]
  : never
)