from typing import Optional

from .node import MappingNode, Node

class Variables:
    def __init__(self, node: MappingNode) -> None: ...
    def check(self) -> None: ...
    def expand(self, node: Node) -> None: ...
    def get(self, name: str) -> Optional[str]: ...
