/*
 * Copyright (c) 2025, Shannon Booth <shannon@serenityos.org>
 *
 * SPDX-License-Identifier: BSD-2-Clause
 */

#pragma once

#include <AK/Optional.h>
#include <AK/String.h>
#include <LibURL/Pattern/PatternError.h>

namespace URL::Pattern {

// https://urlpattern.spec.whatwg.org/#dictdef-urlpatterninit
struct Init {
    Optional<String> protocol;
    Optional<String> username;
    Optional<String> password;
    Optional<String> hostname;
    Optional<String> port;
    Optional<String> pathname;
    Optional<String> search;
    Optional<String> hash;
    Optional<String> base_url;
};

enum class PatternProcessType {
    Pattern,
    URL,
};

PatternErrorOr<Init> process_a_url_pattern_init(Init const&, PatternProcessType type,
    Optional<String> const& protocol, Optional<String> const& username, Optional<String> const& password,
    Optional<String> const& hostname, Optional<String> const& port, Optional<String> const& pathname,
    Optional<String> const& search, Optional<String> const& hash);

}