<?php

/**
 * This class has been generated by dagger-php-sdk. DO NOT EDIT.
 */

declare(strict_types=1);

namespace Dagger;

/**
 * The result of running an SDK's codegen.
 */
class GeneratedCode extends Client\AbstractObject implements Client\IdAble
{
    public function code(): Directory
    {
        $innerQueryBuilder = new \Dagger\Client\QueryBuilder('code');
        return new \Dagger\Directory($this->client, $this->queryBuilderChain->chain($innerQueryBuilder));
    }

    /**
     * A unique identifier for this GeneratedCode.
     */
    public function id(): GeneratedCodeId
    {
        $leafQueryBuilder = new \Dagger\Client\QueryBuilder('id');
        return new \Dagger\GeneratedCodeId((string)$this->queryLeaf($leafQueryBuilder, 'id'));
    }

    public function vcsGeneratedPaths(): array
    {
        $leafQueryBuilder = new \Dagger\Client\QueryBuilder('vcsGeneratedPaths');
        return (array)$this->queryLeaf($leafQueryBuilder, 'vcsGeneratedPaths');
    }

    public function vcsIgnoredPaths(): array
    {
        $leafQueryBuilder = new \Dagger\Client\QueryBuilder('vcsIgnoredPaths');
        return (array)$this->queryLeaf($leafQueryBuilder, 'vcsIgnoredPaths');
    }

    /**
     * Set the list of paths to mark generated in version control.
     */
    public function withVCSGeneratedPaths(array $paths): GeneratedCode
    {
        $innerQueryBuilder = new \Dagger\Client\QueryBuilder('withVCSGeneratedPaths');
        $innerQueryBuilder->setArgument('paths', $paths);
        return new \Dagger\GeneratedCode($this->client, $this->queryBuilderChain->chain($innerQueryBuilder));
    }

    /**
     * Set the list of paths to ignore in version control.
     */
    public function withVCSIgnoredPaths(array $paths): GeneratedCode
    {
        $innerQueryBuilder = new \Dagger\Client\QueryBuilder('withVCSIgnoredPaths');
        $innerQueryBuilder->setArgument('paths', $paths);
        return new \Dagger\GeneratedCode($this->client, $this->queryBuilderChain->chain($innerQueryBuilder));
    }
}
