// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========

import { Accessor } from './base.ts'
import type { CITransport } from '../core/github_ci/_client.ts'
import type { Resource } from '../resource/base.ts'

export class GitHubCIAccessor extends Accessor {
  readonly transport: CITransport
  readonly owner: string
  readonly repo: string
  readonly days: number
  readonly maxRuns: number

  constructor(opts: {
    transport: CITransport
    owner: string
    repo: string
    days?: number
    maxRuns?: number
  }) {
    super()
    this.transport = opts.transport
    this.owner = opts.owner
    this.repo = opts.repo
    this.days = opts.days ?? 30
    this.maxRuns = opts.maxRuns ?? 300
  }
}

export interface GitHubCIResourceLike extends Resource {
  readonly accessor: GitHubCIAccessor
}
