<?php

declare(strict_types=1);

namespace Plugin\tnt_mcp\src\Mcp\Db;

/**
 * A result set in the shape `run_sql_read` returns it: names once, values as positional arrays.
 * Repeating 200 German column names per row costs roughly four times the tokens of the data.
 */
final class ShapedResult
{
    /**
     * @param list<array{name: string, type: string, redacted?: bool}> $columns
     * @param list<list<mixed>>                                        $rows
     * @param list<string>                                             $notes
     */
    public function __construct(
        public readonly array $columns,
        public readonly array $rows,
        public readonly int $rowCount,
        public readonly bool $truncated = false,
        public readonly ?string $truncatedReason = null,
        public readonly array $notes = [],
    ) {
    }
}
