with ada.text_io;
package pairpkg is

    Unknown_Pair_Error, Pair_Distance_Too_Large: Exception;

    type Pair is private;

    origin: Constant Pair;   -- Deferred constant

    function NewPair(x, y: Integer) return Pair;

    function toString(p: Pair) return String;

    function distanceToOrigin(p: Pair) return Natural;
    function distanceBetween(p1, p2: Pair) return Natural;
    
    function reflect(p: in Pair) return Pair;
    procedure reflectMe(p: in out Pair);

    procedure put(p: in Pair);
    procedure put(f: ada.text_io.file_type; p: in Pair);

private
    type pair is record
        x: Integer;
        y: Integer;
    end record;

    origin: Constant Pair := (0, 0);
end pairpkg;