from datetime import datetime, timedelta
from typing import List, Dict

def filter_accounts_next_30_days(accounts: List[Dict[str, int]]) -> List[Dict[str, int]]:
    """Filter accounts whose expiry date falls within the next 30 days.

    Args:
        accounts (List[Dict[str, int]]): A list of account dictionaries, each containing 
            an 'expiaryDate' key with an epoch timestamp as its value.

    Returns:
        List[Dict[str, int]]: A list of accounts expiring within the next 30 days.
    """
    now = datetime.now()
    thirty_days_later = now + timedelta(days=30)

    # Convert current time and 30 days later to epoch timestamps
    now_timestamp = int(now.timestamp())
    thirty_days_later_timestamp = int(thirty_days_later.timestamp())

    # Filter accounts with expiryDate within the next 30 days
    return [
        account for account in accounts
        if now_timestamp <= account['expiaryDate'] < thirty_days_later_timestamp
    ]

def filter_accounts_expired(accounts: List[Dict[str, int]]) -> List[Dict[str, int]]:
    """Filter accounts whose expiry date has passed.

    Args:
        accounts (List[Dict[str, int]]): A list of account dictionaries, each containing 
            an 'expiaryDate' key with an epoch timestamp as its value.

    Returns:
        List[Dict[str, int]]: A list of accounts that have expired.
    """
    # Get the current epoch timestamp
    current_timestamp = int(datetime.now().timestamp())

    # Filter accounts where the current date is greater than the expiryDate
    expired_accounts = [
        account for account in accounts
        if account['expiaryDate'] < current_timestamp
    ]

    return expired_accounts