diff --git a/taicpp/CHANGELOG.md b/taicpp/CHANGELOG.md index 0fac414..b3ea5fc 100644 --- a/taicpp/CHANGELOG.md +++ b/taicpp/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## [Unreleased] - 2026-10-28 +- WhatsApp transpilation harness (M0): whatsmeow `v0.0.0-20261027104441-1eec1136a50b` (commit `1eec1136a50b...0457`) pinned in [docs/whatsapp.md](docs/whatsapp.md) section 17; `tools/wa-api-inventory.sh` extracts the mechanical scope (1500 entries: every exported symbol in non-test, non-generated Go source plus the 129 used protobuf messages), `tools/wa-mapping.tsv` maps each entry to its `detz::wa` counterpart or `UNMAPPED`, `tools/wa-coverage.sh` fails below 100% (baseline 137/1500, 9.1%), `tools/wa-stub-scan.sh` fails on stub patterns and new silent early-outs. Section 17 also opens the moloapp reuse table. + + ## [1.46.1] - 2026-10-27 - WhatsApp learns contact names from incoming messages (push names) diff --git a/taicpp/docs/whatsapp.md b/taicpp/docs/whatsapp.md index b312d9a..b9accee 100644 --- a/taicpp/docs/whatsapp.md +++ b/taicpp/docs/whatsapp.md @@ -709,3 +709,94 @@ WhatsApp open on the phone (no battery restriction). If no `` arrives within the 300 s, the phone is gating on its side; import the .vcf and retry the sync another day. Research: `research/whatsapp-automation/` (conclusion `key-share-never-arrives.md`). + +## 17. Transpilation pin, harness and reuse table (M0, 2026-10-28) + +The full whatsmeow transpilation (`full_transpilation_and_integration.md`, +milestones M0..M10) starts here. This section holds the pinned source, the +harness that gates every milestone, the baseline coverage, and the moloapp +reuse table. The pin never moves. + +### 17.1 Pinned source + +| Field | Value | +|---|---| +| Module | `go.mau.fi/whatsmeow` | +| Version | `v0.0.0-20261027104441-1eec1136a50b` | +| Commit | `1eec1136a50b2ef148b05f1819e77a9d989e0457` | +| Commit date | 2026-10-27T10:44:41Z | +| Location | `$(go env GOMODCACHE)/go.mau.fi/whatsmeow@v0.0.0-20261027104441-1eec1136a50b` | +| Provenance | `cache/download/go.mau.fi/whatsmeow/@v/.info`, `Origin.Hash` | + +`tools/wa-api-inventory.sh` refuses to run when the directory is missing or +the `.info` hash differs from the pinned commit, so a moved cache fails +loudly instead of silently rescoping the work. + +### 17.2 Harness + +| Tool | Job | +|---|---| +| `tools/wa-api-inventory.sh` | Extracts the mechanical scope into `build/wa-inventory.tsv` (`package, kind, key, file`) and the `proto.Marshal`/`proto.Unmarshal` call sites into `build/wa-marshal-sites.txt`. Re-verifies the pin on every run and aborts on a duplicate key (parser self-check). | +| `tools/wa-mapping.tsv` | Committed source of truth: every inventory key maps to its C++ counterpart (`detz::wa::...`, file) or to `UNMAPPED`. Mapping rule: a named C++ entity (function, method, type, const, field) performs the counterpart role; an inline fragment with no named entity stays `UNMAPPED` for a later milestone to name. | +| `tools/wa-coverage.sh [--slice FILE]` | Re-runs the inventory, then gates: the mapping key set must match the inventory exactly (a missing or stale key fails as "out of sync"), and every gated entry must be mapped. Exit 0 only at 100%. A slice file (`file:`, `pkg:`, `sym:`, `re:` lines) scopes the gate to one milestone's API. | +| `tools/wa-stub-scan.sh` | Fails on absolute stub patterns (`TODO`, `FIXME`, `XXX`, `HACK`, `unimplemented`, `not implemented`, `NOT_IMPLEMENTED`, `panic(`, `assert(false`, `std::abort`) anywhere in `src/whatsapp/`, and on any new `return std::nullopt` / `return false` / `return {}` (diff vs `HEAD`, plus untracked files) without a log line (`log(`, `log_(`, `TRACE`, `cerr`, `stderr`, `fprintf`, `perror`) within the 6 lines above it or on its own line. No allowlist. | + +Scope rules (mechanical, encoded in the inventory script): in scope is every +exported symbol (func, method, type, const, var) in non-test, non-generated Go +source. Out of scope: `*_test.go`; files whose header marks them generated +(`DO NOT EDIT`, `DO NOT MODIFY`, `generated by`: the 57 `*.pb.go` files, +`internals.go`, `binary/proto/legacy.go`); files with `//go:build ignore` +(`internals_generate.go`). A generated protobuf message counts as in scope +when `.` is referenced by qualified name in an in-scope file (69 +marshal call sites motivate the 129 used messages). Methods on unexported +receivers with exported names (`patchOutput.AddMAC`, `waLog.noopLogger.*`) +stay in scope: the name is exported, so it is listed and must map. + +Validation (2026-10-28): the extractor was diffed against `go doc` as an +independent method. `Client` methods match exactly (the two `go doc` extras +are the `NewClient` constructor, inventoried as `func`, and +`DangerousInternals`, defined only in the excluded generated/ignored files). +The coverage gate was shown to fail below 100% and pass on an all-mapped +slice; the stub scanner was shown to fail on an injected `TODO` and on a new +silent `return false` (tracked and untracked files) and to pass on a logged +one and on the clean tree. + +### 17.3 Baseline coverage (detz 1.46.1) + +`tools/wa-coverage.sh`: **137/1500 mapped (9.1%)**, exit 1 (expected: the +100% gate is the M10 exit, per-milestone slices gate M1..M9). + +| Kind | Mapped | Total | +|---|---|---| +| const | 13 | 330 | +| func | 14 | 60 | +| method | 49 | 523 | +| proto | 28 | 129 | +| type | 24 | 320 | +| var | 9 | 138 | + +Mapped packages (mapped/total): appstate 8/136, binary 18/46, cbcutil 2/5, +gcmutil 2/3, hkdfutil 1/1, keys 4/7, lthash 3/4, socket 17/34, store 26/143, +types 6/232, waAdv 3/3, waCompanionReg 2/10, waE2E 7/35, waServerSync 6/9, +waSyncAction 2/19, waWa6 8/8, whatsmeow 22/369. Everything else (groups, +newsletters, calls, presence, pair-code/passkey, history sync, inbox, read +receipts, retry-resend, event bus, sqlstore schema, error taxonomy, the +remaining crypto/store/util surface) is `UNMAPPED`, claimed by M1..M10 in the +milestone table. The 137 mapped entries were each verified against the header +or source named in `tools/wa-mapping.tsv`; subset notes on the value name the +gap the owning milestone closes. + +### 17.4 moloapp reuse table + +Prompt section 5: before writing any HTTP client, SSE/websocket, LLM +provider, config, CLI, tenancy or app-pattern code, grep moloapp +(`../../moloapp/src/`, 1039 headers) and record the decision here. Reuse is +by include plus link only; moloapp is never modified. A duplicated facility +fails review. + +| Date | Need | moloapp facility checked | Decision | +|---|---|---|---| +| 2026-10-28 | M0 harness scripts | none applicable (bash + python3 stdlib; no HTTP/SSE/LLM/config/CLI surface) | wrote local `tools/wa-*.sh` | +| 2026-10-28 | WebSocket client transport | `realtime/websocket/client/websocket_client.h` (exists, but needs a caller-provided transport: the caller does TLS and the HTTP handshake itself) | keep local `WaSocket` on libcurl: live-verified against the real server (connect + frames), libcurl already linked. Revisit if libcurl ws proves insufficient (e.g. M1 keepalive pings). | +| 2026-10-28 | media HTTPS upload/download | `clients/` HTTP client, pool, proxy (heavier connection-pool stack) | keep local `WaMedia` on `curl_easy` (`wa_media.cpp`): two calls (one POST, one GET), libcurl already linked | +| 2026-10-28 | vault storage for device/sessions/contacts | detz-owned `store::SqlDb` (already the vault; the schema is detz's) | keep local `WaStore` on `store::SqlDb` (`wa_store.h`); no moloapp store facility needed | diff --git a/taicpp/tools/wa-api-inventory.sh b/taicpp/tools/wa-api-inventory.sh new file mode 100755 index 0000000..8866666 --- /dev/null +++ b/taicpp/tools/wa-api-inventory.sh @@ -0,0 +1,219 @@ +#!/usr/bin/env bash +# wa-api-inventory.sh: extract the mechanical transpilation scope from the pinned +# whatsmeow source (M0 harness; see docs/whatsapp.md section 17 and +# full_transpilation_and_integration.md prompt section 1). +# +# Scope, mechanically: +# 1. Every exported symbol (functions, methods, types, constants, vars) in +# whatsmeow's non-test, non-generated Go source. Skipped: *_test.go files, +# files whose header marks them generated (DO NOT EDIT / DO NOT MODIFY / +# "generated by": the *.pb.go files, internals.go, binary/proto/legacy.go), +# and files with "//go:build ignore" (the generator tool). +# 2. Every generated protobuf message the library uses in non-test code: a +# message struct from a *.pb.go file counts when "." is +# referenced in an in-scope file. The proto.Marshal/proto.Unmarshal call +# sites that motivate this are listed separately as evidence. +# +# Output (all under build/, deterministic, sorted): +# build/wa-inventory.tsv packagekindkeyfile +# build/wa-marshal-sites.txt file:line of every proto.Marshal/Unmarshal call +# Kinds: func, method, type, const, var, proto. Key is package-qualified +# ("whatsmeow.Client.Connect", "types.JID", "waE2E.Message"). +set -euo pipefail +cd "$(dirname "$0")/.." + +WA_VERSION="v0.0.0-20261027104441-1eec1136a50b" +WA_HASH="1eec1136a50b2ef148b05f1819e77a9d989e0457" +OUT="build/wa-inventory.tsv" +SITES="build/wa-marshal-sites.txt" + +GOMODCACHE="$(go env GOMODCACHE)" +WA_SRC="$GOMODCACHE/go.mau.fi/whatsmeow@$WA_VERSION" +INFO="$GOMODCACHE/cache/download/go.mau.fi/whatsmeow/@v/$WA_VERSION.info" +test -d "$WA_SRC" || { echo "wa-api-inventory: missing $WA_SRC" >&2; exit 1; } +test -f "$INFO" || { echo "wa-api-inventory: missing $INFO" >&2; exit 1; } +GOT_HASH="$(python3 -c 'import json,sys; print(json.load(open(sys.argv[1]))["Origin"]["Hash"])' "$INFO")" +test "$GOT_HASH" = "$WA_HASH" || { + echo "wa-api-inventory: pin drift: info says $GOT_HASH, want $WA_HASH" >&2; exit 1; } + +mkdir -p build +WA_SRC="$WA_SRC" OUT="$OUT" SITES="$SITES" python3 - <<'EOF' +import os, re, sys + +wa = os.environ["WA_SRC"] +out, sites = os.environ["OUT"], os.environ["SITES"] + +def header_lines(path): + with open(path, encoding="utf-8") as f: + return [f.readline() for _ in range(8)] + +def is_generated(path): + return any("DO NOT EDIT" in ln or "DO NOT MODIFY" in ln or + "generated by" in ln.lower() for ln in header_lines(path)) + +def is_ignored(path): + with open(path, encoding="utf-8") as f: + for ln in f: + if ln.startswith("//go:build ignore"): + return True + if ln.startswith("package "): + return False + return False + +def pkg_of(text): + m = re.search(r"^package (\w+)", text, re.M) + return m.group(1) if m else "?" + +def strip_line(ln): + ln = ln.split("//", 1)[0] + ln = re.sub(r"`[^`]*`", "", ln) + ln = re.sub(r'"(?:[^"\\]|\\.)*"', "", ln) + return ln + +def exported(name): + return bool(name) and name[0].isupper() and name != "_" + +# Collect files. +gofiles = [] +for root, _, files in os.walk(wa): + for fn in files: + if fn.endswith(".go"): + gofiles.append(os.path.relpath(os.path.join(root, fn), wa)) +gofiles.sort() + +scoped, pbfiles = [], [] +for rel in gofiles: + if rel.endswith("_test.go"): + continue + full = os.path.join(wa, rel) + if is_generated(full) or is_ignored(full): + if rel.endswith(".pb.go"): + pbfiles.append(rel) + elif not rel.endswith(".pb.go"): + sys.stderr.write("note: generated/ignored, out of scope: %s\n" % rel) + continue + scoped.append(rel) + +rows = [] # (pkg, kind, key, file) +allsrc = [] +for rel in scoped: + text = open(os.path.join(wa, rel), encoding="utf-8").read() + allsrc.append(text) + pkg = pkg_of(text) + # Blank multi-line raw-string bodies: SQL inside const blocks must not + # parse as constant names, and braces inside strings must not move depth. + rawlines = [] + in_raw = False + for rln in text.split("\n"): + if in_raw: + if "`" in rln: + in_raw = False + rawlines.append("") + elif rln.count("`") % 2 == 1: + in_raw = True + rawlines.append(re.sub(r"`[^`]*$", "", rln)) + else: + rawlines.append(rln) + lines = rawlines + i, n = 0, len(lines) + while i < n: + ln = lines[i] + m = re.match(r"^func \(([^)]*)\) ([A-Za-z_]\w*)", ln) + if m: + recv = m.group(1).strip().split() + rtype = recv[-1].lstrip("*").split("[")[0] if recv else "?" + meth = m.group(2) + if exported(meth): + rows.append((pkg, "method", "%s.%s.%s" % (pkg, rtype, meth), rel)) + i += 1 + continue + m = re.match(r"^func ([A-Za-z_]\w*)", ln) + if m and exported(m.group(1)): + rows.append((pkg, "func", "%s.%s" % (pkg, m.group(1)), rel)) + i += 1 + continue + m = re.match(r"^type ([A-Za-z_]\w*)", ln) + if m and exported(m.group(1)): + rows.append((pkg, "type", "%s.%s" % (pkg, m.group(1)), rel)) + i += 1 + continue + m = re.match(r"^type \($", ln.strip()) + blk = None + if m: + blk = "type" + elif ln.strip() in ("const (", "var ("): + blk = "const" if ln.startswith("const") else "var" + elif re.match(r"^const ([A-Za-z_]\w*)", ln): + if exported(re.match(r"^const ([A-Za-z_]\w*)", ln).group(1)): + rows.append((pkg, "const", "%s.%s" % (pkg, re.match(r"^const ([A-Za-z_]\w*)", ln).group(1)), rel)) + i += 1 + continue + elif re.match(r"^var ([A-Za-z_]\w*)", ln): + if exported(re.match(r"^var ([A-Za-z_]\w*)", ln).group(1)): + rows.append((pkg, "var", "%s.%s" % (pkg, re.match(r"^var ([A-Za-z_]\w*)", ln).group(1)), rel)) + i += 1 + continue + if blk is None: + i += 1 + continue + depth = 0 + i += 1 + while i < n: + bln = lines[i] + if bln.strip() == ")" and depth == 0: + break + code = strip_line(bln) + if depth == 0: + tok = re.match(r"\s*([A-Za-z_]\w*)", code) + if tok and exported(tok.group(1)): + rows.append((pkg, blk, "%s.%s" % (pkg, tok.group(1)), rel)) + depth += code.count("{") - code.count("}") + i += 1 + i += 1 + +# Proto messages used in non-test code. +blob = "\n".join(allsrc) +proto_count = 0 +for rel in sorted(pbfiles): + text = open(os.path.join(wa, rel), encoding="utf-8").read() + pkg = pkg_of(text) + plines = text.split("\n") + for j, pln in enumerate(plines): + m = re.match(r"^type (\w+) struct \{$", pln) + if not m: + continue + window = "\n".join(plines[j:j + 3]) + if "protoimpl.MessageState" not in window: + continue + msg = m.group(1) + if re.search(r"\b%s\.%s\b" % (re.escape(pkg), re.escape(msg)), blob): + rows.append((pkg, "proto", "%s.%s" % (pkg, msg), rel)) + proto_count += 1 + +rows.sort(key=lambda r: (r[0], r[1], r[2], r[3])) +seen = {} +for pkg, kind, key, rel in rows: + if key in seen: + sys.stderr.write("DUPKEY %s first %s then %s:%s\n" % (key, seen[key], kind, rel)) + sys.exit("wa-api-inventory: duplicate key, parser bug") + seen[key] = "%s:%s" % (kind, rel) +with open(out, "w", encoding="utf-8") as f: + for pkg, kind, key, rel in rows: + f.write("%s\t%s\t%s\t%s\n" % (pkg, kind, key, rel)) + +# Marshal/Unmarshal call sites (evidence, not coverable entries). +with open(sites, "w", encoding="utf-8") as f: + for rel in scoped: + full = os.path.join(wa, rel) + for j, ln in enumerate(open(full, encoding="utf-8"), 1): + if re.search(r"proto\.(Marshal|Unmarshal)\b", ln): + f.write("%s:%d: %s" % (rel, j, ln.strip()[:160] + "\n")) + +kinds = {} +for _, k, _, _ in rows: + kinds[k] = kinds.get(k, 0) + 1 +sys.stderr.write("scoped go files: %d, generated pb files: %d\n" % (len(scoped), len(pbfiles))) +sys.stderr.write("inventory entries: %d %s\n" % (len(rows), kinds)) +sys.stderr.write("wrote %s\n" % out) +EOF +echo "inventory: $(wc -l < "$OUT") entries, $(wc -l < "$SITES") marshal sites" diff --git a/taicpp/tools/wa-coverage.sh b/taicpp/tools/wa-coverage.sh new file mode 100755 index 0000000..b79991d --- /dev/null +++ b/taicpp/tools/wa-coverage.sh @@ -0,0 +1,98 @@ +#!/usr/bin/env bash +# wa-coverage.sh: gate whatsmeow API coverage against the C++ port (M0 harness; +# see docs/whatsapp.md section 17 and full_transpilation_and_integration.md +# prompt sections 1 and 3). +# +# Usage: tools/wa-coverage.sh [--slice FILE] +# +# tools/wa-api-inventory.sh is re-run first so the inventory is never stale. +# tools/wa-mapping.tsv maps every inventory key to its C++ counterpart or to +# UNMAPPED. The key sets must match exactly: an inventory key missing from the +# mapping, or a mapping key no longer in the inventory, fails loudly (the +# mapping is stale, extend it, do not waive it). There is no allowlist. +# +# A slice file scopes the gate to one milestone's API: lines of +# file: every entry from that Go file +# pkg: every entry from that package +# sym: one entry +# re: every key the regex matches +# ("#" comments and blank lines skipped; an entry matching ANY line counts.) +# Without --slice the whole inventory is gated. +# +# Exit 0 only at 100% mapped; otherwise the unmapped keys are listed. +set -euo pipefail +cd "$(dirname "$0")/.." + +SLICE="" +if [ "${1:-}" = "--slice" ]; then SLICE="${2:?need a slice file}"; shift 2; fi +test $# -eq 0 || { echo "usage: tools/wa-coverage.sh [--slice FILE]" >&2; exit 1; } +test -z "$SLICE" || test -f "$SLICE" || { echo "wa-coverage: no slice $SLICE" >&2; exit 1; } + +./tools/wa-api-inventory.sh >/dev/null +MAP="tools/wa-mapping.tsv" +test -f "$MAP" || { echo "wa-coverage: missing $MAP" >&2; exit 1; } + +SLICE="$SLICE" MAP="$MAP" python3 - <<'EOF' +import os, re, sys + +inv = {} +for ln in open("build/wa-inventory.tsv", encoding="utf-8"): + pkg, kind, key, rel = ln.rstrip("\n").split("\t") + inv[key] = (pkg, kind, rel) + +mapping = {} +for ln in open(os.environ["MAP"], encoding="utf-8"): + if not ln.strip() or ln.startswith("#"): + continue + key, cpp = ln.rstrip("\n").split("\t", 1) + mapping[key] = cpp.strip() + +fail = [] +for key in sorted(set(inv) - set(mapping)): + fail.append("missing from mapping: %s (%s %s)" % (key, inv[key][1], inv[key][2])) +for key in sorted(set(mapping) - set(inv)): + fail.append("stale mapping key (not in inventory): %s" % key) +if fail: + print("wa-coverage: mapping out of sync with inventory:") + for f in fail[:40]: + print(" " + f) + if len(fail) > 40: + print(" ... and %d more" % (len(fail) - 40)) + sys.exit(1) + +slicepath = os.environ["SLICE"] +wanted = None +if slicepath: + rules = [] + for ln in open(slicepath, encoding="utf-8"): + ln = ln.strip() + if not ln or ln.startswith("#"): + continue + kind, _, val = ln.partition(":") + rules.append((kind.strip(), val.strip())) + wanted = set() + for key, (pkg, _, rel) in inv.items(): + for kind, val in rules: + if (kind == "file" and rel == val) or \ + (kind == "pkg" and pkg == val) or \ + (kind == "sym" and key == val) or \ + (kind == "re" and re.search(val, key)): + wanted.add(key) + break + if not wanted: + print("wa-coverage: slice %s matched nothing" % slicepath) + sys.exit(1) + +keys = sorted(wanted if wanted is not None else inv) +unmapped = [k for k in keys if mapping[k] == "UNMAPPED"] +pct = 100.0 * (len(keys) - len(unmapped)) / len(keys) +scope = ("slice %s" % slicepath) if slicepath else "full inventory" +print("wa-coverage [%s]: %d/%d mapped (%.1f%%)" % (scope, len(keys) - len(unmapped), len(keys), pct)) +if unmapped: + for k in unmapped[:60]: + print(" UNMAPPED %s (%s %s)" % (k, inv[k][1], inv[k][2])) + if len(unmapped) > 60: + print(" ... and %d more" % (len(unmapped) - 60)) + sys.exit(1) +print("wa-coverage: 100%%") +EOF diff --git a/taicpp/tools/wa-mapping.tsv b/taicpp/tools/wa-mapping.tsv new file mode 100644 index 0000000..2ce879a --- /dev/null +++ b/taicpp/tools/wa-mapping.tsv @@ -0,0 +1,1507 @@ +# wa-mapping.tsv: whatsmeow inventory key -> C++ counterpart (M0 baseline). +# Key matches build/wa-inventory.tsv column 3. Value is UNMAPPED or +# detz::wa:::: (file) / detz::wa:: (file). +# No allowlist: every key is either mapped or UNMAPPED, nothing is waived. +# Mapping rule: a named C++ entity (function, method, type, const, field) +# performs the counterpart role; inline fragments with no named entity stay +# UNMAPPED for a later milestone to name. Subset notes name the gap (M1-M10). +appstate.AllPatchNames UNMAPPED +appstate.BuildArchive UNMAPPED +appstate.BuildDeleteChat UNMAPPED +appstate.BuildLabelChat UNMAPPED +appstate.BuildLabelEdit UNMAPPED +appstate.BuildLabelMessage UNMAPPED +appstate.BuildMarkChatAsRead UNMAPPED +appstate.BuildMute UNMAPPED +appstate.BuildMuteAbs UNMAPPED +appstate.BuildPin UNMAPPED +appstate.BuildSettingPushName UNMAPPED +appstate.BuildStar UNMAPPED +appstate.DownloadExternalFunc detz::wa::WaAppStateSync::DownloadFn (src/whatsapp/wa_appstate.h) +appstate.ErrKeyNotFound UNMAPPED +appstate.ErrMismatchingContentMAC UNMAPPED +appstate.ErrMismatchingIndexMAC UNMAPPED +appstate.ErrMismatchingLTHash UNMAPPED +appstate.ErrMismatchingPatchMAC UNMAPPED +appstate.ErrMissingPreviousSetValueOperation UNMAPPED +appstate.ExpandedAppStateKeys detz::wa::WaAppStateKeys (src/whatsapp/wa_appstate.h) +appstate.HashState UNMAPPED +appstate.IndexAIThreadDelete UNMAPPED +appstate.IndexAIThreadRename UNMAPPED +appstate.IndexAgentChatAssignment UNMAPPED +appstate.IndexAgentChatAssignmentOpenedStatus UNMAPPED +appstate.IndexAndroidUnsupportedActions UNMAPPED +appstate.IndexArchive UNMAPPED +appstate.IndexAvatarUpdatedAction UNMAPPED +appstate.IndexBBProPendingCustomerBaseAction UNMAPPED +appstate.IndexBizAISettingsNudgeAction UNMAPPED +appstate.IndexBotWelcomeRequest UNMAPPED +appstate.IndexBroadcast UNMAPPED +appstate.IndexBroadcastJID UNMAPPED +appstate.IndexBusinessBroadcastList UNMAPPED +appstate.IndexBusinessFolderActivation UNMAPPED +appstate.IndexCTWAMessageReceived UNMAPPED +appstate.IndexCTWAPerCustomerDataSharing UNMAPPED +appstate.IndexCallLog UNMAPPED +appstate.IndexClearChat UNMAPPED +appstate.IndexCoexV2Version UNMAPPED +appstate.IndexCommunityNestingState UNMAPPED +appstate.IndexContact UNMAPPED +appstate.IndexContactManagerMetadata UNMAPPED +appstate.IndexCustomPaymentMethods UNMAPPED +appstate.IndexCustomerData UNMAPPED +appstate.IndexDeleteChat UNMAPPED +appstate.IndexDeleteIndividualCallLog UNMAPPED +appstate.IndexDeleteMessageForMe UNMAPPED +appstate.IndexDetectedOutcomesStatusAction UNMAPPED +appstate.IndexDeviceAgent UNMAPPED +appstate.IndexDeviceCapabilities UNMAPPED +appstate.IndexDeviceCapabilitiesV2 UNMAPPED +appstate.IndexExternalWebBeta UNMAPPED +appstate.IndexFavoriteSticker UNMAPPED +appstate.IndexFavorites UNMAPPED +appstate.IndexGalaxyFlowAction UNMAPPED +appstate.IndexGeneratedWUI UNMAPPED +appstate.IndexGroupHistoryToggle UNMAPPED +appstate.IndexInteractiveMessageAction UNMAPPED +appstate.IndexLIDContact UNMAPPED +appstate.IndexLabelAssociationChat UNMAPPED +appstate.IndexLabelAssociationMessage UNMAPPED +appstate.IndexLabelEdit UNMAPPED +appstate.IndexLabelReordering UNMAPPED +appstate.IndexLabelSublist UNMAPPED +appstate.IndexLock UNMAPPED +appstate.IndexLockMessage UNMAPPED +appstate.IndexMaibaAIFeaturesControl UNMAPPED +appstate.IndexMarkChatAsRead UNMAPPED +appstate.IndexMarketingMessage UNMAPPED +appstate.IndexMarketingMessageBroadcast UNMAPPED +appstate.IndexMerchantPaymentPartner UNMAPPED +appstate.IndexMusicUserID UNMAPPED +appstate.IndexMute UNMAPPED +appstate.IndexNCTSaltSync UNMAPPED +appstate.IndexNewsletterSavedInterests UNMAPPED +appstate.IndexNoteEdit UNMAPPED +appstate.IndexNotificationActivitySetting UNMAPPED +appstate.IndexNux UNMAPPED +appstate.IndexOutContact UNMAPPED +appstate.IndexPNForLIDChat UNMAPPED +appstate.IndexPaymentInfo UNMAPPED +appstate.IndexPaymentTOS UNMAPPED +appstate.IndexPin UNMAPPED +appstate.IndexPrimaryFeature UNMAPPED +appstate.IndexPrimaryVersion UNMAPPED +appstate.IndexPrivateProcessingSetting UNMAPPED +appstate.IndexQuickReply UNMAPPED +appstate.IndexRecentEmojiWeightsAction UNMAPPED +appstate.IndexRemoveRecentSticker UNMAPPED +appstate.IndexSentinel UNMAPPED +appstate.IndexSettingAutoOrganizeBusinessChat UNMAPPED +appstate.IndexSettingChannelsPersonalisedRecommendationOptout UNMAPPED +appstate.IndexSettingChatLock UNMAPPED +appstate.IndexSettingDisableLinkPreviews UNMAPPED +appstate.IndexSettingLocale UNMAPPED +appstate.IndexSettingPushName UNMAPPED +appstate.IndexSettingRelayAllCalls UNMAPPED +appstate.IndexSettingSecurityNotification UNMAPPED +appstate.IndexSettingUnarchiveChats UNMAPPED +appstate.IndexSettingsSync UNMAPPED +appstate.IndexShareOwnPN UNMAPPED +appstate.IndexSharedDeviceAllowlist UNMAPPED +appstate.IndexSharedDeviceSecret UNMAPPED +appstate.IndexStar UNMAPPED +appstate.IndexStatusPostOptInNotificationPreferencesAction UNMAPPED +appstate.IndexStatusPrivacy UNMAPPED +appstate.IndexSubscription UNMAPPED +appstate.IndexSubscriptionsSync UNMAPPED +appstate.IndexThreadPin UNMAPPED +appstate.IndexTimeFormat UNMAPPED +appstate.IndexUGCBot UNMAPPED +appstate.IndexUserStatusMute UNMAPPED +appstate.IndexUsernameChatStartMode UNMAPPED +appstate.IndexWaffleAccountLinkState UNMAPPED +appstate.IndexWasaRootSecretAction UNMAPPED +appstate.Mutation detz::wa::WaSyncdMutation (src/whatsapp/wa_proto.h) +appstate.MutationInfo UNMAPPED +appstate.NewProcessor detz::wa::WaAppStateSync::WaAppStateSync (src/whatsapp/wa_appstate.h; fetch-only ctor) +appstate.ParsePatchList detz::wa::parse_syncd_patch (src/whatsapp/wa_proto.h) +appstate.ParseRecovery UNMAPPED +appstate.PatchInfo UNMAPPED +appstate.PatchList UNMAPPED +appstate.Processor detz::wa::WaAppStateSync (src/whatsapp/wa_appstate.h; fetch path only, no send/recovery) +appstate.Processor.DecodePatches detz::wa::WaAppStateSync::decode (src/whatsapp/wa_appstate.h; private MAC-check + decrypt) +appstate.Processor.EncodePatch UNMAPPED +appstate.Processor.GetMissingKeyIDs UNMAPPED +appstate.Processor.ProcessRecovery UNMAPPED +appstate.WAPatchCriticalBlock UNMAPPED +appstate.WAPatchCriticalUnblockLow detz::wa::WaAppStateSync::kContactsCollection (src/whatsapp/wa_appstate.h) +appstate.WAPatchName UNMAPPED +appstate.WAPatchRegular UNMAPPED +appstate.WAPatchRegularHigh UNMAPPED +appstate.WAPatchRegularLow UNMAPPED +appstate.patchOutput.AddMAC UNMAPPED +appstate.patchOutput.RemoveMAC UNMAPPED +argo.GetQueryIDToMessageName UNMAPPED +argo.GetStore UNMAPPED +argo.Init UNMAPPED +argo.QueryIDToMessageName UNMAPPED +argo.Store UNMAPPED +armadillo.MessageApplicationSub UNMAPPED +armadillo.RealMessageApplicationSub UNMAPPED +armadillo.Unsupported_BusinessApplication UNMAPPED +armadillo.Unsupported_BusinessApplication.IsMessageApplicationSub UNMAPPED +armadillo.Unsupported_PaymentApplication UNMAPPED +armadillo.Unsupported_PaymentApplication.IsMessageApplicationSub UNMAPPED +armadillo.Unsupported_Voip UNMAPPED +armadillo.Unsupported_Voip.IsMessageApplicationSub UNMAPPED +armadilloutil.ErrUnsupportedVersion UNMAPPED +armadilloutil.Marshal UNMAPPED +armadilloutil.Unmarshal UNMAPPED +binary.AttrUtility detz::wa::WaNode::attr/has_attr (src/whatsapp/wa_node.h; string reads only, no error list) +binary.AttrUtility.Bool UNMAPPED +binary.AttrUtility.Error UNMAPPED +binary.AttrUtility.GetBool UNMAPPED +binary.AttrUtility.GetInt64 UNMAPPED +binary.AttrUtility.GetJID detz::wa::WaNode::attr (src/whatsapp/wa_node.h; JIDs are plain strings) +binary.AttrUtility.GetString detz::wa::WaNode::attr (src/whatsapp/wa_node.h) +binary.AttrUtility.GetUint64 UNMAPPED +binary.AttrUtility.GetUnixMilli UNMAPPED +binary.AttrUtility.GetUnixTime UNMAPPED +binary.AttrUtility.Int UNMAPPED +binary.AttrUtility.Int64 UNMAPPED +binary.AttrUtility.JID detz::wa::WaNode::attr (src/whatsapp/wa_node.h; JIDs are plain strings) +binary.AttrUtility.OK UNMAPPED +binary.AttrUtility.OptionalBool UNMAPPED +binary.AttrUtility.OptionalInt UNMAPPED +binary.AttrUtility.OptionalJID detz::wa::WaNode::attr (src/whatsapp/wa_node.h; empty when absent) +binary.AttrUtility.OptionalJIDOrEmpty detz::wa::WaNode::attr (src/whatsapp/wa_node.h; empty when absent) +binary.AttrUtility.OptionalString detz::wa::WaNode::attr (src/whatsapp/wa_node.h; empty when absent) +binary.AttrUtility.OptionalUnixMilli UNMAPPED +binary.AttrUtility.OptionalUnixTime UNMAPPED +binary.AttrUtility.String detz::wa::WaNode::attr (src/whatsapp/wa_node.h) +binary.AttrUtility.Uint64 UNMAPPED +binary.AttrUtility.UnixMilli UNMAPPED +binary.AttrUtility.UnixTime UNMAPPED +binary.Attrs detz::wa::WaNode::attrs (src/whatsapp/wa_node.h; std::map) +binary.ErrInvalidJIDType UNMAPPED +binary.ErrInvalidNode UNMAPPED +binary.ErrInvalidToken UNMAPPED +binary.ErrInvalidType UNMAPPED +binary.ErrNonStringKey UNMAPPED +binary.ErrorList UNMAPPED +binary.ErrorList.Error UNMAPPED +binary.IndentXML UNMAPPED +binary.Marshal detz::wa::WaBinary::encode (src/whatsapp/wa_binary.h) +binary.MaxBytesToPrintAsHex UNMAPPED +binary.Node detz::wa::WaNode (src/whatsapp/wa_node.h) +binary.Node.AttrGetter detz::wa::WaNode::attr/has_attr (src/whatsapp/wa_node.h; plain accessors) +binary.Node.GetChildByTag detz::wa::WaNode::child (src/whatsapp/wa_node.h) +binary.Node.GetChildren detz::wa::WaNode::children (src/whatsapp/wa_node.h) +binary.Node.GetChildrenByTag detz::wa::WaNode::all (src/whatsapp/wa_node.h) +binary.Node.GetOptionalChildByTag detz::wa::WaNode::child (src/whatsapp/wa_node.h; nullptr when absent) +binary.Node.String detz::wa::WaNode::debug (src/whatsapp/wa_node.h; debug rendering, not wire XML) +binary.Node.UnmarshalJSON UNMAPPED +binary.Unmarshal detz::wa::WaBinary::decode (src/whatsapp/wa_binary.h) +binary.Unpack UNMAPPED +cbcutil.Decrypt detz::wa::WaCrypto::aes_cbc_decrypt_nopad (src/whatsapp/wa_crypto.h; padding at call sites) +cbcutil.DecryptFile UNMAPPED +cbcutil.Encrypt detz::wa::WaCrypto::aes_cbc_encrypt_nopad (src/whatsapp/wa_crypto.h; padding at call sites) +cbcutil.EncryptStream UNMAPPED +cbcutil.File UNMAPPED +events.AppState UNMAPPED +events.AppStateSyncComplete UNMAPPED +events.AppStateSyncError UNMAPPED +events.Archive UNMAPPED +events.Blocklist UNMAPPED +events.BlocklistAction UNMAPPED +events.BlocklistActionDefault UNMAPPED +events.BlocklistActionModify UNMAPPED +events.BlocklistChange UNMAPPED +events.BlocklistChangeAction UNMAPPED +events.BlocklistChangeActionBlock UNMAPPED +events.BlocklistChangeActionUnblock UNMAPPED +events.BusinessName UNMAPPED +events.CATRefreshError UNMAPPED +events.CATRefreshError.PermanentDisconnectDescription UNMAPPED +events.CallAccept UNMAPPED +events.CallOffer UNMAPPED +events.CallOfferNotice UNMAPPED +events.CallPreAccept UNMAPPED +events.CallReject UNMAPPED +events.CallRelayLatency UNMAPPED +events.CallTerminate UNMAPPED +events.CallTransport UNMAPPED +events.ChatPresence UNMAPPED +events.ClearChat UNMAPPED +events.ClientOutdated UNMAPPED +events.ClientOutdated.PermanentDisconnectDescription UNMAPPED +events.ConnectFailure UNMAPPED +events.ConnectFailure.PermanentDisconnectDescription UNMAPPED +events.ConnectFailureBadUserAgent UNMAPPED +events.ConnectFailureCATExpired UNMAPPED +events.ConnectFailureCATInvalid UNMAPPED +events.ConnectFailureClientOutdated UNMAPPED +events.ConnectFailureClientUnknown UNMAPPED +events.ConnectFailureExperimental UNMAPPED +events.ConnectFailureGeneric UNMAPPED +events.ConnectFailureInternalServerError UNMAPPED +events.ConnectFailureLoggedOut UNMAPPED +events.ConnectFailureMainDeviceGone UNMAPPED +events.ConnectFailureNotFound UNMAPPED +events.ConnectFailureReason UNMAPPED +events.ConnectFailureReason.IsLoggedOut UNMAPPED +events.ConnectFailureReason.NumberString UNMAPPED +events.ConnectFailureReason.String UNMAPPED +events.ConnectFailureServiceUnavailable UNMAPPED +events.ConnectFailureTempBanned UNMAPPED +events.ConnectFailureUnknownLogout UNMAPPED +events.Connected UNMAPPED +events.Contact UNMAPPED +events.DecryptFailHide UNMAPPED +events.DecryptFailMode UNMAPPED +events.DecryptFailShow UNMAPPED +events.DeleteChat UNMAPPED +events.DeleteForMe UNMAPPED +events.Disconnected UNMAPPED +events.FBMessage UNMAPPED +events.FBMessage.GetArmadillo UNMAPPED +events.FBMessage.GetConsumerApplication UNMAPPED +events.GroupInfo UNMAPPED +events.HistorySync UNMAPPED +events.IdentityChange UNMAPPED +events.JoinedGroup UNMAPPED +events.KeepAliveRestored UNMAPPED +events.KeepAliveTimeout UNMAPPED +events.LabelAssociationChat UNMAPPED +events.LabelAssociationMessage UNMAPPED +events.LabelEdit UNMAPPED +events.LoggedOut UNMAPPED +events.LoggedOut.PermanentDisconnectDescription UNMAPPED +events.ManualLoginReconnect UNMAPPED +events.MarkChatAsRead UNMAPPED +events.MediaRetry UNMAPPED +events.MediaRetryError UNMAPPED +events.Message UNMAPPED +events.Message.UnwrapRaw UNMAPPED +events.MexNotificationData UNMAPPED +events.Mute UNMAPPED +events.NewsletterJoin UNMAPPED +events.NewsletterLeave UNMAPPED +events.NewsletterLiveUpdate UNMAPPED +events.NewsletterMessageMeta UNMAPPED +events.NewsletterMilestone UNMAPPED +events.NewsletterMuteChange UNMAPPED +events.NotifyAccountReachoutTimelock UNMAPPED +events.OfflineSyncCompleted UNMAPPED +events.OfflineSyncPreview UNMAPPED +events.PairError UNMAPPED +events.PairPasskeyConfirmation UNMAPPED +events.PairPasskeyError UNMAPPED +events.PairPasskeyRequest UNMAPPED +events.PairSuccess UNMAPPED +events.PermanentDisconnect UNMAPPED +events.Picture UNMAPPED +events.Pin UNMAPPED +events.Presence UNMAPPED +events.PrivacySettings UNMAPPED +events.PushName UNMAPPED +events.PushNameSetting UNMAPPED +events.QR UNMAPPED +events.QRScannedWithoutMultidevice UNMAPPED +events.Receipt UNMAPPED +events.ReceiptType UNMAPPED +events.ReceiptTypeDelivered UNMAPPED +events.ReceiptTypePlayed UNMAPPED +events.ReceiptTypeRead UNMAPPED +events.ReceiptTypeReadSelf UNMAPPED +events.ReceiptTypeRetry UNMAPPED +events.ReceiptTypeSender UNMAPPED +events.RotateADVSecret UNMAPPED +events.Star UNMAPPED +events.StreamError UNMAPPED +events.StreamReplaced UNMAPPED +events.StreamReplaced.PermanentDisconnectDescription UNMAPPED +events.TempBanBlockedByUsers UNMAPPED +events.TempBanBroadcastList UNMAPPED +events.TempBanCreatedTooManyGroups UNMAPPED +events.TempBanReason UNMAPPED +events.TempBanReason.String UNMAPPED +events.TempBanSentToTooManyPeople UNMAPPED +events.TempBanSentTooManySameMessage UNMAPPED +events.TemporaryBan UNMAPPED +events.TemporaryBan.PermanentDisconnectDescription UNMAPPED +events.TemporaryBan.String UNMAPPED +events.UnarchiveChatsSetting UNMAPPED +events.UnavailableType UNMAPPED +events.UnavailableTypeUnknown UNMAPPED +events.UnavailableTypeViewOnce UNMAPPED +events.UndecryptableMessage UNMAPPED +events.UnknownCallEvent UNMAPPED +events.UserAbout UNMAPPED +events.UserStatusMute UNMAPPED +gcmutil.Decrypt detz::wa::WaCrypto::aes_gcm_open (src/whatsapp/wa_crypto.h) +gcmutil.Encrypt detz::wa::WaCrypto::aes_gcm_seal (src/whatsapp/wa_crypto.h) +gcmutil.Prepare UNMAPPED +hkdfutil.SHA256 detz::wa::WaCrypto::hkdf_sha256 (src/whatsapp/wa_crypto.h) +instamadilloAddMessage.AddMessagePayload UNMAPPED +instamadilloAddMessage.AddMessagePayload.IsMessageApplicationSub UNMAPPED +instamadilloDeleteMessage.DeleteMessagePayload UNMAPPED +instamadilloDeleteMessage.DeleteMessagePayload.IsMessageApplicationSub UNMAPPED +instamadilloSupplementMessage.SupplementMessagePayload UNMAPPED +instamadilloSupplementMessage.SupplementMessagePayload.IsMessageApplicationSub UNMAPPED +instamadilloTransportPayload.TransportPayload UNMAPPED +keys.KeyPair detz::wa::WaCrypto::KeyPair (src/whatsapp/wa_crypto.h) +keys.KeyPair.CreateSignedPreKey UNMAPPED +keys.KeyPair.Sign detz::wa::WaCrypto::xeddsa_sign (src/whatsapp/wa_crypto.h) +keys.NewKeyPair detz::wa::WaCrypto::generate_x25519 (src/whatsapp/wa_crypto.h) +keys.NewKeyPairFromPrivateKey detz::wa::WaCrypto::x25519_public (src/whatsapp/wa_crypto.h; pub half, pair assembled at call sites) +keys.NewPreKey UNMAPPED +keys.PreKey UNMAPPED +lthash.LTHash detz::wa::WaLtHash (src/whatsapp/wa_appstate.h) +lthash.LTHash.SubtractThenAdd detz::wa::WaLtHash::subtract_then_add (src/whatsapp/wa_appstate.h) +lthash.LTHash.SubtractThenAddInPlace detz::wa::WaLtHash::subtract_then_add (src/whatsapp/wa_appstate.h; always in-place) +lthash.WAPatchIntegrity UNMAPPED +richresponse.CodeBlock UNMAPPED +richresponse.CodeBlock.GetContent UNMAPPED +richresponse.CodeBlockType UNMAPPED +richresponse.CodeBlockTypeComment UNMAPPED +richresponse.CodeBlockTypeDefault UNMAPPED +richresponse.CodeBlockTypeKeyword UNMAPPED +richresponse.CodeBlockTypeMethod UNMAPPED +richresponse.CodeBlockTypeNumber UNMAPPED +richresponse.CodeBlockTypeString UNMAPPED +richresponse.DividerType UNMAPPED +richresponse.DividerTypeDot UNMAPPED +richresponse.DividerTypeHorizontalLine UNMAPPED +richresponse.FOABloksPrimitive UNMAPPED +richresponse.FOABloksPrimitive.String UNMAPPED +richresponse.FOATextPrimitive UNMAPPED +richresponse.FOATextPrimitive.String UNMAPPED +richresponse.GenAIBotProgressStatusPrimitive UNMAPPED +richresponse.GenAIBotThinkingStatusPrimitive UNMAPPED +richresponse.GenAIBotThinkingStatusPrimitive.String UNMAPPED +richresponse.GenAICodeUXPrimitive UNMAPPED +richresponse.GenAICodeUXPrimitive.String UNMAPPED +richresponse.GenAIDeepLinkItem UNMAPPED +richresponse.GenAIDividerPrimitive UNMAPPED +richresponse.GenAIDividerPrimitive.String UNMAPPED +richresponse.GenAIGridLayoutViewModel UNMAPPED +richresponse.GenAIHScrollLayoutViewModel UNMAPPED +richresponse.GenAIImagePrimitive UNMAPPED +richresponse.GenAIImagePrimitive.String UNMAPPED +richresponse.GenAIImaginePrimitive UNMAPPED +richresponse.GenAIImaginePrimitive.String UNMAPPED +richresponse.GenAIInlineLinkItem UNMAPPED +richresponse.GenAILatexItem UNMAPPED +richresponse.GenAILatexUXPrimitive UNMAPPED +richresponse.GenAILatexUXPrimitive.GetLatexExpression UNMAPPED +richresponse.GenAILatexUXPrimitive.String UNMAPPED +richresponse.GenAIMarkdownTextUXPrimitive UNMAPPED +richresponse.GenAIMarkdownTextUXPrimitive.String UNMAPPED +richresponse.GenAIMetadataTextPrimitive UNMAPPED +richresponse.GenAIMetadataTextPrimitive.String UNMAPPED +richresponse.GenAIPostPrimitive UNMAPPED +richresponse.GenAIPostPrimitive.String UNMAPPED +richresponse.GenAIProductItemCardPrimitive UNMAPPED +richresponse.GenAIProductItemCardPrimitive.String UNMAPPED +richresponse.GenAIReelPrimitive UNMAPPED +richresponse.GenAIReelPrimitive.String UNMAPPED +richresponse.GenAISearchCitationItem UNMAPPED +richresponse.GenAISearchResultPrimitive UNMAPPED +richresponse.GenAISearchResultPrimitive.String UNMAPPED +richresponse.GenAISingleLayoutViewModel UNMAPPED +richresponse.GenAISingleLayoutViewModel.GetPrimitives UNMAPPED +richresponse.GenAISingleLayoutViewModel.String UNMAPPED +richresponse.GenAISpacerPrimitive UNMAPPED +richresponse.GenAISpacerPrimitive.String UNMAPPED +richresponse.GenAITaskPrimitive UNMAPPED +richresponse.GenAITaskPrimitive.String UNMAPPED +richresponse.GenAIVStackLayoutViewModel UNMAPPED +richresponse.GenATableUXPrimitive UNMAPPED +richresponse.GenATableUXPrimitive.String UNMAPPED +richresponse.ImagineStatus UNMAPPED +richresponse.ImagineStatusFailed UNMAPPED +richresponse.ImagineStatusGenerating UNMAPPED +richresponse.ImagineStatusReady UNMAPPED +richresponse.ImagineType UNMAPPED +richresponse.ImagineTypeAnimate UNMAPPED +richresponse.ImagineTypeImagine UNMAPPED +richresponse.ImagineTypeMemu UNMAPPED +richresponse.MediaItem UNMAPPED +richresponse.MultiLayoutViewModel UNMAPPED +richresponse.MultiLayoutViewModel.GetPrimitives UNMAPPED +richresponse.MultiLayoutViewModel.String UNMAPPED +richresponse.Primitive UNMAPPED +richresponse.PrimitiveContainer UNMAPPED +richresponse.PrimitiveContainer.UnmarshalJSON UNMAPPED +richresponse.RichResponse UNMAPPED +richresponse.TableRow UNMAPPED +richresponse.TableRow.String UNMAPPED +richresponse.TextEntity UNMAPPED +richresponse.TextEntity.UnmarshalJSON UNMAPPED +richresponse.TextEntityMetadata UNMAPPED +richresponse.TypeNameContainer UNMAPPED +richresponse.UnknownPrimitive UNMAPPED +richresponse.UnknownPrimitive.String UNMAPPED +richresponse.UnknownTextEntityMetadata UNMAPPED +richresponse.UnknownViewModel UNMAPPED +richresponse.UnknownViewModel.GetPrimitives UNMAPPED +richresponse.UnknownViewModel.String UNMAPPED +richresponse.ViewModel UNMAPPED +richresponse.ViewModelContainer UNMAPPED +richresponse.ViewModelContainer.UnmarshalJSON UNMAPPED +socket.DisconnectHandler UNMAPPED +socket.ErrDialFailed detz::wa::WaSocket::connect throws WaSocketError (src/whatsapp/wa_socket.h; shared type) +socket.ErrFrameTooLarge detz::wa::WaFraming::frame throws on oversize (src/whatsapp/wa_noise.cpp) +socket.ErrSocketAlreadyOpen UNMAPPED +socket.ErrSocketClosed UNMAPPED +socket.ErrWithStatusCode UNMAPPED +socket.FrameHandler UNMAPPED +socket.FrameLengthSize detz::wa::WaFraming::frame/unframe 3-byte prefix (src/whatsapp/wa_noise.h; literal, unnamed) +socket.FrameMaxSize detz::wa::WaFraming::kMaxFrame (src/whatsapp/wa_noise.h) +socket.FrameSocket UNMAPPED +socket.FrameSocket.Close UNMAPPED +socket.FrameSocket.Connect UNMAPPED +socket.FrameSocket.Context UNMAPPED +socket.FrameSocket.IsConnected UNMAPPED +socket.FrameSocket.SendFrame UNMAPPED +socket.NewFrameSocket UNMAPPED +socket.NewNoiseHandshake detz::wa::WaNoise::WaNoise (src/whatsapp/wa_noise.h) +socket.NoiseHandshake detz::wa::WaNoise (src/whatsapp/wa_noise.h) +socket.NoiseHandshake.Authenticate detz::wa::WaNoise::mix_hash (src/whatsapp/wa_noise.h; private mix step) +socket.NoiseHandshake.Decrypt detz::wa::WaNoise::decrypt + transport_decrypt (src/whatsapp/wa_noise.h) +socket.NoiseHandshake.Encrypt detz::wa::WaNoise::encrypt + transport_encrypt (src/whatsapp/wa_noise.h) +socket.NoiseHandshake.Finish detz::wa::WaNoise::finish (src/whatsapp/wa_noise.h; private split step) +socket.NoiseHandshake.MixIntoKey detz::wa::WaNoise::mix_key (src/whatsapp/wa_noise.h; private) +socket.NoiseHandshake.MixSharedSecretIntoKey UNMAPPED +socket.NoiseHandshake.Start detz::wa::WaNoise::client_handshake (src/whatsapp/wa_noise.h; XX initiator run as one call) +socket.NoiseSocket UNMAPPED +socket.NoiseSocket.IsConnected UNMAPPED +socket.NoiseSocket.SendFrame UNMAPPED +socket.NoiseSocket.Stop UNMAPPED +socket.NoiseStartPattern detz::wa::WaNoise kMode (src/whatsapp/wa_noise.cpp; same 32-byte string) +socket.Origin detz::wa::WaSocket::kOrigin (src/whatsapp/wa_socket.h) +socket.URL detz::wa::WaSocket::kUrl (src/whatsapp/wa_socket.h) +socket.WAConnHeader detz::wa::WaFraming::kHeader (src/whatsapp/wa_noise.h) +socket.WAMagicValue detz::wa::WaFraming::kHeader (src/whatsapp/wa_noise.h) +sqlstore.CachedLIDMap UNMAPPED +sqlstore.CachedLIDMap.FillCache UNMAPPED +sqlstore.CachedLIDMap.GetLIDForPN UNMAPPED +sqlstore.CachedLIDMap.GetManyLIDsForPNs UNMAPPED +sqlstore.CachedLIDMap.GetPNForLID UNMAPPED +sqlstore.CachedLIDMap.PutLIDMapping UNMAPPED +sqlstore.CachedLIDMap.PutManyLIDMappings UNMAPPED +sqlstore.Container UNMAPPED +sqlstore.Container.Close UNMAPPED +sqlstore.Container.DeleteDevice UNMAPPED +sqlstore.Container.GetAllDevices UNMAPPED +sqlstore.Container.GetDevice UNMAPPED +sqlstore.Container.GetFirstDevice UNMAPPED +sqlstore.Container.NewDevice UNMAPPED +sqlstore.Container.PutDevice UNMAPPED +sqlstore.Container.Upgrade UNMAPPED +sqlstore.ErrDeviceIDMustBeSet UNMAPPED +sqlstore.ErrInvalidLength UNMAPPED +sqlstore.New UNMAPPED +sqlstore.NewCachedLIDMap UNMAPPED +sqlstore.NewSQLStore UNMAPPED +sqlstore.NewWithDB UNMAPPED +sqlstore.NewWithWrappedDB UNMAPPED +sqlstore.PostgresArrayWrapper UNMAPPED +sqlstore.SQLStore UNMAPPED +sqlstore.SQLStore.AddOutgoingEvent UNMAPPED +sqlstore.SQLStore.ClearBufferedEventPlaintext UNMAPPED +sqlstore.SQLStore.DeleteAllIdentities UNMAPPED +sqlstore.SQLStore.DeleteAllSessions UNMAPPED +sqlstore.SQLStore.DeleteAppStateMutationMACs UNMAPPED +sqlstore.SQLStore.DeleteAppStateVersion UNMAPPED +sqlstore.SQLStore.DeleteExpiredPrivacyTokens UNMAPPED +sqlstore.SQLStore.DeleteIdentity UNMAPPED +sqlstore.SQLStore.DeleteNCTSalt UNMAPPED +sqlstore.SQLStore.DeleteOldBufferedHashes UNMAPPED +sqlstore.SQLStore.DeleteOldOutgoingEvents UNMAPPED +sqlstore.SQLStore.DeleteSession UNMAPPED +sqlstore.SQLStore.DoDecryptionTxn UNMAPPED +sqlstore.SQLStore.GenOnePreKey UNMAPPED +sqlstore.SQLStore.GetAllAppStateSyncKeys UNMAPPED +sqlstore.SQLStore.GetAllContacts UNMAPPED +sqlstore.SQLStore.GetAppStateMutationMAC UNMAPPED +sqlstore.SQLStore.GetAppStateSyncKey UNMAPPED +sqlstore.SQLStore.GetAppStateVersion UNMAPPED +sqlstore.SQLStore.GetBufferedEvent UNMAPPED +sqlstore.SQLStore.GetChatSettings UNMAPPED +sqlstore.SQLStore.GetContact UNMAPPED +sqlstore.SQLStore.GetLatestAppStateSyncKeyID UNMAPPED +sqlstore.SQLStore.GetManySessions UNMAPPED +sqlstore.SQLStore.GetMessageSecret UNMAPPED +sqlstore.SQLStore.GetNCTSalt UNMAPPED +sqlstore.SQLStore.GetOrGenPreKeys UNMAPPED +sqlstore.SQLStore.GetOutgoingEvent UNMAPPED +sqlstore.SQLStore.GetPreKey UNMAPPED +sqlstore.SQLStore.GetPrivacyToken UNMAPPED +sqlstore.SQLStore.GetSenderKey UNMAPPED +sqlstore.SQLStore.GetSession UNMAPPED +sqlstore.SQLStore.GetWASARootSecretID UNMAPPED +sqlstore.SQLStore.HasSession UNMAPPED +sqlstore.SQLStore.IsTrustedIdentity UNMAPPED +sqlstore.SQLStore.MarkPreKeysAsUploaded UNMAPPED +sqlstore.SQLStore.MigratePNToLID UNMAPPED +sqlstore.SQLStore.PutAllContactNames UNMAPPED +sqlstore.SQLStore.PutAppStateMutationMACs UNMAPPED +sqlstore.SQLStore.PutAppStateSyncKey UNMAPPED +sqlstore.SQLStore.PutAppStateVersion UNMAPPED +sqlstore.SQLStore.PutArchived UNMAPPED +sqlstore.SQLStore.PutBufferedEvent UNMAPPED +sqlstore.SQLStore.PutBusinessName UNMAPPED +sqlstore.SQLStore.PutContactName UNMAPPED +sqlstore.SQLStore.PutIdentity UNMAPPED +sqlstore.SQLStore.PutManyRedactedPhones UNMAPPED +sqlstore.SQLStore.PutManySessions UNMAPPED +sqlstore.SQLStore.PutMessageSecret UNMAPPED +sqlstore.SQLStore.PutMessageSecrets UNMAPPED +sqlstore.SQLStore.PutMutedUntil UNMAPPED +sqlstore.SQLStore.PutNCTSalt UNMAPPED +sqlstore.SQLStore.PutPinned UNMAPPED +sqlstore.SQLStore.PutPrivacyTokens UNMAPPED +sqlstore.SQLStore.PutPushName UNMAPPED +sqlstore.SQLStore.PutSenderKey UNMAPPED +sqlstore.SQLStore.PutSession UNMAPPED +sqlstore.SQLStore.PutWASARootSecretID UNMAPPED +sqlstore.SQLStore.RemovePreKey UNMAPPED +sqlstore.SQLStore.UploadedPreKeyCount UNMAPPED +store.AllGlobalStores UNMAPPED +store.AllSessionSpecificStores UNMAPPED +store.AllStores UNMAPPED +store.AppStateMutationMAC detz::wa::WaStorePort app_state_value_mac row (src/whatsapp/wa_client.h; bytes, no struct) +store.AppStateStore detz::wa::WaStorePort app_state_version/value_mac methods (src/whatsapp/wa_client.h; subset) +store.AppStateSyncKey detz::wa::WaAppStateKey (src/whatsapp/wa_proto.h) +store.AppStateSyncKeyStore detz::wa::WaStorePort put_app_key/app_key_data (src/whatsapp/wa_client.h) +store.BaseClientPayload UNMAPPED +store.BufferedEvent UNMAPPED +store.ChatSettingsStore UNMAPPED +store.ContactEntry detz::wa::WaStore contact row (src/whatsapp/wa_store.h; jid+name pair, no struct) +store.ContactEntry.GetMassInsertValues UNMAPPED +store.ContactStore detz::wa::WaStorePort contacts/put_contact/remove_contact (src/whatsapp/wa_client.h; subset) +store.Device detz::wa::WaDevice (src/whatsapp/wa_device.h; identity subset, no trust/LID/sender-key tables) +store.Device.ContainsPreKey UNMAPPED +store.Device.ContainsSession UNMAPPED +store.Device.ContainsSignedPreKey UNMAPPED +store.Device.Delete detz::wa::WaStore::clear_device (src/whatsapp/wa_store.h; deletes device rows) +store.Device.DeleteAllSessions UNMAPPED +store.Device.DeleteSession UNMAPPED +store.Device.GetAltJID UNMAPPED +store.Device.GetClientPayload detz::wa::WaDevice::client_payload (src/whatsapp/wa_device.h) +store.Device.GetIdentityKeyPair detz::wa::WaDevice::identity_key (src/whatsapp/wa_device.h; field) +store.Device.GetJID detz::wa::WaDevice::jid (src/whatsapp/wa_device.h; field) +store.Device.GetLID detz::wa::WaDevice::lid (src/whatsapp/wa_device.h; field) +store.Device.GetLocalRegistrationID detz::wa::WaDevice::registration_id (src/whatsapp/wa_device.h; field) +store.Device.GetSubDeviceSessions UNMAPPED +store.Device.IsTrustedIdentity UNMAPPED +store.Device.LoadPreKey detz::wa::WaStore::get_prekey (src/whatsapp/wa_store.h) +store.Device.LoadSenderKey UNMAPPED +store.Device.LoadSession detz::wa::WaStore::load_session (src/whatsapp/wa_store.h) +store.Device.LoadSignedPreKey detz::wa::WaDevice::signed_pre_key (src/whatsapp/wa_device.h; field, via load_device) +store.Device.LoadSignedPreKeys UNMAPPED +store.Device.PutCachedSessions UNMAPPED +store.Device.RemovePreKey UNMAPPED +store.Device.RemoveSignedPreKey UNMAPPED +store.Device.Save detz::wa::WaStore::save_device (src/whatsapp/wa_store.h) +store.Device.SaveIdentity UNMAPPED +store.Device.SetAllStores UNMAPPED +store.Device.StorePreKey detz::wa::WaStore::put_prekey (src/whatsapp/wa_store.h) +store.Device.StoreSenderKey UNMAPPED +store.Device.StoreSession detz::wa::WaStore::save_session (src/whatsapp/wa_store.h) +store.Device.StoreSignedPreKey detz::wa::WaDevice::signed_pre_key + save_device (src/whatsapp/wa_device.h; field persisted in blob) +store.Device.WithCachedSessions UNMAPPED +store.DeviceContainer UNMAPPED +store.DeviceProps detz::wa::WaDeviceProps (src/whatsapp/wa_proto.h) +store.ErrDeviceDeleted UNMAPPED +store.EventBuffer UNMAPPED +store.GetWAVersion detz::wa::WaConsts::kClientVersion (src/whatsapp/wa_consts.h; const value, no accessor) +store.IdentityStore UNMAPPED +store.LIDMapping UNMAPPED +store.LIDMapping.GetMassInsertValues UNMAPPED +store.LIDStore UNMAPPED +store.MessageSecretInsert UNMAPPED +store.MsgSecretStore UNMAPPED +store.MutedForever UNMAPPED +store.NCTSaltStore UNMAPPED +store.NoopDevice UNMAPPED +store.NoopStore UNMAPPED +store.NoopStore.AddOutgoingEvent UNMAPPED +store.NoopStore.ClearBufferedEventPlaintext UNMAPPED +store.NoopStore.DeleteAllIdentities UNMAPPED +store.NoopStore.DeleteAllSessions UNMAPPED +store.NoopStore.DeleteAppStateMutationMACs UNMAPPED +store.NoopStore.DeleteAppStateVersion UNMAPPED +store.NoopStore.DeleteDevice UNMAPPED +store.NoopStore.DeleteExpiredPrivacyTokens UNMAPPED +store.NoopStore.DeleteIdentity UNMAPPED +store.NoopStore.DeleteNCTSalt UNMAPPED +store.NoopStore.DeleteOldBufferedHashes UNMAPPED +store.NoopStore.DeleteOldOutgoingEvents UNMAPPED +store.NoopStore.DeleteSession UNMAPPED +store.NoopStore.DoDecryptionTxn UNMAPPED +store.NoopStore.GenOnePreKey UNMAPPED +store.NoopStore.GetAllAppStateSyncKeys UNMAPPED +store.NoopStore.GetAllContacts UNMAPPED +store.NoopStore.GetAppStateMutationMAC UNMAPPED +store.NoopStore.GetAppStateSyncKey UNMAPPED +store.NoopStore.GetAppStateVersion UNMAPPED +store.NoopStore.GetBufferedEvent UNMAPPED +store.NoopStore.GetChatSettings UNMAPPED +store.NoopStore.GetContact UNMAPPED +store.NoopStore.GetLIDForPN UNMAPPED +store.NoopStore.GetLatestAppStateSyncKeyID UNMAPPED +store.NoopStore.GetManyLIDsForPNs UNMAPPED +store.NoopStore.GetManySessions UNMAPPED +store.NoopStore.GetMessageSecret UNMAPPED +store.NoopStore.GetNCTSalt UNMAPPED +store.NoopStore.GetOrGenPreKeys UNMAPPED +store.NoopStore.GetOutgoingEvent UNMAPPED +store.NoopStore.GetPNForLID UNMAPPED +store.NoopStore.GetPreKey UNMAPPED +store.NoopStore.GetPrivacyToken UNMAPPED +store.NoopStore.GetSenderKey UNMAPPED +store.NoopStore.GetSession UNMAPPED +store.NoopStore.GetWASARootSecretID UNMAPPED +store.NoopStore.HasSession UNMAPPED +store.NoopStore.IsTrustedIdentity UNMAPPED +store.NoopStore.MarkPreKeysAsUploaded UNMAPPED +store.NoopStore.MigratePNToLID UNMAPPED +store.NoopStore.PutAllContactNames UNMAPPED +store.NoopStore.PutAppStateMutationMACs UNMAPPED +store.NoopStore.PutAppStateSyncKey UNMAPPED +store.NoopStore.PutAppStateVersion UNMAPPED +store.NoopStore.PutArchived UNMAPPED +store.NoopStore.PutBufferedEvent UNMAPPED +store.NoopStore.PutBusinessName UNMAPPED +store.NoopStore.PutContactName UNMAPPED +store.NoopStore.PutDevice UNMAPPED +store.NoopStore.PutIdentity UNMAPPED +store.NoopStore.PutLIDMapping UNMAPPED +store.NoopStore.PutManyLIDMappings UNMAPPED +store.NoopStore.PutManyRedactedPhones UNMAPPED +store.NoopStore.PutManySessions UNMAPPED +store.NoopStore.PutMessageSecret UNMAPPED +store.NoopStore.PutMessageSecrets UNMAPPED +store.NoopStore.PutMutedUntil UNMAPPED +store.NoopStore.PutNCTSalt UNMAPPED +store.NoopStore.PutPinned UNMAPPED +store.NoopStore.PutPrivacyTokens UNMAPPED +store.NoopStore.PutPushName UNMAPPED +store.NoopStore.PutSenderKey UNMAPPED +store.NoopStore.PutSession UNMAPPED +store.NoopStore.PutWASARootSecretID UNMAPPED +store.NoopStore.RemovePreKey UNMAPPED +store.NoopStore.UploadedPreKeyCount UNMAPPED +store.ParseVersion UNMAPPED +store.PreKeyStore detz::wa::WaStorePort put_prekey/get_prekey (src/whatsapp/wa_client.h) +store.PrivacyToken UNMAPPED +store.PrivacyTokenStore UNMAPPED +store.RedactedPhoneEntry UNMAPPED +store.RedactedPhoneEntry.GetMassInsertValues UNMAPPED +store.SenderKeyStore UNMAPPED +store.SessionStore detz::wa::WaStorePort save_session/load_session (src/whatsapp/wa_client.h) +store.SetOSInfo UNMAPPED +store.SetWAVersion UNMAPPED +store.SignalProtobufSerializer UNMAPPED +store.WAVersionContainer detz::wa::WaAppVersion (src/whatsapp/wa_proto.h) +store.WAVersionContainer.Hash detz::wa::version_hash (src/whatsapp/wa_device.cpp; file-local MD5 of version string) +store.WAVersionContainer.IsZero UNMAPPED +store.WAVersionContainer.LessThan UNMAPPED +store.WAVersionContainer.ProtoAppVersion UNMAPPED +store.WAVersionContainer.String UNMAPPED +token.DoubleByteTokens UNMAPPED +token.SingleByteTokens UNMAPPED +types.AddressingMode UNMAPPED +types.AddressingModeLID UNMAPPED +types.AddressingModePN UNMAPPED +types.AllowedCredential UNMAPPED +types.BasicCallMeta UNMAPPED +types.Blocklist UNMAPPED +types.Blocklist.IsBlocked UNMAPPED +types.Blocklist.LIDs UNMAPPED +types.BlocklistItem UNMAPPED +types.BotEditType UNMAPPED +types.BotJIDMap UNMAPPED +types.BotListInfo UNMAPPED +types.BotProfileCommand UNMAPPED +types.BotProfileInfo UNMAPPED +types.BotServer UNMAPPED +types.BroadcastRecipient UNMAPPED +types.BroadcastServer UNMAPPED +types.BroadcastServerJID UNMAPPED +types.BusinessHoursConfig UNMAPPED +types.BusinessMessageLinkTarget UNMAPPED +types.BusinessProfile UNMAPPED +types.CallRemoteMeta UNMAPPED +types.Category UNMAPPED +types.ChatPresence UNMAPPED +types.ChatPresenceComposing UNMAPPED +types.ChatPresenceMedia UNMAPPED +types.ChatPresenceMediaAudio UNMAPPED +types.ChatPresenceMediaText UNMAPPED +types.ChatPresencePaused UNMAPPED +types.ContactInfo UNMAPPED +types.ContactQRLinkTarget UNMAPPED +types.DefaultUserServer detz::wa::WaConsts::kServerJid (src/whatsapp/wa_consts.h) +types.DeviceSentMeta detz::wa::WaMessage::DeviceSent (src/whatsapp/wa_proto.h) +types.EditAttribute UNMAPPED +types.EditAttributeAdminEdit UNMAPPED +types.EditAttributeAdminRevoke UNMAPPED +types.EditAttributeEmpty UNMAPPED +types.EditAttributeMessageEdit UNMAPPED +types.EditAttributePinInChat UNMAPPED +types.EditAttributeSenderRevoke UNMAPPED +types.EditTypeFirst UNMAPPED +types.EditTypeFull UNMAPPED +types.EditTypeInner UNMAPPED +types.EditTypeLast UNMAPPED +types.EmptyJID UNMAPPED +types.GraphQLError UNMAPPED +types.GraphQLError.Error UNMAPPED +types.GraphQLErrorExtensions UNMAPPED +types.GraphQLErrors UNMAPPED +types.GraphQLErrors.Error UNMAPPED +types.GraphQLErrors.Unwrap UNMAPPED +types.GraphQLResponse UNMAPPED +types.GroupAnnounce UNMAPPED +types.GroupDelete UNMAPPED +types.GroupEphemeral UNMAPPED +types.GroupIncognito UNMAPPED +types.GroupInfo UNMAPPED +types.GroupIsDefaultSub UNMAPPED +types.GroupLinkChange UNMAPPED +types.GroupLinkChangeType UNMAPPED +types.GroupLinkChangeTypeParent UNMAPPED +types.GroupLinkChangeTypeSibling UNMAPPED +types.GroupLinkChangeTypeSub UNMAPPED +types.GroupLinkTarget UNMAPPED +types.GroupLinkedParent UNMAPPED +types.GroupLocked UNMAPPED +types.GroupMemberAddMode UNMAPPED +types.GroupMemberAddModeAdmin UNMAPPED +types.GroupMemberAddModeAllMember UNMAPPED +types.GroupMembershipApprovalMode UNMAPPED +types.GroupName UNMAPPED +types.GroupParent UNMAPPED +types.GroupParticipant UNMAPPED +types.GroupParticipantAddRequest UNMAPPED +types.GroupParticipantRequest UNMAPPED +types.GroupServer detz::wa::WaConsts::kGroupServer (src/whatsapp/wa_consts.h) +types.GroupServerJID detz::wa::WaConsts::kGroupServer (src/whatsapp/wa_consts.h; server part) +types.GroupTopic UNMAPPED +types.GroupUnlinkReason UNMAPPED +types.GroupUnlinkReasonDefault UNMAPPED +types.GroupUnlinkReasonDelete UNMAPPED +types.HiddenUserServer detz::wa::WaConsts::kLidServer (src/whatsapp/wa_consts.h) +types.HostedDomain UNMAPPED +types.HostedLIDDomain UNMAPPED +types.HostedLIDServer UNMAPPED +types.HostedServer UNMAPPED +types.InteropServer UNMAPPED +types.IsOnWhatsAppResponse UNMAPPED +types.JID UNMAPPED +types.JID.ADString UNMAPPED +types.JID.ActualAgent UNMAPPED +types.JID.IsBot UNMAPPED +types.JID.IsBroadcastList UNMAPPED +types.JID.IsEmpty UNMAPPED +types.JID.IsZero UNMAPPED +types.JID.MarshalText UNMAPPED +types.JID.Scan UNMAPPED +types.JID.SignalAddress UNMAPPED +types.JID.SignalAddressUser UNMAPPED +types.JID.String UNMAPPED +types.JID.ToNonAD UNMAPPED +types.JID.UnmarshalText UNMAPPED +types.JID.UserInt UNMAPPED +types.JID.Value UNMAPPED +types.LIDDomain UNMAPPED +types.LegacyPSAJID UNMAPPED +types.LegacyUserServer UNMAPPED +types.LocalChatSettings UNMAPPED +types.MessageID UNMAPPED +types.MessageInfo UNMAPPED +types.MessageServerID UNMAPPED +types.MessageSource UNMAPPED +types.MessageSource.IsIncomingBroadcast UNMAPPED +types.MessageSource.SourceString UNMAPPED +types.MessengerServer UNMAPPED +types.MetaAIJID UNMAPPED +types.MsgBotInfo UNMAPPED +types.MsgMetaInfo UNMAPPED +types.MuseJID UNMAPPED +types.NewADJID UNMAPPED +types.NewJID UNMAPPED +types.NewMetaAIJID UNMAPPED +types.NewsletterKeyType UNMAPPED +types.NewsletterKeyTypeInvite UNMAPPED +types.NewsletterKeyTypeJID UNMAPPED +types.NewsletterMessage UNMAPPED +types.NewsletterMetadata UNMAPPED +types.NewsletterMuteOff UNMAPPED +types.NewsletterMuteOn UNMAPPED +types.NewsletterMuteState UNMAPPED +types.NewsletterMuteState.UnmarshalText UNMAPPED +types.NewsletterMuted UNMAPPED +types.NewsletterPrivacy UNMAPPED +types.NewsletterPrivacy.UnmarshalText UNMAPPED +types.NewsletterPrivacyPrivate UNMAPPED +types.NewsletterPrivacyPublic UNMAPPED +types.NewsletterReactionSettings UNMAPPED +types.NewsletterReactionsMode UNMAPPED +types.NewsletterReactionsModeAll UNMAPPED +types.NewsletterReactionsModeBasic UNMAPPED +types.NewsletterReactionsModeBlocklist UNMAPPED +types.NewsletterReactionsModeNone UNMAPPED +types.NewsletterRole UNMAPPED +types.NewsletterRole.UnmarshalText UNMAPPED +types.NewsletterRoleAdmin UNMAPPED +types.NewsletterRoleGuest UNMAPPED +types.NewsletterRoleOwner UNMAPPED +types.NewsletterRoleSubscriber UNMAPPED +types.NewsletterServer UNMAPPED +types.NewsletterSettings UNMAPPED +types.NewsletterState UNMAPPED +types.NewsletterState.UnmarshalText UNMAPPED +types.NewsletterStateActive UNMAPPED +types.NewsletterStateGeoSuspended UNMAPPED +types.NewsletterStateSuspended UNMAPPED +types.NewsletterText UNMAPPED +types.NewsletterThreadMetadata UNMAPPED +types.NewsletterVerificationState UNMAPPED +types.NewsletterVerificationState.UnmarshalText UNMAPPED +types.NewsletterVerificationStateUnverified UNMAPPED +types.NewsletterVerificationStateVerified UNMAPPED +types.NewsletterViewerMetadata UNMAPPED +types.OfficialBusinessJID UNMAPPED +types.OrderDetails UNMAPPED +types.OrderPrice UNMAPPED +types.OrderProduct UNMAPPED +types.PSAJID UNMAPPED +types.ParseJID UNMAPPED +types.Presence UNMAPPED +types.PresenceAvailable UNMAPPED +types.PresenceUnavailable UNMAPPED +types.PrivacySetting UNMAPPED +types.PrivacySettingAll UNMAPPED +types.PrivacySettingContactAllowlist UNMAPPED +types.PrivacySettingContactBlacklist UNMAPPED +types.PrivacySettingContacts UNMAPPED +types.PrivacySettingKnown UNMAPPED +types.PrivacySettingMatchLastSeen UNMAPPED +types.PrivacySettingNone UNMAPPED +types.PrivacySettingOff UNMAPPED +types.PrivacySettingOnStandard UNMAPPED +types.PrivacySettingType UNMAPPED +types.PrivacySettingTypeCallAdd UNMAPPED +types.PrivacySettingTypeDefense UNMAPPED +types.PrivacySettingTypeGroupAdd UNMAPPED +types.PrivacySettingTypeLastSeen UNMAPPED +types.PrivacySettingTypeMessages UNMAPPED +types.PrivacySettingTypeOnline UNMAPPED +types.PrivacySettingTypeProfile UNMAPPED +types.PrivacySettingTypeReadReceipts UNMAPPED +types.PrivacySettingTypeStatus UNMAPPED +types.PrivacySettingTypeStickers UNMAPPED +types.PrivacySettingUndefined UNMAPPED +types.PrivacySettings UNMAPPED +types.ProfilePictureInfo UNMAPPED +types.ReceiptType UNMAPPED +types.ReceiptType.GoString UNMAPPED +types.ReceiptTypeDelivered UNMAPPED +types.ReceiptTypeHistorySync UNMAPPED +types.ReceiptTypeInactive UNMAPPED +types.ReceiptTypePeerMsg UNMAPPED +types.ReceiptTypePlayed UNMAPPED +types.ReceiptTypePlayedSelf UNMAPPED +types.ReceiptTypeRead UNMAPPED +types.ReceiptTypeReadSelf UNMAPPED +types.ReceiptTypeRetry UNMAPPED +types.ReceiptTypeSender UNMAPPED +types.ReceiptTypeServerError UNMAPPED +types.ServerJID detz::wa::WaConsts::kServerJid (src/whatsapp/wa_consts.h) +types.SetStatusEmoji UNMAPPED +types.SetStatusInput UNMAPPED +types.StatusBroadcastJID UNMAPPED +types.StatusPrivacy UNMAPPED +types.StatusPrivacyType UNMAPPED +types.StatusPrivacyTypeBlacklist UNMAPPED +types.StatusPrivacyTypeContacts UNMAPPED +types.StatusPrivacyTypeWhitelist UNMAPPED +types.StickerPack UNMAPPED +types.StickerPackItem UNMAPPED +types.StickerPackItem.GetDirectPath UNMAPPED +types.StickerPackItem.GetFileEncSHA256 UNMAPPED +types.StickerPackItem.GetFileSHA256 UNMAPPED +types.StickerPackItem.GetFileSizeBytes UNMAPPED +types.StickerPackItem.GetMediaKey UNMAPPED +types.UserInfo UNMAPPED +types.VariantInfo UNMAPPED +types.VerifiedName UNMAPPED +types.WebAuthnPublicKey UNMAPPED +types.WebAuthnResponse UNMAPPED +types.WebAuthnResponseData UNMAPPED +types.WhatsAppDomain UNMAPPED +types.WrappedNewsletterState UNMAPPED +upgrades.Table UNMAPPED +waAICommon.BotCapabilityMetadata UNMAPPED +waAICommon.BotMetadata UNMAPPED +waAdv.ADVDeviceIdentity detz::wa::WaADVDeviceIdentity (src/whatsapp/wa_proto.h) +waAdv.ADVSignedDeviceIdentity detz::wa::WaADVSignedDeviceIdentity (src/whatsapp/wa_proto.h) +waAdv.ADVSignedDeviceIdentityHMAC detz::wa::WaADVSignedDeviceIdentityHMAC (src/whatsapp/wa_proto.h) +waArmadilloApplication.Armadillo UNMAPPED +waArmadilloApplication.Armadillo.IsMessageApplicationSub UNMAPPED +waArmadilloApplication.Armadillo_Content_ImageGalleryMessage.Decode UNMAPPED +waArmadilloApplication.Armadillo_Content_ImageGalleryMessage.Set UNMAPPED +waArmadilloApplication.Armadillo_Content_RavenMessage.DecodeImageMessage UNMAPPED +waArmadilloApplication.Armadillo_Content_RavenMessage.DecodeVideoMessage UNMAPPED +waArmadilloApplication.Armadillo_Content_RavenMessage.SetImageMessage UNMAPPED +waArmadilloApplication.Armadillo_Content_RavenMessage.SetVideoMessage UNMAPPED +waArmadilloApplication.RavenImageTransportVersion UNMAPPED +waArmadilloApplication.RavenVideoTransportVersion UNMAPPED +waCert.CertChain UNMAPPED +waCert.CertChain_NoiseCertificate_Details UNMAPPED +waCommon.MessageKey UNMAPPED +waCommon.SubProtocol UNMAPPED +waCompanionReg.ClientPairingProps UNMAPPED +waCompanionReg.CompanionCommitment UNMAPPED +waCompanionReg.CompanionEphemeralIdentity UNMAPPED +waCompanionReg.DeviceProps detz::wa::WaDeviceProps (src/whatsapp/wa_proto.h) +waCompanionReg.DeviceProps_AppVersion UNMAPPED +waCompanionReg.DeviceProps_HistorySyncConfig detz::wa::WaDeviceProps::history_sync_config (src/whatsapp/wa_proto.h; field) +waCompanionReg.EncryptedPairingRequest UNMAPPED +waCompanionReg.PairingRequest UNMAPPED +waCompanionReg.PrimaryEphemeralIdentity UNMAPPED +waCompanionReg.ProloguePayload UNMAPPED +waConsumerApplication.AudioTransportVersion UNMAPPED +waConsumerApplication.ConsumerApplication UNMAPPED +waConsumerApplication.ConsumerApplication.IsMessageApplicationSub UNMAPPED +waConsumerApplication.ConsumerApplication_AudioMessage.Decode UNMAPPED +waConsumerApplication.ConsumerApplication_AudioMessage.Set UNMAPPED +waConsumerApplication.ConsumerApplication_ContactMessage.Decode UNMAPPED +waConsumerApplication.ConsumerApplication_ContactMessage.Set UNMAPPED +waConsumerApplication.ConsumerApplication_Content_Content UNMAPPED +waConsumerApplication.ConsumerApplication_DocumentMessage.Decode UNMAPPED +waConsumerApplication.ConsumerApplication_DocumentMessage.Set UNMAPPED +waConsumerApplication.ConsumerApplication_ExtendedTextMessage.DecodeThumbnail UNMAPPED +waConsumerApplication.ConsumerApplication_ExtendedTextMessage.SetThumbnail UNMAPPED +waConsumerApplication.ConsumerApplication_ImageMessage.Decode UNMAPPED +waConsumerApplication.ConsumerApplication_ImageMessage.Set UNMAPPED +waConsumerApplication.ConsumerApplication_StickerMessage.Decode UNMAPPED +waConsumerApplication.ConsumerApplication_StickerMessage.Set UNMAPPED +waConsumerApplication.ConsumerApplication_VideoMessage.Decode UNMAPPED +waConsumerApplication.ConsumerApplication_VideoMessage.Set UNMAPPED +waConsumerApplication.ContactTransportVersion UNMAPPED +waConsumerApplication.DocumentTransportVersion UNMAPPED +waConsumerApplication.ImageTransportVersion UNMAPPED +waConsumerApplication.StickerTransportVersion UNMAPPED +waConsumerApplication.VideoTransportVersion UNMAPPED +waE2E.AppStateFatalExceptionNotification UNMAPPED +waE2E.AppStateSyncKeyId UNMAPPED +waE2E.AppStateSyncKeyRequest detz::wa::encode_app_state_key_request (src/whatsapp/wa_proto.h; encode-only) +waE2E.AppStateSyncKeyShare detz::wa::WaProtocolMessage::key_share (src/whatsapp/wa_proto.h; field) +waE2E.AudioMessage UNMAPPED +waE2E.DeviceSentMessage detz::wa::WaMessage::DeviceSent (src/whatsapp/wa_proto.h) +waE2E.DocumentMessage UNMAPPED +waE2E.EncCommentMessage UNMAPPED +waE2E.EncReactionMessage UNMAPPED +waE2E.ExtendedTextMessage detz::wa::WaMessage::ext_text (src/whatsapp/wa_proto.h; field) +waE2E.FutureProofMessage UNMAPPED +waE2E.HistorySyncNotification UNMAPPED +waE2E.ImageMessage detz::wa::WaMessage::Image (src/whatsapp/wa_proto.h) +waE2E.Message detz::wa::WaMessage (src/whatsapp/wa_proto.h; conversation/ext_text/image/deviceSent subset) +waE2E.MessageContextInfo UNMAPPED +waE2E.MessageSecretMessage UNMAPPED +waE2E.PeerDataOperationRequestMessage UNMAPPED +waE2E.PeerDataOperationRequestMessage_HistorySyncOnDemandRequest UNMAPPED +waE2E.PeerDataOperationRequestMessage_PlaceholderMessageResendRequest UNMAPPED +waE2E.PeerDataOperationRequestMessage_SyncDCollectionFatalRecoveryRequest UNMAPPED +waE2E.PeerDataOperationRequestResponseMessage UNMAPPED +waE2E.PeerDataOperationRequestResponseMessage_PeerDataOperationResult UNMAPPED +waE2E.PeerDataOperationRequestResponseMessage_PeerDataOperationResult_SyncDSnapshotFatalRecoveryResponse UNMAPPED +waE2E.PollCreationMessage UNMAPPED +waE2E.PollCreationMessage_Option UNMAPPED +waE2E.PollEncValue UNMAPPED +waE2E.PollUpdateMessage UNMAPPED +waE2E.PollVoteMessage UNMAPPED +waE2E.ProtocolMessage detz::wa::WaProtocolMessage (src/whatsapp/wa_proto.h; key-share subset) +waE2E.ReactionMessage UNMAPPED +waE2E.SecretEncryptedMessage UNMAPPED +waE2E.SenderKeyDistributionMessage UNMAPPED +waE2E.StickerMessage UNMAPPED +waE2E.StickerPackMessage UNMAPPED +waE2E.VideoMessage UNMAPPED +waHistorySync.Conversation UNMAPPED +waHistorySync.GlobalSettings UNMAPPED +waHistorySync.HistorySync UNMAPPED +waHistorySync.PhoneNumberToLIDMapping UNMAPPED +waHistorySync.Pushname UNMAPPED +waHistorySync.StickerMetadata UNMAPPED +waLidMigrationSyncPayload.LIDMigrationMappingSyncPayload UNMAPPED +waLog.Logger UNMAPPED +waLog.Noop UNMAPPED +waLog.Stdout UNMAPPED +waLog.Zerolog UNMAPPED +waLog.noopLogger.Debugf UNMAPPED +waLog.noopLogger.Errorf UNMAPPED +waLog.noopLogger.Infof UNMAPPED +waLog.noopLogger.Sub UNMAPPED +waLog.noopLogger.Warnf UNMAPPED +waLog.stdoutLogger.Debugf UNMAPPED +waLog.stdoutLogger.Errorf UNMAPPED +waLog.stdoutLogger.Infof UNMAPPED +waLog.stdoutLogger.Sub UNMAPPED +waLog.stdoutLogger.Warnf UNMAPPED +waLog.zeroLogger.Debugf UNMAPPED +waLog.zeroLogger.Errorf UNMAPPED +waLog.zeroLogger.Infof UNMAPPED +waLog.zeroLogger.Sub UNMAPPED +waLog.zeroLogger.Warnf UNMAPPED +waMediaTransport.AudioTransport UNMAPPED +waMediaTransport.ContactTransport UNMAPPED +waMediaTransport.DocumentTransport UNMAPPED +waMediaTransport.ImageTransport UNMAPPED +waMediaTransport.StickerTransport UNMAPPED +waMediaTransport.VideoTransport UNMAPPED +waMediaTransport.WAMediaTransport_Integral UNMAPPED +waMmsRetry.MediaRetryNotification UNMAPPED +waMmsRetry.ServerErrorReceipt UNMAPPED +waMsgApplication.ArmadilloApplicationVersion UNMAPPED +waMsgApplication.ConsumerApplicationVersion UNMAPPED +waMsgApplication.MessageApplication UNMAPPED +waMsgApplication.MessageApplication_Metadata UNMAPPED +waMsgApplication.MessageApplication_Payload UNMAPPED +waMsgApplication.MessageApplication_SubProtocolPayload UNMAPPED +waMsgApplication.MessageApplication_SubProtocolPayload_Armadillo.Decode UNMAPPED +waMsgApplication.MessageApplication_SubProtocolPayload_Armadillo.Set UNMAPPED +waMsgApplication.MessageApplication_SubProtocolPayload_ConsumerMessage.Decode UNMAPPED +waMsgApplication.MessageApplication_SubProtocolPayload_ConsumerMessage.Set UNMAPPED +waMsgApplication.MessageApplication_SubProtocolPayload_MultiDevice.Decode UNMAPPED +waMsgApplication.MessageApplication_SubProtocolPayload_MultiDevice.Set UNMAPPED +waMsgApplication.MultiDeviceApplicationVersion UNMAPPED +waMsgTransport.FBMessageApplicationVersion UNMAPPED +waMsgTransport.IGMessageApplicationVersion UNMAPPED +waMsgTransport.MessageTransport UNMAPPED +waMsgTransport.MessageTransport_Payload UNMAPPED +waMsgTransport.MessageTransport_Payload.DecodeFB UNMAPPED +waMsgTransport.MessageTransport_Payload.DecodeIG UNMAPPED +waMsgTransport.MessageTransport_Protocol UNMAPPED +waMsgTransport.MessageTransport_Protocol_Ancillary UNMAPPED +waMsgTransport.MessageTransport_Protocol_Ancillary_BackupDirective UNMAPPED +waMsgTransport.MessageTransport_Protocol_Ancillary_SenderKeyDistributionMessage UNMAPPED +waMsgTransport.MessageTransport_Protocol_Integral UNMAPPED +waMsgTransport.MessageTransport_Protocol_Integral_DeviceSentMessage UNMAPPED +waMultiDevice.MultiDevice UNMAPPED +waMultiDevice.MultiDevice.IsMessageApplicationSub UNMAPPED +waServerSync.ExternalBlobReference detz::wa::WaExternalBlobRef (src/whatsapp/wa_proto.h) +waServerSync.KeyId UNMAPPED +waServerSync.SyncdIndex UNMAPPED +waServerSync.SyncdMutation detz::wa::WaSyncdMutation (src/whatsapp/wa_proto.h) +waServerSync.SyncdMutations detz::wa::parse_syncd_mutations (src/whatsapp/wa_proto.h; parsed to vector, no struct) +waServerSync.SyncdPatch detz::wa::WaSyncdPatch (src/whatsapp/wa_proto.h) +waServerSync.SyncdRecord detz::wa::WaSyncdRecord (src/whatsapp/wa_proto.h) +waServerSync.SyncdSnapshot detz::wa::WaSyncdSnapshot (src/whatsapp/wa_proto.h) +waServerSync.SyncdValue UNMAPPED +waSyncAction.ArchiveChatAction UNMAPPED +waSyncAction.ClearChatAction UNMAPPED +waSyncAction.ContactAction detz::wa::WaSyncActionData contact fields (src/whatsapp/wa_proto.h; folded, no struct) +waSyncAction.DeleteChatAction UNMAPPED +waSyncAction.DeleteMessageForMeAction UNMAPPED +waSyncAction.LabelAssociationAction UNMAPPED +waSyncAction.LabelEditAction UNMAPPED +waSyncAction.MarkChatAsReadAction UNMAPPED +waSyncAction.MuteAction UNMAPPED +waSyncAction.PinAction UNMAPPED +waSyncAction.PushNameSetting UNMAPPED +waSyncAction.StarAction UNMAPPED +waSyncAction.SyncActionData detz::wa::WaSyncActionData (src/whatsapp/wa_proto.h; contact subset) +waSyncAction.SyncActionMessage UNMAPPED +waSyncAction.SyncActionMessageRange UNMAPPED +waSyncAction.SyncActionValue UNMAPPED +waSyncAction.UnarchiveChatsSetting UNMAPPED +waSyncAction.UserStatusMuteAction UNMAPPED +waSyncAction.WASARootSecretAction_RootSecretEntry UNMAPPED +waSyncdSnapshotRecovery.SyncdSnapshotRecovery UNMAPPED +waVnameCert.VerifiedNameCertificate UNMAPPED +waVnameCert.VerifiedNameCertificate_Details UNMAPPED +waWa6.ClientPayload detz::wa::WaClientPayload (src/whatsapp/wa_proto.h) +waWa6.ClientPayload_DevicePairingRegistrationData detz::wa::WaDevicePairingData (src/whatsapp/wa_proto.h) +waWa6.ClientPayload_UserAgent detz::wa::WaUserAgent (src/whatsapp/wa_proto.h) +waWa6.ClientPayload_UserAgent_AppVersion detz::wa::WaAppVersion (src/whatsapp/wa_proto.h) +waWa6.ClientPayload_WebInfo detz::wa::WaClientPayload::web_sub_platform (src/whatsapp/wa_proto.h; field) +waWa6.HandshakeMessage detz::wa::encode_client_hello/encode_client_finish/parse_server_hello (src/whatsapp/wa_proto.h; branch fns, no struct) +waWa6.HandshakeMessage_ClientFinish detz::wa::encode_client_finish (src/whatsapp/wa_proto.h) +waWa6.HandshakeMessage_ClientHello detz::wa::encode_client_hello (src/whatsapp/wa_proto.h) +waWeb.WebMessageInfo UNMAPPED +whatsmeow.APNsPushConfig UNMAPPED +whatsmeow.APNsPushConfig.GetPushConfigAttrs UNMAPPED +whatsmeow.AdvAccountSignaturePrefix detz::wa::kAdvAccountPrefix (src/whatsapp/wa_client.cpp; file-local {6,0}) +whatsmeow.AdvDeviceSignaturePrefix detz::wa::kAdvDevicePrefix (src/whatsapp/wa_client.cpp; file-local {6,1}) +whatsmeow.AdvHostedAccountSignaturePrefix detz::wa::kAdvHostedAccountPrefix (src/whatsapp/wa_client.cpp; file-local {6,5}) +whatsmeow.AdvHostedDeviceSignaturePrefix UNMAPPED +whatsmeow.BuildAppStateRecoveryRequest UNMAPPED +whatsmeow.BuildFatalAppStateExceptionNotification UNMAPPED +whatsmeow.BusinessMessageLinkDirectPrefix UNMAPPED +whatsmeow.BusinessMessageLinkPrefix UNMAPPED +whatsmeow.Client detz::wa::WaClient (src/whatsapp/wa_client.h; connect/pair/login/send/sync subset) +whatsmeow.Client.AcceptTOSNotice UNMAPPED +whatsmeow.Client.AddEventHandler UNMAPPED +whatsmeow.Client.AddEventHandlerWithSuccessStatus UNMAPPED +whatsmeow.Client.BuildEdit UNMAPPED +whatsmeow.Client.BuildHistorySyncRequest UNMAPPED +whatsmeow.Client.BuildMessageKey UNMAPPED +whatsmeow.Client.BuildPollCreation UNMAPPED +whatsmeow.Client.BuildPollVote UNMAPPED +whatsmeow.Client.BuildReaction UNMAPPED +whatsmeow.Client.BuildRevoke UNMAPPED +whatsmeow.Client.BuildUnavailableMessageRequest UNMAPPED +whatsmeow.Client.Connect detz::wa::WaClient::connect (src/whatsapp/wa_client.h) +whatsmeow.Client.ConnectContext UNMAPPED +whatsmeow.Client.CreateGroup UNMAPPED +whatsmeow.Client.CreateNewsletter UNMAPPED +whatsmeow.Client.DecryptComment UNMAPPED +whatsmeow.Client.DecryptPollVote UNMAPPED +whatsmeow.Client.DecryptReaction UNMAPPED +whatsmeow.Client.DecryptSecretEncryptedMessage UNMAPPED +whatsmeow.Client.DeleteMedia UNMAPPED +whatsmeow.Client.Disconnect detz::wa::WaClient::disconnect (src/whatsapp/wa_client.h) +whatsmeow.Client.Download UNMAPPED +whatsmeow.Client.DownloadAny UNMAPPED +whatsmeow.Client.DownloadFB UNMAPPED +whatsmeow.Client.DownloadFBToFile UNMAPPED +whatsmeow.Client.DownloadHistorySync UNMAPPED +whatsmeow.Client.DownloadMediaWithOnlyPath UNMAPPED +whatsmeow.Client.DownloadMediaWithOnlyPathToFile UNMAPPED +whatsmeow.Client.DownloadMediaWithPath detz::wa::WaMedia::download (src/whatsapp/wa_media.h) +whatsmeow.Client.DownloadMediaWithPathToFile UNMAPPED +whatsmeow.Client.DownloadThumbnail UNMAPPED +whatsmeow.Client.DownloadToFile UNMAPPED +whatsmeow.Client.EncryptComment UNMAPPED +whatsmeow.Client.EncryptPollVote UNMAPPED +whatsmeow.Client.EncryptReaction UNMAPPED +whatsmeow.Client.FetchAppState detz::wa::WaAppStateSync::sync (src/whatsapp/wa_appstate.h; fetch path) +whatsmeow.Client.FetchStickerPack UNMAPPED +whatsmeow.Client.FollowNewsletter UNMAPPED +whatsmeow.Client.GenerateMessageID UNMAPPED +whatsmeow.Client.GetBlocklist UNMAPPED +whatsmeow.Client.GetBotListV2 UNMAPPED +whatsmeow.Client.GetBotProfiles UNMAPPED +whatsmeow.Client.GetBusinessProfile UNMAPPED +whatsmeow.Client.GetContactQRLink UNMAPPED +whatsmeow.Client.GetGroupInfo UNMAPPED +whatsmeow.Client.GetGroupInfoFromInvite UNMAPPED +whatsmeow.Client.GetGroupInfoFromLink UNMAPPED +whatsmeow.Client.GetGroupInviteLink UNMAPPED +whatsmeow.Client.GetGroupRequestParticipants UNMAPPED +whatsmeow.Client.GetJoinedGroups UNMAPPED +whatsmeow.Client.GetLinkedGroupsParticipants UNMAPPED +whatsmeow.Client.GetNewsletterInfo UNMAPPED +whatsmeow.Client.GetNewsletterInfoWithInvite UNMAPPED +whatsmeow.Client.GetNewsletterMessageUpdates UNMAPPED +whatsmeow.Client.GetNewsletterMessages UNMAPPED +whatsmeow.Client.GetOrderDetails UNMAPPED +whatsmeow.Client.GetPrivacySettings UNMAPPED +whatsmeow.Client.GetProfilePictureInfo UNMAPPED +whatsmeow.Client.GetQRChannel detz::wa::WaClient::on_qr + make_qr (src/whatsapp/wa_client.h; callback, not channel) +whatsmeow.Client.GetServerPushNotificationConfig UNMAPPED +whatsmeow.Client.GetStatusPrivacy UNMAPPED +whatsmeow.Client.GetSubGroups UNMAPPED +whatsmeow.Client.GetSubscribedNewsletters UNMAPPED +whatsmeow.Client.GetUserDevices detz::wa::WaClient::usync_devices (src/whatsapp/wa_client.h; device-list subset) +whatsmeow.Client.GetUserDevicesContext UNMAPPED +whatsmeow.Client.GetUserInfo UNMAPPED +whatsmeow.Client.IsConnected detz::wa::WaClient::socket_open (src/whatsapp/wa_client.h; socket-level) +whatsmeow.Client.IsLoggedIn detz::wa::WaClient::logged_in (src/whatsapp/wa_client.h) +whatsmeow.Client.IsOnWhatsApp UNMAPPED +whatsmeow.Client.JoinGroupWithInvite UNMAPPED +whatsmeow.Client.JoinGroupWithLink UNMAPPED +whatsmeow.Client.LeaveGroup UNMAPPED +whatsmeow.Client.LinkGroup UNMAPPED +whatsmeow.Client.Logout UNMAPPED +whatsmeow.Client.MarkNotDirty UNMAPPED +whatsmeow.Client.MarkRead UNMAPPED +whatsmeow.Client.NewsletterMarkViewed UNMAPPED +whatsmeow.Client.NewsletterSendReaction UNMAPPED +whatsmeow.Client.NewsletterSubscribeLiveUpdates UNMAPPED +whatsmeow.Client.NewsletterToggleMute UNMAPPED +whatsmeow.Client.PairPhone UNMAPPED +whatsmeow.Client.ParseWebMessage UNMAPPED +whatsmeow.Client.RegisterForPushNotifications UNMAPPED +whatsmeow.Client.RejectCall UNMAPPED +whatsmeow.Client.RemoveEventHandler UNMAPPED +whatsmeow.Client.RemoveEventHandlers UNMAPPED +whatsmeow.Client.ResetConnection UNMAPPED +whatsmeow.Client.ResolveBusinessMessageLink UNMAPPED +whatsmeow.Client.ResolveContactQRLink UNMAPPED +whatsmeow.Client.RevokeMessage UNMAPPED +whatsmeow.Client.SendAppState UNMAPPED +whatsmeow.Client.SendChatPresence UNMAPPED +whatsmeow.Client.SendFBMessage UNMAPPED +whatsmeow.Client.SendHistorySyncServerErrorReceipt UNMAPPED +whatsmeow.Client.SendMediaRetryReceipt UNMAPPED +whatsmeow.Client.SendMessage detz::wa::WaClient::send_text + send_image (src/whatsapp/wa_client.h; DM text/image subset) +whatsmeow.Client.SendPasskeyConfirmation UNMAPPED +whatsmeow.Client.SendPasskeyResponse UNMAPPED +whatsmeow.Client.SendPeerMessage detz::wa::WaClient::send_peer_message (src/whatsapp/wa_client.h) +whatsmeow.Client.SendPresence UNMAPPED +whatsmeow.Client.SendProtocolMessageReceipt detz::wa::WaClient::send_protocol_receipt (src/whatsapp/wa_client.h; private) +whatsmeow.Client.SetDefaultDisappearingTimer UNMAPPED +whatsmeow.Client.SetDisappearingTimer UNMAPPED +whatsmeow.Client.SetForceActiveDeliveryReceipts UNMAPPED +whatsmeow.Client.SetGroupAnnounce UNMAPPED +whatsmeow.Client.SetGroupDescription UNMAPPED +whatsmeow.Client.SetGroupJoinApprovalMode UNMAPPED +whatsmeow.Client.SetGroupLocked UNMAPPED +whatsmeow.Client.SetGroupMemberAddMode UNMAPPED +whatsmeow.Client.SetGroupName UNMAPPED +whatsmeow.Client.SetGroupPhoto UNMAPPED +whatsmeow.Client.SetGroupTopic UNMAPPED +whatsmeow.Client.SetMaxParallelRetryReceiptHandling UNMAPPED +whatsmeow.Client.SetMediaHTTPClient UNMAPPED +whatsmeow.Client.SetPassive UNMAPPED +whatsmeow.Client.SetPreLoginHTTPClient UNMAPPED +whatsmeow.Client.SetPrivacySetting UNMAPPED +whatsmeow.Client.SetProxy UNMAPPED +whatsmeow.Client.SetProxyAddress UNMAPPED +whatsmeow.Client.SetSOCKSProxy UNMAPPED +whatsmeow.Client.SetStatusMessage UNMAPPED +whatsmeow.Client.SetWebsocketHTTPClient UNMAPPED +whatsmeow.Client.StoreLIDPNMapping UNMAPPED +whatsmeow.Client.SubscribePresence UNMAPPED +whatsmeow.Client.TryFetchPrivacySettings UNMAPPED +whatsmeow.Client.UnfollowNewsletter UNMAPPED +whatsmeow.Client.UnlinkGroup UNMAPPED +whatsmeow.Client.UpdateBlocklist UNMAPPED +whatsmeow.Client.UpdateGroupParticipants UNMAPPED +whatsmeow.Client.UpdateGroupRequestParticipants UNMAPPED +whatsmeow.Client.Upload detz::wa::WaMedia::upload via send_image (src/whatsapp/wa_media.h; image path) +whatsmeow.Client.UploadNewsletter UNMAPPED +whatsmeow.Client.UploadNewsletterReader UNMAPPED +whatsmeow.Client.UploadReader UNMAPPED +whatsmeow.Client.WaitForConnection UNMAPPED +whatsmeow.ContactQRLinkDirectPrefix UNMAPPED +whatsmeow.ContactQRLinkPrefix UNMAPPED +whatsmeow.CreateNewsletterParams UNMAPPED +whatsmeow.DecodeFBApplication UNMAPPED +whatsmeow.DecryptMediaRetryNotification UNMAPPED +whatsmeow.DefaultStatusPrivacy UNMAPPED +whatsmeow.DisappearingTimer24Hours UNMAPPED +whatsmeow.DisappearingTimer7Days UNMAPPED +whatsmeow.DisappearingTimer90Days UNMAPPED +whatsmeow.DisappearingTimerOff UNMAPPED +whatsmeow.DisconnectedError UNMAPPED +whatsmeow.DisconnectedError.Error UNMAPPED +whatsmeow.DisconnectedError.Is UNMAPPED +whatsmeow.DownloadHTTPError UNMAPPED +whatsmeow.DownloadHTTPError.Error UNMAPPED +whatsmeow.DownloadHTTPError.Is UNMAPPED +whatsmeow.DownloadableMessage UNMAPPED +whatsmeow.DownloadableThumbnail UNMAPPED +whatsmeow.EditWindow UNMAPPED +whatsmeow.ElementMissingError UNMAPPED +whatsmeow.ElementMissingError.Error UNMAPPED +whatsmeow.EncSecretBotMsg UNMAPPED +whatsmeow.EncSecretComment UNMAPPED +whatsmeow.EncSecretEventEdit UNMAPPED +whatsmeow.EncSecretEventResponse UNMAPPED +whatsmeow.EncSecretMessageEdit UNMAPPED +whatsmeow.EncSecretPollAddOption UNMAPPED +whatsmeow.EncSecretPollEdit UNMAPPED +whatsmeow.EncSecretPollVote UNMAPPED +whatsmeow.EncSecretReaction UNMAPPED +whatsmeow.EncSecretReportToken UNMAPPED +whatsmeow.ErrAlreadyConnected UNMAPPED +whatsmeow.ErrAppStateUpdate UNMAPPED +whatsmeow.ErrBroadcastListUnsupported UNMAPPED +whatsmeow.ErrBusinessMessageLinkNotFound UNMAPPED +whatsmeow.ErrClientIsNil UNMAPPED +whatsmeow.ErrContactQRLinkNotFound UNMAPPED +whatsmeow.ErrEventAlreadyProcessed UNMAPPED +whatsmeow.ErrFileLengthMismatch UNMAPPED +whatsmeow.ErrGroupInviteLinkUnauthorized UNMAPPED +whatsmeow.ErrGroupNotFound UNMAPPED +whatsmeow.ErrIQBadRequest UNMAPPED +whatsmeow.ErrIQDisconnected UNMAPPED +whatsmeow.ErrIQForbidden UNMAPPED +whatsmeow.ErrIQGone UNMAPPED +whatsmeow.ErrIQInternalServerError UNMAPPED +whatsmeow.ErrIQLocked UNMAPPED +whatsmeow.ErrIQNotAcceptable UNMAPPED +whatsmeow.ErrIQNotAllowed UNMAPPED +whatsmeow.ErrIQNotAuthorized UNMAPPED +whatsmeow.ErrIQNotFound UNMAPPED +whatsmeow.ErrIQPartialServerError UNMAPPED +whatsmeow.ErrIQRateOverLimit UNMAPPED +whatsmeow.ErrIQResourceLimit UNMAPPED +whatsmeow.ErrIQServiceUnavailable UNMAPPED +whatsmeow.ErrIQTimedOut UNMAPPED +whatsmeow.ErrInvalidDisappearingTimer UNMAPPED +whatsmeow.ErrInvalidImageFormat UNMAPPED +whatsmeow.ErrInvalidInlineBotID UNMAPPED +whatsmeow.ErrInvalidMediaEncSHA256 UNMAPPED +whatsmeow.ErrInvalidMediaHMAC UNMAPPED +whatsmeow.ErrInvalidMediaSHA256 UNMAPPED +whatsmeow.ErrInvalidUnencryptedMediaSHA256 UNMAPPED +whatsmeow.ErrInviteLinkInvalid UNMAPPED +whatsmeow.ErrInviteLinkRevoked UNMAPPED +whatsmeow.ErrMediaDownloadFailedWith403 UNMAPPED +whatsmeow.ErrMediaDownloadFailedWith404 UNMAPPED +whatsmeow.ErrMediaDownloadFailedWith410 UNMAPPED +whatsmeow.ErrMediaNotAvailableOnPhone UNMAPPED +whatsmeow.ErrMessageTimedOut UNMAPPED +whatsmeow.ErrNoPermissionInGroup UNMAPPED +whatsmeow.ErrNoPrivacyToken UNMAPPED +whatsmeow.ErrNoPushName UNMAPPED +whatsmeow.ErrNoSession UNMAPPED +whatsmeow.ErrNoURLPresent UNMAPPED +whatsmeow.ErrNotConnected UNMAPPED +whatsmeow.ErrNotEncryptedCommentMessage UNMAPPED +whatsmeow.ErrNotEncryptedReactionMessage UNMAPPED +whatsmeow.ErrNotInGroup UNMAPPED +whatsmeow.ErrNotLoggedIn UNMAPPED +whatsmeow.ErrNotPollUpdateMessage UNMAPPED +whatsmeow.ErrNotSecretEncryptedMessage UNMAPPED +whatsmeow.ErrNothingDownloadableFound UNMAPPED +whatsmeow.ErrOriginalMessageSecretNotFound UNMAPPED +whatsmeow.ErrPairInvalidDeviceIdentityHMAC UNMAPPED +whatsmeow.ErrPairInvalidDeviceSignature UNMAPPED +whatsmeow.ErrPairRejectedLocally UNMAPPED +whatsmeow.ErrPhoneNumberIsNotInternational UNMAPPED +whatsmeow.ErrPhoneNumberTooShort UNMAPPED +whatsmeow.ErrProfilePictureNotSet UNMAPPED +whatsmeow.ErrProfilePictureUnauthorized UNMAPPED +whatsmeow.ErrQRAlreadyConnected UNMAPPED +whatsmeow.ErrQRStoreContainsID UNMAPPED +whatsmeow.ErrRecipientADJID UNMAPPED +whatsmeow.ErrRecipientNotOnWhatsApp UNMAPPED +whatsmeow.ErrServerReturnedError UNMAPPED +whatsmeow.ErrTooShortFile UNMAPPED +whatsmeow.ErrUnknownMediaRetryError UNMAPPED +whatsmeow.ErrUnknownMediaType UNMAPPED +whatsmeow.ErrUnknownServer UNMAPPED +whatsmeow.EventAlreadyProcessed UNMAPPED +whatsmeow.EventHandler UNMAPPED +whatsmeow.EventHandlerWithSuccessStatus UNMAPPED +whatsmeow.FBArmadilloMessageVersion UNMAPPED +whatsmeow.FBConsumerMessageVersion UNMAPPED +whatsmeow.FBMessageApplicationVersion UNMAPPED +whatsmeow.FBMessageVersion UNMAPPED +whatsmeow.FCMPushConfig UNMAPPED +whatsmeow.FCMPushConfig.GetPushConfigAttrs UNMAPPED +whatsmeow.File UNMAPPED +whatsmeow.GenerateFacebookMessageID UNMAPPED +whatsmeow.GenerateMessageID UNMAPPED +whatsmeow.GetLatestVersion UNMAPPED +whatsmeow.GetMediaType UNMAPPED +whatsmeow.GetNewsletterMessagesParams UNMAPPED +whatsmeow.GetNewsletterUpdatesParams UNMAPPED +whatsmeow.GetProfilePictureParams UNMAPPED +whatsmeow.HashPollOptions UNMAPPED +whatsmeow.IGMessageApplicationVersion UNMAPPED +whatsmeow.IQError UNMAPPED +whatsmeow.IQError.Error UNMAPPED +whatsmeow.IQError.Is UNMAPPED +whatsmeow.InviteLinkPrefix UNMAPPED +whatsmeow.KeepAliveIntervalMax UNMAPPED +whatsmeow.KeepAliveIntervalMin UNMAPPED +whatsmeow.KeepAliveMaxFailTime UNMAPPED +whatsmeow.KeepAliveResponseDeadline UNMAPPED +whatsmeow.MediaAppState UNMAPPED +whatsmeow.MediaAudio UNMAPPED +whatsmeow.MediaConn detz::wa::WaClient::MediaConn (src/whatsapp/wa_client.h; auth+host) +whatsmeow.MediaConn.Expiry UNMAPPED +whatsmeow.MediaConnHost UNMAPPED +whatsmeow.MediaDocument UNMAPPED +whatsmeow.MediaHistory UNMAPPED +whatsmeow.MediaImage UNMAPPED +whatsmeow.MediaLinkThumbnail UNMAPPED +whatsmeow.MediaStickerPack UNMAPPED +whatsmeow.MediaType UNMAPPED +whatsmeow.MediaTypeable UNMAPPED +whatsmeow.MediaVideo UNMAPPED +whatsmeow.MessageDebugTimings UNMAPPED +whatsmeow.MessageDebugTimings.MarshalZerologObject UNMAPPED +whatsmeow.MessengerConfig UNMAPPED +whatsmeow.MinPreKeyCount detz::wa::WaConsts::kWaMinPrekeys (src/whatsapp/wa_consts.h) +whatsmeow.MsgSecretType UNMAPPED +whatsmeow.NackDBOperationFailed UNMAPPED +whatsmeow.NackInvalidHostedCompanionStanza UNMAPPED +whatsmeow.NackInvalidProtobuf UNMAPPED +whatsmeow.NackMessageDeletedOnPeer UNMAPPED +whatsmeow.NackMissingMessageSecret UNMAPPED +whatsmeow.NackParsingError UNMAPPED +whatsmeow.NackSignalErrorOldCounter UNMAPPED +whatsmeow.NackUnhandledError UNMAPPED +whatsmeow.NackUnrecognizedStanza UNMAPPED +whatsmeow.NackUnrecognizedStanzaClass UNMAPPED +whatsmeow.NackUnrecognizedStanzaType UNMAPPED +whatsmeow.NackUnsupportedAdminRevoke UNMAPPED +whatsmeow.NackUnsupportedLIDGroup UNMAPPED +whatsmeow.NewClient detz::wa::WaClient::WaClient (src/whatsapp/wa_client.h) +whatsmeow.NewsletterLinkPrefix UNMAPPED +whatsmeow.NoiseHandshakeResponseTimeout detz::wa::WaConsts::kWaConnectTimeout (src/whatsapp/wa_consts.h; 20s serverHello wait) +whatsmeow.PairClientAndroid UNMAPPED +whatsmeow.PairClientChrome UNMAPPED +whatsmeow.PairClientEdge UNMAPPED +whatsmeow.PairClientElectron UNMAPPED +whatsmeow.PairClientFirefox UNMAPPED +whatsmeow.PairClientIE UNMAPPED +whatsmeow.PairClientMacOS UNMAPPED +whatsmeow.PairClientOpera UNMAPPED +whatsmeow.PairClientOtherWebClient UNMAPPED +whatsmeow.PairClientSafari UNMAPPED +whatsmeow.PairClientType UNMAPPED +whatsmeow.PairClientUWP UNMAPPED +whatsmeow.PairClientUnknown UNMAPPED +whatsmeow.PairDatabaseError UNMAPPED +whatsmeow.PairDatabaseError.Error UNMAPPED +whatsmeow.PairDatabaseError.Unwrap UNMAPPED +whatsmeow.PairProtoError UNMAPPED +whatsmeow.PairProtoError.Error UNMAPPED +whatsmeow.PairProtoError.Unwrap UNMAPPED +whatsmeow.ParseDisappearingTimerString UNMAPPED +whatsmeow.ParticipantChange UNMAPPED +whatsmeow.ParticipantChangeAdd UNMAPPED +whatsmeow.ParticipantChangeApprove UNMAPPED +whatsmeow.ParticipantChangeDemote UNMAPPED +whatsmeow.ParticipantChangePromote UNMAPPED +whatsmeow.ParticipantChangeReject UNMAPPED +whatsmeow.ParticipantChangeRemove UNMAPPED +whatsmeow.ParticipantRequestChange UNMAPPED +whatsmeow.Proxy UNMAPPED +whatsmeow.PushConfig UNMAPPED +whatsmeow.QRChannelClientOutdated UNMAPPED +whatsmeow.QRChannelErrUnexpectedEvent UNMAPPED +whatsmeow.QRChannelEventCode UNMAPPED +whatsmeow.QRChannelEventError UNMAPPED +whatsmeow.QRChannelEventPasskeyRequest UNMAPPED +whatsmeow.QRChannelEventPasskeyResponse UNMAPPED +whatsmeow.QRChannelItem UNMAPPED +whatsmeow.QRChannelScannedWithoutMultidevice UNMAPPED +whatsmeow.QRChannelSuccess UNMAPPED +whatsmeow.QRChannelTimeout UNMAPPED +whatsmeow.RecentMessage UNMAPPED +whatsmeow.RecentMessage.IsEmpty UNMAPPED +whatsmeow.RemoveReactionText UNMAPPED +whatsmeow.ReqCreateGroup UNMAPPED +whatsmeow.RequestFromPhoneDelay UNMAPPED +whatsmeow.SendRequestExtra UNMAPPED +whatsmeow.SendResponse UNMAPPED +whatsmeow.SetProxyOptions UNMAPPED +whatsmeow.UploadResponse detz::wa::WaMedia::Uploaded (src/whatsapp/wa_media.h) +whatsmeow.UsyncQueryExtras UNMAPPED +whatsmeow.WACertIssuerSerial UNMAPPED +whatsmeow.WACertPubKey UNMAPPED +whatsmeow.WantedPreKeyCount detz::wa::WaConsts::kWaPrekeyBatch (src/whatsapp/wa_consts.h) +whatsmeow.WebMessageIDPrefix UNMAPPED +whatsmeow.WebPushConfig UNMAPPED +whatsmeow.WebPushConfig.GetPushConfigAttrs UNMAPPED +whatsmeow.groupMetaCache.CanSend UNMAPPED +whatsmeow.passkeyHandoffKey.Valid UNMAPPED +whatsmeow.sessionlessSignalStore.StoreSession UNMAPPED +whatsmeow.wrappedIQError.Error UNMAPPED +whatsmeow.wrappedIQError.Is UNMAPPED +whatsmeow.wrappedIQError.Unwrap UNMAPPED diff --git a/taicpp/tools/wa-stub-scan.sh b/taicpp/tools/wa-stub-scan.sh new file mode 100755 index 0000000..4b5839d --- /dev/null +++ b/taicpp/tools/wa-stub-scan.sh @@ -0,0 +1,91 @@ +#!/usr/bin/env bash +# wa-stub-scan.sh: fail on stubs in the WhatsApp C++ module (M0 harness; see +# docs/whatsapp.md section 17 and full_transpilation_and_integration.md +# prompt section 1). There is no allowlist: a hit means fix the code, never +# waive the line. +# +# Two checks over src/whatsapp/: +# 1. Absolute: TODO, FIXME, XXX, HACK, unimplemented, not implemented, +# NOT_IMPLEMENTED, panic(, assert(false, std::abort. Any hit fails. +# 2. New silent early-outs: an added line (vs HEAD, plus untracked files) +# matching "return std::nullopt", "return false" or "return {}" must have +# a loud log line at the call site: a match of log(|log_(|TRACE|cerr| +# stderr|fprintf|perror within the 6 lines above it or on its own line. +# "New" is the diff because the rule governs code being added; committed +# lines were already gated. +set -euo pipefail +cd "$(dirname "$0")/.." + +fails=0 +ABS='TODO|FIXME|XXX|HACK|unimplemented|not implemented|NOT_IMPLEMENTED|panic\(|assert\(false|std::abort' +if grep -rnE "$ABS" src/whatsapp/; then + echo "wa-stub-scan: absolute stub patterns hit ^^^" >&2 + fails=1 +else + echo "wa-stub-scan: absolute patterns clean" +fi + +LOG='log_?\(|TRACE|cerr|stderr|fprintf|perror' +RET='return (std::nullopt|false|\{\})' +new_returns="$(mktemp)" +trap 'rm -f "$new_returns"' EXIT +if git rev-parse --verify HEAD >/dev/null 2>&1; then + # Diff paths are repo-relative (taicpp/...); strip the cwd prefix back to local. + PREFIX="$(git rev-parse --show-prefix)" + export PREFIX + git diff -U0 HEAD -- src/whatsapp/ | python3 -c ' +import os, re, sys +prefix = os.environ.get("PREFIX", "") +cur, new = None, None +for ln in sys.stdin: + m = re.match(r"\+\+\+ b/(.*)", ln) + if m: + cur = m.group(1).strip() + if prefix and cur.startswith(prefix): + cur = cur[len(prefix):] + continue + m = re.match(r"@@ -\d+(?:,\d+)? \+(\d+)(?:,\d+)? @@", ln) + if m: + new = int(m.group(1)) + continue + if cur is None or new is None or ln.startswith("-"): + continue + if ln.startswith("+") and not ln.startswith("+++"): + if re.search(r"return (std::nullopt|false|\{\})", ln[1:]): + print("%s:%d" % (cur, new)) + new += 1 + elif not ln.startswith("\\"): + new += 1 +' > "$new_returns" + while IFS= read -r f; do + test -n "$f" || continue + grep -nE "$RET" "$f" | sed "s|^|$f:|" | cut -d: -f1,2 >> "$new_returns" + done < <(git status --porcelain -- src/whatsapp/ | grep "^??" | sed -e "s|^?? ||" -e "s|^$PREFIX||" || true) +else + echo "wa-stub-scan: no HEAD, scanning the whole tree for silent returns" >&2 + grep -rnE "$RET" src/whatsapp/ | cut -d: -f1,2 > "$new_returns" +fi + +silent=0 +while IFS=: read -r f n; do + test -n "$f" || continue + if ! test -f "$f"; then + echo "wa-stub-scan: internal error: reported file missing: $f:$n" >&2 + fails=1 + continue + fi + lo=$((n > 6 ? n - 6 : 1)) + if ! sed -n "${lo},${n}p" "$f" | grep -qE "$LOG"; then + echo "$f:$n: new silent early-out (no log within 6 lines above):" + sed -n "${lo},${n}p" "$f" | sed 's/^/ /' + silent=1 + fi +done < "$new_returns" +if [ "$silent" -eq 1 ]; then + echo "wa-stub-scan: new silent early-outs ^^^ (log loudly or restructure)" >&2 + fails=1 +else + echo "wa-stub-scan: new early-outs all loud ($(wc -l < "$new_returns" | tr -d ' ') checked)" +fi + +exit "$fails"