[package]
name = "sure-client-rs"
version = "0.2.0"
edition = "2024"
authors = ["Josiah Bull <josiah.bull7@gmail.com>"]
description = "A non-official Rust client library for the Akahu API, providing access to financial data aggregation services in New Zealand"
license = "MIT OR Apache-2.0"
repository = "https://github.com/josiahbull/sure-client-rs"
homepage = "https://github.com/josiahbull/sure-client-rs"
documentation = "https://docs.rs/sure-client-rs"
readme = "README.md"
keywords = ["banking", "finance", "api"]
categories = ["api-bindings", "web-programming::http-client"]
rust-version = "1.85"

[features]
default = ["strict"]
strict = []

[dependencies]
bon = "3.8.2"
chrono = { version = "0.4", default-features = false, features = ["serde", "alloc", "std", "clock"] }
iso_currency = { version = "0.5", default-features = false, features = ["with-serde"] }
reqwest = { version = "0.13", default-features = false, features = ["json", "rustls"] }
rust_decimal = { version = "1", default-features = false, features = ["std", "serde", "serde-arbitrary-precision"] }
serde = { version = "1", default-features = false, features = ["derive"] }
serde_json = { version = "1", default-features = false, features = ["std"] }
thiserror = "2"
tokio = { version = "1", default-features = false, features = ["macros", "rt-multi-thread"] }
url = { version = "2", default-features = false, features = ["serde"] }
uuid = { version = "1.19.0", default-features = false, features = ["serde", "v4"] }

[dev-dependencies]
anyhow = { version = "1", default-features = false, features = ["std"] }
clap = { version = "4", default-features = false, features = ["derive", "env", "std", "help", "usage", "error-context"] }
dotenvy = "0.15"

[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]

[lints.clippy]
too_many_arguments = "allow"
type_complexity = "allow"
get_first = "allow"
default_constructed_unit_structs = "allow"
expect_used = "allow"
cloned_instead_of_copied = "warn"
default_numeric_fallback = "allow"
transmute_ptr_to_ptr = "deny"
unchecked_time_subtraction = "deny"
unsafe_derive_deserialize = "deny"
as_underscore = "deny"
arithmetic_side_effects = "deny"
cast_lossless = "deny"
checked_conversions = "deny"
ptr_as_ptr = "deny"
ptr_cast_constness = "deny"
invalid_upcast_comparisons = "deny"
wildcard_dependencies = "deny"
default_union_representation = "deny"
filetype_is_file = "deny"
indexing_slicing = "deny"
lossy_float_literal = "deny"
string_slice = "deny"
undocumented_unsafe_blocks = "deny"
debug_assert_with_mut_call = "deny"
large_stack_frames = "warn"
unwrap_used = "warn"
needless_raw_string_hashes = "warn"
fallible_impl_from = "deny"
unicode_not_nfc = "warn"
unnecessary_box_returns = "warn"
unused_async = "warn"
zero_sized_map_values = "warn"
mut_mut = "warn"
redundant_feature_names = "warn"
dbg_macro = "warn" # Could be changed to just deny in ci?
else_if_without_else = "warn"
empty_drop = "warn"
exit = "warn"
float_cmp_const = "warn"
fn_to_numeric_cast_any = "warn"
format_push_string = "warn"
large_include_file = "warn"
let_underscore_must_use = "warn"
rc_mutex = "warn"
rest_pat_in_fully_bound_structs = "warn"
same_name_method = "warn"
unnecessary_self_imports = "warn"
branches_sharing_code = "warn"
clear_with_drain = "warn"
collection_is_never_read = "warn"
empty_line_after_doc_comments = "warn"
empty_line_after_outer_attr = "warn"
needless_collect = "warn"
needless_pass_by_ref_mut = "warn"
or_fun_call = "warn"
path_buf_push_overwrite = "warn"
read_zero_byte_vec = "warn"
readonly_write_lock = "warn"
redundant_clone = "warn"
redundant_pub_crate = "warn"
significant_drop_in_scrutinee = "deny"
significant_drop_tightening = "warn"
trait_duplication_in_bounds = "warn"
unused_peekable = "warn"
unused_rounding = "warn"
negative_feature_names = "warn"
macro_use_imports = "warn"
inconsistent_struct_constructor = "warn"
implicit_clone = "warn"
fn_params_excessive_bools = "warn"
enum_glob_use = "warn"
iter_not_returning_iterator = "warn"
manual_string_new = "warn"
mismatching_type_param_order = "warn"
should_panic_without_expect = "warn"
unnested_or_patterns = "warn"
semicolon_if_nothing_returned = "warn"
unreadable_literal = "warn"
used_underscore_binding = "warn"
verbose_bit_mask = "warn"
from_iter_instead_of_collect = "warn"
deref_by_slicing = "warn"
empty_structs_with_brackets = "warn"
error_impl_error = "warn"
if_then_some_else_none = "warn"
impl_trait_in_params = "warn"
missing_assert_message = "warn"
needless_raw_strings = "warn"
pub_without_shorthand = "warn"
self_named_module_files = "warn"
semicolon_inside_block = "warn"
unseparated_literal_suffix = "warn"
string_add = "warn"
tests_outside_test_module = "warn"
try_err = "warn"
unneeded_field_pattern = "allow"
verbose_file_reads = "warn"
wildcard_enum_match_arm = "deny"
derive_partial_eq_without_eq = "warn"
iter_on_empty_collections = "warn"
iter_on_single_items = "warn"
iter_with_drain = "warn"
missing_const_for_fn = "warn"
nonstandard_macro_braces = "warn"
suboptimal_flops = "warn"
tuple_array_conversions = "warn"
type_repetition_in_bounds = "warn"
unnecessary_struct_initialization = "warn"
use_self = "warn"
useless_let_if_seq = "warn"
string_add_assign = "warn"
trivially_copy_pass_by_ref = "warn"
unused_self = "warn"
assertions_on_result_states = "warn"
clone_on_ref_ptr = "warn"
create_dir = "warn"
mixed_read_write_in_expression = "warn"
string_lit_chars_any = "warn"
allow_attributes_without_reason = "deny"
