<?php

declare (strict_types=1);
namespace GuardDog\Vendor\CBOR;

use Stringable;
interface CBORObject extends Stringable
{
    public const MAJOR_TYPE_UNSIGNED_INTEGER = 0b0;
    public const MAJOR_TYPE_NEGATIVE_INTEGER = 0b1;
    public const MAJOR_TYPE_BYTE_STRING = 0b10;
    public const MAJOR_TYPE_TEXT_STRING = 0b11;
    public const MAJOR_TYPE_LIST = 0b100;
    public const MAJOR_TYPE_MAP = 0b101;
    public const MAJOR_TYPE_TAG = 0b110;
    public const MAJOR_TYPE_OTHER_TYPE = 0b111;
    public const LENGTH_1_BYTE = 0b11000;
    public const LENGTH_2_BYTES = 0b11001;
    public const LENGTH_4_BYTES = 0b11010;
    public const LENGTH_8_BYTES = 0b11011;
    public const LENGTH_INDEFINITE = 0b11111;
    public const FUTURE_USE_1 = 0b11100;
    public const FUTURE_USE_2 = 0b11101;
    public const FUTURE_USE_3 = 0b11110;
    public const OBJECT_FALSE = 20;
    public const OBJECT_TRUE = 21;
    public const OBJECT_NULL = 22;
    public const OBJECT_UNDEFINED = 23;
    public const OBJECT_SIMPLE_VALUE = 24;
    public const OBJECT_HALF_PRECISION_FLOAT = 25;
    public const OBJECT_SINGLE_PRECISION_FLOAT = 26;
    public const OBJECT_DOUBLE_PRECISION_FLOAT = 27;
    public const OBJECT_BREAK = 0b11111;
    public const TAG_STANDARD_DATETIME = 0;
    public const TAG_EPOCH_DATETIME = 1;
    public const TAG_UNSIGNED_BIG_NUM = 2;
    public const TAG_NEGATIVE_BIG_NUM = 3;
    public const TAG_DECIMAL_FRACTION = 4;
    public const TAG_BIG_FLOAT = 5;
    public const TAG_ENCODED_BASE64_URL = 21;
    public const TAG_ENCODED_BASE64 = 22;
    public const TAG_ENCODED_BASE16 = 23;
    public const TAG_ENCODED_CBOR = 24;
    public const TAG_URI = 32;
    public const TAG_BASE64_URL = 33;
    public const TAG_BASE64 = 34;
    public const TAG_MIME = 36;
    public const TAG_CBOR = 55799;
    public function getMajorType(): int;
    public function getAdditionalInformation(): int;
}
