/** Host-extensible tenant visibility inputs (indexable shape). */
export interface IndexableTenant {
  indexingEnabled: boolean
}

/** Host-extensible node/page visibility inputs. */
export interface IndexableNode {
  published: boolean
  noindex?: boolean
}

/** Optional thread-level gate for forum hosts. */
export interface IndexableThread {
  published: boolean
  noindex?: boolean
}

export function isIndexable(
  tenant: IndexableTenant,
  node: IndexableNode,
  thread?: IndexableThread,
): boolean {
  if (!tenant.indexingEnabled) return false
  if (!node.published || node.noindex) return false
  if (thread && (!thread.published || thread.noindex)) return false
  return true
}

export function robotsValue(indexable: boolean): 'index,follow' | 'noindex,nofollow' {
  return indexable ? 'index,follow' : 'noindex,nofollow'
}
