<?php declare(strict_types=1);

namespace Modules\TermeDePaiement\Service\Strategy;

interface TPStrategyInterface
{

    
    /**
     * Summary of getLignesTpPos
     * @param string $id
     * @return ?string
     */
    public function getDevise(string $id): ?string;
    
    /**
     * Summary of getLignesTpPos
     * @param string $id
     * @param array<mixed> $allTpPos
     * @return ?array<mixed>
     */
    public function getDetailLigneTpPos(string $id, array $allTpPos): ?array;
        
    /**
     * Summary of getLignesSeuil
     * @param string $id
     * @param array<mixed> $allLignesOnEvent
     * @return ?array<mixed>
     */
    public function getDetailLigneSeuil(string $id, array $allLignesOnEvent): ?array;

    /**
     * Summary of getAllDocArticles
     * @param string $id
     * @return ?array<mixed>
     */
    public function getAllDocArticles(string $id): ?array;

    /**
     * Summary of getMontantTotal
     * @param string $id
     * @return string
     */
    public function getMontantTotal(string $id): string;

    /**
     * Summary of getCodeFou
     * @param string $id
     * @return string
     */
    public function getCodeFou(string $id): string;

    /**
     * Summary of verifPourcTP
     * @param string $id
     * @param array<mixed> $tps
     * @param array<mixed> $evts
     * @param ?string $critere
     * @return array<mixed>
     */
    public function verifPourcTP(string $id, array &$tps, array $evts, ?string $critere = null): array;
}
