<?xml version="1.0"?>
<psalm errorLevel="3" resolveFromConfigFile="true" autoloader="psalm-bootstrap.php" errorBaseline="psalm-baseline.xml">
    <projectFiles>
        <directory name="../" />
        <file name="template-stubs.php" />
        <ignoreFiles>
            <directory name="../vendor" />
            <directory name="../node_modules" />
            <directory name="../admin/build" />
            <directory name="../admin/node_modules" />
        </ignoreFiles>
    </projectFiles>
    
    <issueHandlers>
        <MissingFile errorLevel="suppress" />
        <InvalidGlobal errorLevel="suppress" />
        <UndefinedConstant errorLevel="suppress" />
        <UndefinedFunction errorLevel="suppress" />
        <UndefinedGlobalVariable errorLevel="suppress" />
        <TooManyArguments errorLevel="suppress" />
        <RedundantCast errorLevel="suppress" />
        <InvalidReturnType errorLevel="suppress" />
        <InvalidReturnStatement errorLevel="suppress" />
        <PossiblyUndefinedArrayOffset errorLevel="suppress" />
        <PossiblyNullArgument errorLevel="suppress" />
        <PossiblyFalseArgument errorLevel="suppress" />
        <PossiblyInvalidArgument errorLevel="info" />
        
        <!-- WordPress Entry Points -->
        <UnusedClass>
            <errorLevel type="suppress">
                <referencedClass name="FPZ\Auth\AuthInterceptor"/>
                <referencedClass name="FPZ\Warnings"/>
            </errorLevel>
        </UnusedClass>
        
        <PossiblyUnusedMethod>
            <errorLevel type="suppress">
                <!-- Public API / Hook Callbacks -->
                <directory name="../includes/api" />
                <directory name="../includes/class-presszone-forum-*.php" />
            </errorLevel>
        </PossiblyUnusedMethod>
        
        <UndefinedClass>
            <errorLevel type="suppress">
                <referencedClass name="Redis"/>
                <referencedClass name="Memcached"/>
            </errorLevel>
        </UndefinedClass>

        <!-- Plugin Issues -->
        <PluginIssue name="HookInvalidArgs" errorLevel="info"/>
    </issueHandlers>

    <plugins>
        <pluginClass class="PsalmWordPress\Plugin">
            <hooks>
                <file name=".dev-config/hooks.json" />
            </hooks>
        </pluginClass>
    </plugins>
</psalm>