import base64
import json

def get_tenant_id_from_jwt(token: str) -> str:
    claims = extract_claims_from_jwt(token)

    return claims.get('sub')

def get_addresses_from_jwt(token: str) -> (str, str):
    claims = extract_claims_from_jwt(token)

    return claims.get('server_url'), claims.get('grpc_broadcast_address')

def extract_claims_from_jwt(token: str):
    parts = token.split('.')
    if len(parts) != 3:
        raise ValueError('Invalid token format')

    claims_part = parts[1]
    claims_part += '=' * ((4 - len(claims_part) % 4) % 4)  # Padding for base64 decoding
    claims_data = base64.urlsafe_b64decode(claims_part)
    claims = json.loads(claims_data)

    return claims