```ts
export function assignBerths(berths: Array<{ id: string; size: number }>, quota: Record<string, number>, requests: Array<Record<string, unknown>>): string[] {
    const results: string[] = [];
    const occupiedBerths: Map<string, { boat: string, owner: string }> = new Map();
    const ownerCounts: Record<string, number> = {};

    for (const request of requests) {
        if (!request || typeof request !== 'object' || Array.isArray(request)) {
            throw new Error('Invalid request format');
        }

        const op = request.op;
        const boat = request.boat as string | undefined;
        const owner = request.owner as string | undefined;
        const size = request.size as number | undefined;

        if (op === 'dock') {
            if (!boat || !owner || typeof size !== 'number' || isNaN(size) || size <= 0) {
                throw new Error('Invalid dock request');
            }

            if (occupiedBerths.has(boat)) {
                results.push('rejected:already_docked');
                continue;
            }

            const ownerQuota = quota[owner] ?? Infinity;
            if (ownerCounts[owner] >= ownerQuota) {
                results.push('rejected:over_quota');
                continue;
            }

            let berthId: string | undefined;
            for (const berth of berths) {
                if (!occupiedBerths.has(berth.id) && berth.size >= size) {
                    berthId = berth.id;
                    break;
                }
            }

            if (!berthId) {
                results.push('rejected:no_berth');
            } else {
                occupiedBerths.set(boat, { boat, owner });
                ownerCounts[owner] = (ownerCounts[owner] || 0) + 1;
                results.push(berthId);
            }
        } else if (op === 'leave') {
            if (!boat) {
                throw new Error('Invalid leave request');
            }

            if (!occupiedBerths.has(boat)) {
                results.push('rejected:not_docked');
            } else {
                const { owner } = occupiedBerths.get(boat)!;
                occupiedBerths.delete(boat);
                ownerCounts[owner]--;
                results.push('left');
            }
        } else {
            throw new Error(`Unknown operation: ${op}`);
        }
    }

    return results;
}
```