From 1920a256ada9374404cb38eaef1abc089ebfada7 Mon Sep 17 00:00:00 2001 From: Timothy Zakian Date: Thu, 14 Mar 2024 16:38:25 -0700 Subject: [PATCH] [sui-framework] Regenerate sui-framework docs --- .../dependencies/move-stdlib/address.md | 4 + .../dependencies/move-stdlib/ascii.md | 22 +++++ .../deepbook/dependencies/move-stdlib/bcs.md | 5 ++ .../dependencies/move-stdlib/option.md | 37 +++++++++ .../dependencies/move-stdlib/string.md | 20 +++++ .../dependencies/move-stdlib/type_name.md | 34 +++++++- .../dependencies/move-stdlib/vector.md | 35 ++++++++ .../dependencies/sui-framework/address.md | 19 +++++ .../sui-framework/authenticator_state.md | 17 +++- .../dependencies/sui-framework/bag.md | 50 +++++++++++- .../dependencies/sui-framework/balance.md | 28 +++++++ .../dependencies/sui-framework/clock.md | 20 ++++- .../dependencies/sui-framework/coin.md | 81 +++++++++++++++++-- .../dependencies/sui-framework/deny_list.md | 26 +++++- .../sui-framework/dynamic_field.md | 48 ++++++++++- .../sui-framework/dynamic_object_field.md | 25 ++++++ .../dependencies/sui-framework/event.md | 32 ++++++++ .../dependencies/sui-framework/hex.md | 9 +++ .../sui-framework/linked_table.md | 57 +++++++++++-- .../dependencies/sui-framework/math.md | 56 +++++++++++++ .../dependencies/sui-framework/object.md | 50 ++++++++++++ .../dependencies/sui-framework/random.md | 7 ++ .../dependencies/sui-framework/sui.md | 10 +++ .../dependencies/sui-framework/table.md | 39 ++++++++- .../dependencies/sui-framework/transfer.md | 57 +++++++++++++ .../dependencies/sui-framework/tx_context.md | 26 ++++-- .../dependencies/sui-framework/types.md | 3 + .../dependencies/sui-framework/url.md | 7 ++ .../dependencies/sui-framework/vec_set.md | 24 ++++++ .../dependencies/sui-framework/versioned.md | 19 +++++ .../dependencies/move-stdlib/address.md | 4 + .../dependencies/move-stdlib/ascii.md | 22 +++++ .../dependencies/move-stdlib/bcs.md | 5 ++ .../dependencies/move-stdlib/option.md | 37 +++++++++ .../dependencies/move-stdlib/string.md | 20 +++++ .../dependencies/move-stdlib/type_name.md | 34 +++++++- .../dependencies/move-stdlib/vector.md | 35 ++++++++ .../dependencies/move-stdlib/address.md | 4 + .../dependencies/move-stdlib/ascii.md | 22 +++++ .../dependencies/move-stdlib/bcs.md | 5 ++ .../dependencies/move-stdlib/option.md | 37 +++++++++ .../dependencies/move-stdlib/string.md | 20 +++++ .../dependencies/move-stdlib/type_name.md | 34 +++++++- .../dependencies/move-stdlib/vector.md | 35 ++++++++ .../dependencies/sui-framework/address.md | 19 +++++ .../sui-framework/authenticator_state.md | 17 +++- .../dependencies/sui-framework/bag.md | 50 +++++++++++- .../dependencies/sui-framework/balance.md | 28 +++++++ .../dependencies/sui-framework/clock.md | 20 ++++- .../dependencies/sui-framework/coin.md | 81 +++++++++++++++++-- .../dependencies/sui-framework/deny_list.md | 26 +++++- .../sui-framework/dynamic_field.md | 48 ++++++++++- .../sui-framework/dynamic_object_field.md | 25 ++++++ .../dependencies/sui-framework/event.md | 32 ++++++++ .../dependencies/sui-framework/hex.md | 9 +++ .../dependencies/sui-framework/math.md | 56 +++++++++++++ .../dependencies/sui-framework/object.md | 50 ++++++++++++ .../dependencies/sui-framework/pay.md | 14 ++++ .../sui-framework/priority_queue.md | 15 ++++ .../dependencies/sui-framework/random.md | 7 ++ .../dependencies/sui-framework/sui.md | 10 +++ .../dependencies/sui-framework/table.md | 39 ++++++++- .../dependencies/sui-framework/table_vec.md | 23 +++++- .../dependencies/sui-framework/transfer.md | 57 +++++++++++++ .../dependencies/sui-framework/tx_context.md | 26 ++++-- .../dependencies/sui-framework/types.md | 3 + .../dependencies/sui-framework/url.md | 7 ++ .../dependencies/sui-framework/vec_map.md | 44 ++++++++++ .../dependencies/sui-framework/vec_set.md | 24 ++++++ .../dependencies/sui-framework/versioned.md | 19 +++++ 70 files changed, 1871 insertions(+), 59 deletions(-) diff --git a/crates/sui-framework/docs/deepbook/dependencies/move-stdlib/address.md b/crates/sui-framework/docs/deepbook/dependencies/move-stdlib/address.md index dd10b7d17c904..75c40f04d24ed 100644 --- a/crates/sui-framework/docs/deepbook/dependencies/move-stdlib/address.md +++ b/crates/sui-framework/docs/deepbook/dependencies/move-stdlib/address.md @@ -3,6 +3,8 @@ # Module `0x1::address` +Provides a way to get address length since it's a +platform-specific parameter. - [Function `length`](#0x1_address_length) @@ -16,6 +18,8 @@ ## Function `length` +Should be converted to a native function. +Current implementation only works for Sui.
public fun length(): u64
diff --git a/crates/sui-framework/docs/deepbook/dependencies/move-stdlib/ascii.md b/crates/sui-framework/docs/deepbook/dependencies/move-stdlib/ascii.md
index bf876816e6e0f..488f0efcc8983 100644
--- a/crates/sui-framework/docs/deepbook/dependencies/move-stdlib/ascii.md
+++ b/crates/sui-framework/docs/deepbook/dependencies/move-stdlib/ascii.md
@@ -3,6 +3,8 @@
 
 # Module `0x1::ascii`
 
+The ASCII module defines basic string and char newtypes in Move that verify
+that characters are valid ASCII, and that strings consist of only valid ASCII characters.
 
 
 -  [Struct `String`](#0x1_ascii_String)
@@ -31,6 +33,11 @@
 
 ## Struct `String`
 
+The String struct holds a vector of bytes that all represent
+valid ASCII characters. Note that these ASCII characters may not all
+be printable. To determine if a String contains only "printable"
+characters you should use the all_characters_printable predicate
+defined in this module.
 
 
 
struct String has copy, drop, store
@@ -58,6 +65,7 @@
 
 ## Struct `Char`
 
+An ASCII character.
 
 
 
struct Char has copy, drop, store
@@ -88,6 +96,7 @@
 
 
 
+An invalid ASCII character was encountered when creating an ASCII string.
 
 
 
const EINVALID_ASCII_CHARACTER: u64 = 65536;
@@ -99,6 +108,7 @@
 
 ## Function `char`
 
+Convert a byte into a Char that is checked to make sure it is valid ASCII.
 
 
 
public fun char(byte: u8): ascii::Char
@@ -124,6 +134,8 @@
 
 ## Function `string`
 
+Convert a vector of bytes bytes into an String. Aborts if
+bytes contains non-ASCII characters.
 
 
 
public fun string(bytes: vector<u8>): ascii::String
@@ -153,6 +165,9 @@
 
 ## Function `try_string`
 
+Convert a vector of bytes bytes into an String. Returns
+Some(<ascii_string>) if the bytes contains all valid ASCII
+characters. Otherwise returns None.
 
 
 
public fun try_string(bytes: vector<u8>): option::Option<ascii::String>
@@ -184,6 +199,8 @@
 
 ## Function `all_characters_printable`
 
+Returns true if all characters in string are printable characters
+Returns false otherwise. Not all Strings are printable strings.
 
 
 
public fun all_characters_printable(string: &ascii::String): bool
@@ -287,6 +304,7 @@
 
 ## Function `as_bytes`
 
+Get the inner bytes of the string as a reference
 
 
 
public fun as_bytes(string: &ascii::String): &vector<u8>
@@ -311,6 +329,7 @@
 
 ## Function `into_bytes`
 
+Unpack the string to get its backing bytes
 
 
 
public fun into_bytes(string: ascii::String): vector<u8>
@@ -336,6 +355,7 @@
 
 ## Function `byte`
 
+Unpack the char into its underlying byte.
 
 
 
public fun byte(char: ascii::Char): u8
@@ -361,6 +381,7 @@
 
 ## Function `is_valid_char`
 
+Returns true if b is a valid ASCII character. Returns false otherwise.
 
 
 
public fun is_valid_char(b: u8): bool
@@ -385,6 +406,7 @@
 
 ## Function `is_printable_char`
 
+Returns true if byte is an printable ASCII character. Returns false otherwise.
 
 
 
public fun is_printable_char(byte: u8): bool
diff --git a/crates/sui-framework/docs/deepbook/dependencies/move-stdlib/bcs.md b/crates/sui-framework/docs/deepbook/dependencies/move-stdlib/bcs.md
index 28c8dcf4f161e..a1766667fd594 100644
--- a/crates/sui-framework/docs/deepbook/dependencies/move-stdlib/bcs.md
+++ b/crates/sui-framework/docs/deepbook/dependencies/move-stdlib/bcs.md
@@ -3,6 +3,10 @@
 
 # Module `0x1::bcs`
 
+Utility for converting a Move value to its binary representation in BCS (Binary Canonical
+Serialization). BCS is the binary encoding for Move resources and other non-module values
+published on-chain. See https://github.com/diem/bcs#binary-canonical-serialization-bcs for more
+details on BCS.
 
 
 -  [Function `to_bytes`](#0x1_bcs_to_bytes)
@@ -16,6 +20,7 @@
 
 ## Function `to_bytes`
 
+Return the binary representation of v in BCS (Binary Canonical Serialization) format
 
 
 
public fun to_bytes<MoveValue>(v: &MoveValue): vector<u8>
diff --git a/crates/sui-framework/docs/deepbook/dependencies/move-stdlib/option.md b/crates/sui-framework/docs/deepbook/dependencies/move-stdlib/option.md
index f161bb1b20b11..0f6660f50bd58 100644
--- a/crates/sui-framework/docs/deepbook/dependencies/move-stdlib/option.md
+++ b/crates/sui-framework/docs/deepbook/dependencies/move-stdlib/option.md
@@ -3,6 +3,7 @@
 
 # Module `0x1::option`
 
+This module defines the Option type and its methods to represent and handle an optional value.
 
 
 -  [Struct `Option`](#0x1_option_Option)
@@ -35,6 +36,8 @@
 
 ## Struct `Option`
 
+Abstraction of a value that may or may not be present. Implemented with a vector of size
+zero or one because Move bytecode does not have ADTs.
 
 
 
struct Option<Element> has copy, drop, store
@@ -65,6 +68,8 @@
 
 
 
+The Option is in an invalid state for the operation attempted.
+The Option is Some while it should be None.
 
 
 
const EOPTION_IS_SET: u64 = 262144;
@@ -74,6 +79,8 @@
 
 
 
+The Option is in an invalid state for the operation attempted.
+The Option is None while it should be Some.
 
 
 
const EOPTION_NOT_SET: u64 = 262145;
@@ -85,6 +92,7 @@
 
 ## Function `none`
 
+Return an empty Option
 
 
 
public fun none<Element>(): option::Option<Element>
@@ -109,6 +117,7 @@
 
 ## Function `some`
 
+Return an Option containing e
 
 
 
public fun some<Element>(e: Element): option::Option<Element>
@@ -133,6 +142,7 @@
 
 ## Function `is_none`
 
+Return true if t does not hold a value
 
 
 
public fun is_none<Element>(t: &option::Option<Element>): bool
@@ -157,6 +167,7 @@
 
 ## Function `is_some`
 
+Return true if t holds a value
 
 
 
public fun is_some<Element>(t: &option::Option<Element>): bool
@@ -181,6 +192,8 @@
 
 ## Function `contains`
 
+Return true if the value in t is equal to e_ref
+Always returns false if t does not hold a value
 
 
 
public fun contains<Element>(t: &option::Option<Element>, e_ref: &Element): bool
@@ -205,6 +218,8 @@
 
 ## Function `borrow`
 
+Return an immutable reference to the value inside t
+Aborts if t does not hold a value
 
 
 
public fun borrow<Element>(t: &option::Option<Element>): &Element
@@ -230,6 +245,8 @@
 
 ## Function `borrow_with_default`
 
+Return a reference to the value inside t if it holds one
+Return default_ref if t does not hold a value
 
 
 
public fun borrow_with_default<Element>(t: &option::Option<Element>, default_ref: &Element): &Element
@@ -256,6 +273,8 @@
 
 ## Function `get_with_default`
 
+Return the value inside t if it holds one
+Return default if t does not hold a value
 
 
 
public fun get_with_default<Element: copy, drop>(t: &option::Option<Element>, default: Element): Element
@@ -285,6 +304,8 @@
 
 ## Function `fill`
 
+Convert the none option t to a some option by adding e.
+Aborts if t already holds a value
 
 
 
public fun fill<Element>(t: &mut option::Option<Element>, e: Element)
@@ -311,6 +332,8 @@
 
 ## Function `extract`
 
+Convert a some option to a none by removing and returning the value stored inside t
+Aborts if t does not hold a value
 
 
 
public fun extract<Element>(t: &mut option::Option<Element>): Element
@@ -336,6 +359,8 @@
 
 ## Function `borrow_mut`
 
+Return a mutable reference to the value inside t
+Aborts if t does not hold a value
 
 
 
public fun borrow_mut<Element>(t: &mut option::Option<Element>): &mut Element
@@ -361,6 +386,8 @@
 
 ## Function `swap`
 
+Swap the old value inside t with e and return the old value
+Aborts if t does not hold a value
 
 
 
public fun swap<Element>(t: &mut option::Option<Element>, e: Element): Element
@@ -389,6 +416,9 @@
 
 ## Function `swap_or_fill`
 
+Swap the old value inside t with e and return the old value;
+or if there is no old value, fill it with e.
+Different from swap(), swap_or_fill() allows for t not holding a value.
 
 
 
public fun swap_or_fill<Element>(t: &mut option::Option<Element>, e: Element): option::Option<Element>
@@ -417,6 +447,7 @@
 
 ## Function `destroy_with_default`
 
+Destroys t. If t holds a value, return it. Returns default otherwise
 
 
 
public fun destroy_with_default<Element: drop>(t: option::Option<Element>, default: Element): Element
@@ -443,6 +474,8 @@
 
 ## Function `destroy_some`
 
+Unpack t and return its contents
+Aborts if t does not hold a value
 
 
 
public fun destroy_some<Element>(t: option::Option<Element>): Element
@@ -471,6 +504,8 @@
 
 ## Function `destroy_none`
 
+Unpack t
+Aborts if t holds a value
 
 
 
public fun destroy_none<Element>(t: option::Option<Element>)
@@ -497,6 +532,8 @@
 
 ## Function `to_vec`
 
+Convert t into a vector of length 1 if it is Some,
+and an empty vector otherwise
 
 
 
public fun to_vec<Element>(t: option::Option<Element>): vector<Element>
diff --git a/crates/sui-framework/docs/deepbook/dependencies/move-stdlib/string.md b/crates/sui-framework/docs/deepbook/dependencies/move-stdlib/string.md
index 4a48dbc3ea0ae..088a2da2f91e9 100644
--- a/crates/sui-framework/docs/deepbook/dependencies/move-stdlib/string.md
+++ b/crates/sui-framework/docs/deepbook/dependencies/move-stdlib/string.md
@@ -3,6 +3,7 @@
 
 # Module `0x1::string`
 
+The string module defines the String type which represents UTF8 encoded strings.
 
 
 -  [Struct `String`](#0x1_string_String)
@@ -36,6 +37,7 @@
 
 ## Struct `String`
 
+A String holds a sequence of bytes which is guaranteed to be in utf8 format.
 
 
 
struct String has copy, drop, store
@@ -66,6 +68,7 @@
 
 
 
+Index out of range.
 
 
 
const EINVALID_INDEX: u64 = 2;
@@ -75,6 +78,7 @@
 
 
 
+An invalid UTF8 encoding.
 
 
 
const EINVALID_UTF8: u64 = 1;
@@ -86,6 +90,7 @@
 
 ## Function `utf8`
 
+Creates a new string from a sequence of bytes. Aborts if the bytes do not represent valid utf8.
 
 
 
public fun utf8(bytes: vector<u8>): string::String
@@ -111,6 +116,7 @@
 
 ## Function `from_ascii`
 
+Convert an ASCII string to a UTF8 string
 
 
 
public fun from_ascii(s: ascii::String): string::String
@@ -135,6 +141,8 @@
 
 ## Function `to_ascii`
 
+Convert an UTF8 string to an ASCII string.
+Aborts if s is not valid ASCII
 
 
 
public fun to_ascii(s: string::String): ascii::String
@@ -160,6 +168,7 @@
 
 ## Function `try_utf8`
 
+Tries to create a new string from a sequence of bytes.
 
 
 
public fun try_utf8(bytes: vector<u8>): option::Option<string::String>
@@ -188,6 +197,7 @@
 
 ## Function `bytes`
 
+Returns a reference to the underlying byte vector.
 
 
 
public fun bytes(s: &string::String): &vector<u8>
@@ -212,6 +222,7 @@
 
 ## Function `is_empty`
 
+Checks whether this string is empty.
 
 
 
public fun is_empty(s: &string::String): bool
@@ -236,6 +247,7 @@
 
 ## Function `length`
 
+Returns the length of this string, in bytes.
 
 
 
public fun length(s: &string::String): u64
@@ -260,6 +272,7 @@
 
 ## Function `append`
 
+Appends a string.
 
 
 
public fun append(s: &mut string::String, r: string::String)
@@ -284,6 +297,7 @@
 
 ## Function `append_utf8`
 
+Appends bytes which must be in valid utf8 format.
 
 
 
public fun append_utf8(s: &mut string::String, bytes: vector<u8>)
@@ -308,6 +322,8 @@
 
 ## Function `insert`
 
+Insert the other string at the byte index in given string. The index must be at a valid utf8 char
+boundary.
 
 
 
public fun insert(s: &mut string::String, at: u64, o: string::String)
@@ -339,6 +355,9 @@
 
 ## Function `sub_string`
 
+Returns a sub-string using the given byte indices, where i is the first byte position and j is the start
+of the first byte not included (or the length of the string). The indices must be at valid utf8 char boundaries,
+guaranteeing that the result is valid utf8.
 
 
 
public fun sub_string(s: &string::String, i: u64, j: u64): string::String
@@ -369,6 +388,7 @@
 
 ## Function `index_of`
 
+Computes the index of the first occurrence of a string. Returns length(s) if no occurrence found.
 
 
 
public fun index_of(s: &string::String, r: &string::String): u64
diff --git a/crates/sui-framework/docs/deepbook/dependencies/move-stdlib/type_name.md b/crates/sui-framework/docs/deepbook/dependencies/move-stdlib/type_name.md
index 48560570a18a3..01cc1819fa89e 100644
--- a/crates/sui-framework/docs/deepbook/dependencies/move-stdlib/type_name.md
+++ b/crates/sui-framework/docs/deepbook/dependencies/move-stdlib/type_name.md
@@ -3,6 +3,7 @@
 
 # Module `0x1::type_name`
 
+Functionality for converting Move types into values. Use with care!
 
 
 -  [Struct `TypeName`](#0x1_type_name_TypeName)
@@ -42,7 +43,13 @@
 name: ascii::String
 
 
- + String representation of the type. All types are represented + using their source syntax: + "u8", "u64", "bool", "address", "vector", and so on for primitive types. + Struct types are represented as fully qualified type names; e.g. + 00000000000000000000000000000001::string::String or + 0000000000000000000000000000000a::module_name1::type_name1<0000000000000000000000000000000a::module_name2::type_name2<u64>> + Addresses are hex-encoded lowercase values of length ADDRESS_LENGTH (16, 20, or 32 depending on the Move platform)
@@ -56,6 +63,7 @@ +ASCII Character code for the c (lowercase c) symbol.
const ASCII_C: u8 = 99;
@@ -65,6 +73,7 @@
 
 
 
+ASCII Character code for the : (colon) symbol.
 
 
 
const ASCII_COLON: u8 = 58;
@@ -74,6 +83,7 @@
 
 
 
+ASCII Character code for the e (lowercase e) symbol.
 
 
 
const ASCII_E: u8 = 101;
@@ -83,6 +93,7 @@
 
 
 
+ASCII Character code for the o (lowercase o) symbol.
 
 
 
const ASCII_O: u8 = 111;
@@ -92,6 +103,7 @@
 
 
 
+ASCII Character code for the r (lowercase r) symbol.
 
 
 
const ASCII_R: u8 = 114;
@@ -101,6 +113,7 @@
 
 
 
+ASCII Character code for the t (lowercase t) symbol.
 
 
 
const ASCII_T: u8 = 116;
@@ -110,6 +123,7 @@
 
 
 
+ASCII Character code for the v (lowercase v) symbol.
 
 
 
const ASCII_V: u8 = 118;
@@ -119,6 +133,7 @@
 
 
 
+The type is not from a package/module. It is a primitive type.
 
 
 
const ENonModuleType: u64 = 0;
@@ -130,6 +145,10 @@
 
 ## Function `get`
 
+Return a value representation of the type T.  Package IDs
+that appear in fully qualified type names in the output from
+this function are defining IDs (the ID of the package in
+storage that first introduced the type).
 
 
 
public fun get<T>(): type_name::TypeName
@@ -152,6 +171,11 @@
 
 ## Function `get_with_original_ids`
 
+Return a value representation of the type T.  Package IDs
+that appear in fully qualified type names in the output from
+this function are original IDs (the ID of the first version of
+the package, even if the type in question was introduced in a
+later upgrade).
 
 
 
public fun get_with_original_ids<T>(): type_name::TypeName
@@ -174,6 +198,8 @@
 
 ## Function `is_primitive`
 
+Returns true iff the TypeName represents a primitive type, i.e. one of
+u8, u16, u32, u64, u128, u256, bool, address, vector.
 
 
 
public fun is_primitive(self: &type_name::TypeName): bool
@@ -214,6 +240,7 @@
 
 ## Function `borrow_string`
 
+Get the String representation of self
 
 
 
public fun borrow_string(self: &type_name::TypeName): &ascii::String
@@ -238,6 +265,8 @@
 
 ## Function `get_address`
 
+Get Address string (Base16 encoded), first part of the TypeName.
+Aborts if given a primitive type.
 
 
 
public fun get_address(self: &type_name::TypeName): ascii::String
@@ -279,6 +308,8 @@
 
 ## Function `get_module`
 
+Get name of the module.
+Aborts if given a primitive type.
 
 
 
public fun get_module(self: &type_name::TypeName): ascii::String
@@ -320,6 +351,7 @@
 
 ## Function `into_string`
 
+Convert self into its inner String
 
 
 
public fun into_string(self: type_name::TypeName): ascii::String
diff --git a/crates/sui-framework/docs/deepbook/dependencies/move-stdlib/vector.md b/crates/sui-framework/docs/deepbook/dependencies/move-stdlib/vector.md
index c7eb58dd7c830..8485fe043291b 100644
--- a/crates/sui-framework/docs/deepbook/dependencies/move-stdlib/vector.md
+++ b/crates/sui-framework/docs/deepbook/dependencies/move-stdlib/vector.md
@@ -3,6 +3,8 @@
 
 # Module `0x1::vector`
 
+A variable-sized container that can hold any type. Indexing is 0-based, and
+vectors are growable. This module has many native functions.
 
 
 -  [Constants](#@Constants_0)
@@ -36,6 +38,7 @@
 
 
 
+The index into the vector is out of bounds
 
 
 
const EINDEX_OUT_OF_BOUNDS: u64 = 131072;
@@ -47,6 +50,7 @@
 
 ## Function `empty`
 
+Create an empty vector.
 
 
 
public fun empty<Element>(): vector<Element>
@@ -69,6 +73,7 @@
 
 ## Function `length`
 
+Return the length of the vector.
 
 
 
public fun length<Element>(v: &vector<Element>): u64
@@ -91,6 +96,8 @@
 
 ## Function `borrow`
 
+Acquire an immutable reference to the ith element of the vector v.
+Aborts if i is out of bounds.
 
 
 
public fun borrow<Element>(v: &vector<Element>, i: u64): &Element
@@ -113,6 +120,7 @@
 
 ## Function `push_back`
 
+Add element e to the end of the vector v.
 
 
 
public fun push_back<Element>(v: &mut vector<Element>, e: Element)
@@ -135,6 +143,8 @@
 
 ## Function `borrow_mut`
 
+Return a mutable reference to the ith element in the vector v.
+Aborts if i is out of bounds.
 
 
 
public fun borrow_mut<Element>(v: &mut vector<Element>, i: u64): &mut Element
@@ -157,6 +167,8 @@
 
 ## Function `pop_back`
 
+Pop an element from the end of vector v.
+Aborts if v is empty.
 
 
 
public fun pop_back<Element>(v: &mut vector<Element>): Element
@@ -179,6 +191,8 @@
 
 ## Function `destroy_empty`
 
+Destroy the vector v.
+Aborts if v is not empty.
 
 
 
public fun destroy_empty<Element>(v: vector<Element>)
@@ -201,6 +215,8 @@
 
 ## Function `swap`
 
+Swaps the elements at the ith and jth indices in the vector v.
+Aborts if i or j is out of bounds.
 
 
 
public fun swap<Element>(v: &mut vector<Element>, i: u64, j: u64)
@@ -223,6 +239,7 @@
 
 ## Function `singleton`
 
+Return an vector of size one containing element e.
 
 
 
public fun singleton<Element>(e: Element): vector<Element>
@@ -249,6 +266,7 @@
 
 ## Function `reverse`
 
+Reverses the order of the elements in the vector v in place.
 
 
 
public fun reverse<Element>(v: &mut vector<Element>)
@@ -282,6 +300,7 @@
 
 ## Function `append`
 
+Pushes all of the elements of the other vector into the lhs vector.
 
 
 
public fun append<Element>(lhs: &mut vector<Element>, other: vector<Element>)
@@ -308,6 +327,7 @@
 
 ## Function `is_empty`
 
+Return true if the vector v has no elements and false otherwise.
 
 
 
public fun is_empty<Element>(v: &vector<Element>): bool
@@ -332,6 +352,8 @@
 
 ## Function `contains`
 
+Return true if e is in the vector v.
+Otherwise, returns false.
 
 
 
public fun contains<Element>(v: &vector<Element>, e: &Element): bool
@@ -362,6 +384,8 @@
 
 ## Function `index_of`
 
+Return (true, i) if e is in the vector v at index i.
+Otherwise, returns (false, 0).
 
 
 
public fun index_of<Element>(v: &vector<Element>, e: &Element): (bool, u64)
@@ -392,6 +416,9 @@
 
 ## Function `remove`
 
+Remove the ith element of the vector v, shifting all subsequent elements.
+This is O(n) and preserves ordering of elements in the vector.
+Aborts if i is out of bounds.
 
 
 
public fun remove<Element>(v: &mut vector<Element>, i: u64): Element
@@ -422,6 +449,11 @@
 
 ## Function `insert`
 
+Insert e at position i in the vector v.
+If i is in bounds, this shifts the old v[i] and all subsequent elements to the right.
+If i == length(v), this adds e to the end of the vector.
+This is O(n) and preserves ordering of elements in the vector.
+Aborts if i > length(v)
 
 
 
public fun insert<Element>(v: &mut vector<Element>, e: Element, i: u64)
@@ -454,6 +486,9 @@
 
 ## Function `swap_remove`
 
+Swap the ith element of the vector v with the last element and then pop the vector.
+This is O(1), but does not preserve ordering of elements in the vector.
+Aborts if i is out of bounds.
 
 
 
public fun swap_remove<Element>(v: &mut vector<Element>, i: u64): Element
diff --git a/crates/sui-framework/docs/deepbook/dependencies/sui-framework/address.md b/crates/sui-framework/docs/deepbook/dependencies/sui-framework/address.md
index c14fcf69945ab..88277ddf277ce 100644
--- a/crates/sui-framework/docs/deepbook/dependencies/sui-framework/address.md
+++ b/crates/sui-framework/docs/deepbook/dependencies/sui-framework/address.md
@@ -33,6 +33,7 @@
 
 
 
+Error from from_bytes when it is supplied too many or too few bytes.
 
 
 
const EAddressParseError: u64 = 0;
@@ -42,6 +43,7 @@
 
 
 
+The length of an address, in bytes
 
 
 
const LENGTH: u64 = 32;
@@ -62,6 +64,8 @@
 
 ## Function `to_u256`
 
+Convert a into a u256 by interpreting a as the bytes of a big-endian integer
+(e.g., to_u256(0x1) == 1)
 
 
 
public fun to_u256(a: address): u256
@@ -84,6 +88,8 @@
 
 ## Function `from_u256`
 
+Convert n into an address by encoding it as a big-endian integer (e.g., from_u256(1) = @0x1)
+Aborts if n > MAX_ADDRESS
 
 
 
public fun from_u256(n: u256): address
@@ -106,6 +112,8 @@
 
 ## Function `from_bytes`
 
+Convert bytes into an address.
+Aborts with EAddressParseError if the length of bytes is not 32
 
 
 
public fun from_bytes(bytes: vector<u8>): address
@@ -128,6 +136,7 @@
 
 ## Function `to_bytes`
 
+Convert a into BCS-encoded bytes.
 
 
 
public fun to_bytes(a: address): vector<u8>
@@ -152,6 +161,7 @@
 
 ## Function `to_ascii_string`
 
+Convert a to a hex-encoded ASCII string
 
 
 
public fun to_ascii_string(a: address): ascii::String
@@ -176,6 +186,7 @@
 
 ## Function `to_string`
 
+Convert a to a hex-encoded ASCII string
 
 
 
public fun to_string(a: address): string::String
@@ -200,6 +211,12 @@
 
 ## Function `from_ascii_bytes`
 
+Converts an ASCII string to an address, taking the numerical value for each character. The
+string must be Base16 encoded, and thus exactly 64 characters long.
+For example, the string "00000000000000000000000000000000000000000000000000000000DEADB33F"
+will be converted to the address @0xDEADB33F.
+Aborts with EAddressParseError if the length of s is not 64,
+or if an invalid character is encountered.
 
 
 
public fun from_ascii_bytes(bytes: &vector<u8>): address
@@ -260,6 +277,7 @@
 
 ## Function `length`
 
+Length of a Sui address in bytes
 
 
 
public fun length(): u64
@@ -284,6 +302,7 @@
 
 ## Function `max`
 
+Largest possible address
 
 
 
public fun max(): u256
diff --git a/crates/sui-framework/docs/deepbook/dependencies/sui-framework/authenticator_state.md b/crates/sui-framework/docs/deepbook/dependencies/sui-framework/authenticator_state.md
index 7c627d340ed14..a65737d2682c1 100644
--- a/crates/sui-framework/docs/deepbook/dependencies/sui-framework/authenticator_state.md
+++ b/crates/sui-framework/docs/deepbook/dependencies/sui-framework/authenticator_state.md
@@ -41,6 +41,9 @@
 
 ## Resource `AuthenticatorState`
 
+Singleton shared object which stores the global authenticator state.
+The actual state is stored in a dynamic field of type AuthenticatorStateInner to support
+future versions of the authenticator state.
 
 
 
struct AuthenticatorState has key
@@ -96,7 +99,7 @@
 active_jwks: vector<authenticator_state::ActiveJwk>
 
 
- + List of currently active JWKs.
@@ -107,6 +110,7 @@ ## Struct `JWK` +Must match the JWK struct in fastcrypto-zkp
struct JWK has copy, drop, store
@@ -152,6 +156,7 @@
 
 ## Struct `JwkId`
 
+Must match the JwkId struct in fastcrypto-zkp
 
 
 
struct JwkId has copy, drop, store
@@ -227,6 +232,7 @@
 
 
 
+Sender is not @0x0 the system address.
 
 
 
const ENotSystemAddress: u64 = 0;
@@ -426,6 +432,9 @@
 
 ## Function `create`
 
+Create and share the AuthenticatorState object. This function is call exactly once, when
+the authenticator state object is first created.
+Can only be called by genesis or change_epoch transactions.
 
 
 
fun create(ctx: &tx_context::TxContext)
@@ -563,6 +572,10 @@
 
 ## Function `update_authenticator_state`
 
+Record a new set of active_jwks. Called when executing the AuthenticatorStateUpdate system
+transaction. The new input vector must be sorted and must not contain duplicates.
+If a new JWK is already present, but with a previous epoch, then the epoch is updated to
+indicate that the JWK has been validated in the current epoch and should not be expired.
 
 
 
fun update_authenticator_state(self: &mut authenticator_state::AuthenticatorState, new_active_jwks: vector<authenticator_state::ActiveJwk>, ctx: &tx_context::TxContext)
@@ -768,6 +781,8 @@
 
 ## Function `get_active_jwks`
 
+Get the current active_jwks. Called when the node starts up in order to load the current
+JWK state from the chain.
 
 
 
fun get_active_jwks(self: &authenticator_state::AuthenticatorState, ctx: &tx_context::TxContext): vector<authenticator_state::ActiveJwk>
diff --git a/crates/sui-framework/docs/deepbook/dependencies/sui-framework/bag.md b/crates/sui-framework/docs/deepbook/dependencies/sui-framework/bag.md
index e37ae7c37eea3..2393c5f9d285f 100644
--- a/crates/sui-framework/docs/deepbook/dependencies/sui-framework/bag.md
+++ b/crates/sui-framework/docs/deepbook/dependencies/sui-framework/bag.md
@@ -3,6 +3,26 @@
 
 # Module `0x2::bag`
 
+A bag is a heterogeneous map-like collection. The collection is similar to sui::table in that
+its keys and values are not stored within the Bag value, but instead are stored using Sui's
+object system. The Bag struct acts only as a handle into the object system to retrieve those
+keys and values.
+Note that this means that Bag values with exactly the same key-value mapping will not be
+equal, with ==, at runtime. For example
+```
+let bag1 = bag::new();
+let bag2 = bag::new();
+bag::add(&mut bag1, 0, false);
+bag::add(&mut bag1, 1, true);
+bag::add(&mut bag2, 0, false);
+bag::add(&mut bag2, 1, true);
+// bag1 does not equal bag2, despite having the same entries
+assert!(&bag1 != &bag2, 0);
+```
+At it's core, sui::bag is a wrapper around UID that allows for access to
+sui::dynamic_field while preventing accidentally stranding field values. A UID can be
+deleted, even if it has dynamic fields associated with it, but a bag, on the other hand, must be
+empty to be destroyed.
 
 
 -  [Resource `Bag`](#0x2_bag_Bag)
@@ -46,13 +66,13 @@
 id: object::UID
 
 
- + the ID of this bag
size: u64
- + the number of key-value pairs in the bag
@@ -77,6 +97,7 @@ ## Function `new` +Creates a new, empty bag
public fun new(ctx: &mut tx_context::TxContext): bag::Bag
@@ -104,6 +125,9 @@
 
 ## Function `add`
 
+Adds a key-value pair to the bag bag: &mut Bag
+Aborts with sui::dynamic_field::EFieldAlreadyExists if the bag already has an entry with
+that key k: K.
 
 
 
public fun add<K: copy, drop, store, V: store>(bag: &mut bag::Bag, k: K, v: V)
@@ -129,6 +153,11 @@
 
 ## Function `borrow`
 
+Immutable borrows the value associated with the key in the bag bag: &Bag.
+Aborts with sui::dynamic_field::EFieldDoesNotExist if the bag does not have an entry with
+that key k: K.
+Aborts with sui::dynamic_field::EFieldTypeMismatch if the bag has an entry for the key, but
+the value does not have the specified type.
 
 
 
public fun borrow<K: copy, drop, store, V: store>(bag: &bag::Bag, k: K): &V
@@ -153,6 +182,11 @@
 
 ## Function `borrow_mut`
 
+Mutably borrows the value associated with the key in the bag bag: &mut Bag.
+Aborts with sui::dynamic_field::EFieldDoesNotExist if the bag does not have an entry with
+that key k: K.
+Aborts with sui::dynamic_field::EFieldTypeMismatch if the bag has an entry for the key, but
+the value does not have the specified type.
 
 
 
public fun borrow_mut<K: copy, drop, store, V: store>(bag: &mut bag::Bag, k: K): &mut V
@@ -177,6 +211,11 @@
 
 ## Function `remove`
 
+Mutably borrows the key-value pair in the bag bag: &mut Bag and returns the value.
+Aborts with sui::dynamic_field::EFieldDoesNotExist if the bag does not have an entry with
+that key k: K.
+Aborts with sui::dynamic_field::EFieldTypeMismatch if the bag has an entry for the key, but
+the value does not have the specified type.
 
 
 
public fun remove<K: copy, drop, store, V: store>(bag: &mut bag::Bag, k: K): V
@@ -203,6 +242,7 @@
 
 ## Function `contains`
 
+Returns true iff there is an value associated with the key k: K in the bag bag: &Bag
 
 
 
public fun contains<K: copy, drop, store>(bag: &bag::Bag, k: K): bool
@@ -227,6 +267,8 @@
 
 ## Function `contains_with_type`
 
+Returns true iff there is an value associated with the key k: K in the bag bag: &Bag
+with an assigned value of type V
 
 
 
public fun contains_with_type<K: copy, drop, store, V: store>(bag: &bag::Bag, k: K): bool
@@ -251,6 +293,7 @@
 
 ## Function `length`
 
+Returns the size of the bag, the number of key-value pairs
 
 
 
public fun length(bag: &bag::Bag): u64
@@ -275,6 +318,7 @@
 
 ## Function `is_empty`
 
+Returns true iff the bag is empty (if length returns 0)
 
 
 
public fun is_empty(bag: &bag::Bag): bool
@@ -299,6 +343,8 @@
 
 ## Function `destroy_empty`
 
+Destroys an empty bag
+Aborts with EBagNotEmpty if the bag still contains values
 
 
 
public fun destroy_empty(bag: bag::Bag)
diff --git a/crates/sui-framework/docs/deepbook/dependencies/sui-framework/balance.md b/crates/sui-framework/docs/deepbook/dependencies/sui-framework/balance.md
index ccb3f78bfdd13..8832aa8ab8794 100644
--- a/crates/sui-framework/docs/deepbook/dependencies/sui-framework/balance.md
+++ b/crates/sui-framework/docs/deepbook/dependencies/sui-framework/balance.md
@@ -3,6 +3,9 @@
 
 # Module `0x2::balance`
 
+A storable handler for Balances in general. Is used in the Coin
+module to allow balance operations and can be used to implement
+custom coins with Supply and Balances.
 
 
 -  [Struct `Supply`](#0x2_balance_Supply)
@@ -32,6 +35,8 @@
 
 ## Struct `Supply`
 
+A Supply of T. Used for minting and burning.
+Wrapped into a TreasuryCap in the Coin module.
 
 
 
struct Supply<T> has store
@@ -59,6 +64,8 @@
 
 ## Struct `Balance`
 
+Storable balance - an inner struct of a Coin type.
+Can be used to store coins which don't need the key ability.
 
 
 
struct Balance<T> has store
@@ -89,6 +96,7 @@
 
 
 
+Sender is not @0x0 the system address.
 
 
 
const ENotSystemAddress: u64 = 3;
@@ -98,6 +106,7 @@
 
 
 
+For when trying to destroy a non-zero balance.
 
 
 
const ENonZero: u64 = 0;
@@ -107,6 +116,7 @@
 
 
 
+For when trying to withdraw more than there is.
 
 
 
const ENotEnough: u64 = 2;
@@ -116,6 +126,7 @@
 
 
 
+For when an overflow is happening on Supply operations.
 
 
 
const EOverflow: u64 = 1;
@@ -127,6 +138,7 @@
 
 ## Function `value`
 
+Get the amount stored in a Balance.
 
 
 
public fun value<T>(self: &balance::Balance<T>): u64
@@ -151,6 +163,7 @@
 
 ## Function `supply_value`
 
+Get the Supply value.
 
 
 
public fun supply_value<T>(supply: &balance::Supply<T>): u64
@@ -175,6 +188,7 @@
 
 ## Function `create_supply`
 
+Create a new supply for type T.
 
 
 
public fun create_supply<T: drop>(_: T): balance::Supply<T>
@@ -199,6 +213,7 @@
 
 ## Function `increase_supply`
 
+Increase supply by value and create a new Balance<T> with this value.
 
 
 
public fun increase_supply<T>(self: &mut balance::Supply<T>, value: u64): balance::Balance<T>
@@ -225,6 +240,7 @@
 
 ## Function `decrease_supply`
 
+Burn a Balance and decrease Supply.
 
 
 
public fun decrease_supply<T>(self: &mut balance::Supply<T>, balance: balance::Balance<T>): u64
@@ -252,6 +268,7 @@
 
 ## Function `zero`
 
+Create a zero Balance for type T.
 
 
 
public fun zero<T>(): balance::Balance<T>
@@ -276,6 +293,7 @@
 
 ## Function `join`
 
+Join two balances together.
 
 
 
public fun join<T>(self: &mut balance::Balance<T>, balance: balance::Balance<T>): u64
@@ -302,6 +320,7 @@
 
 ## Function `split`
 
+Split a Balance and take a sub balance from it.
 
 
 
public fun split<T>(self: &mut balance::Balance<T>, value: u64): balance::Balance<T>
@@ -328,6 +347,7 @@
 
 ## Function `withdraw_all`
 
+Withdraw all balance. After this the remaining balance must be 0.
 
 
 
public fun withdraw_all<T>(self: &mut balance::Balance<T>): balance::Balance<T>
@@ -353,6 +373,7 @@
 
 ## Function `destroy_zero`
 
+Destroy a zero Balance.
 
 
 
public fun destroy_zero<T>(balance: balance::Balance<T>)
@@ -378,6 +399,9 @@
 
 ## Function `create_staking_rewards`
 
+CAUTION: this function creates a Balance without increasing the supply.
+It should only be called by the epoch change system txn to create staking rewards,
+and nowhere else.
 
 
 
fun create_staking_rewards<T>(value: u64, ctx: &tx_context::TxContext): balance::Balance<T>
@@ -403,6 +427,9 @@
 
 ## Function `destroy_storage_rebates`
 
+CAUTION: this function destroys a Balance without decreasing the supply.
+It should only be called by the epoch change system txn to destroy storage rebates,
+and nowhere else.
 
 
 
fun destroy_storage_rebates<T>(self: balance::Balance<T>, ctx: &tx_context::TxContext)
@@ -428,6 +455,7 @@
 
 ## Function `destroy_supply`
 
+Destroy a Supply preventing any further minting and burning.
 
 
 
public(friend) fun destroy_supply<T>(self: balance::Supply<T>): u64
diff --git a/crates/sui-framework/docs/deepbook/dependencies/sui-framework/clock.md b/crates/sui-framework/docs/deepbook/dependencies/sui-framework/clock.md
index 6b0c7e8fc5b7a..258f811884591 100644
--- a/crates/sui-framework/docs/deepbook/dependencies/sui-framework/clock.md
+++ b/crates/sui-framework/docs/deepbook/dependencies/sui-framework/clock.md
@@ -3,6 +3,8 @@
 
 # Module `0x2::clock`
 
+APIs for accessing time from move calls, via the Clock: a unique
+shared object that is created at 0x6 during genesis.
 
 
 -  [Resource `Clock`](#0x2_clock_Clock)
@@ -23,6 +25,14 @@
 
 ## Resource `Clock`
 
+Singleton shared object that exposes time to Move calls.  This
+object is found at address 0x6, and can only be read (accessed
+via an immutable reference) by entry functions.
+
+Entry Functions that attempt to accept Clock by mutable
+reference or value will fail to verify, and honest validators
+will not sign or execute transactions that use Clock as an
+input parameter, unless it is passed by immutable reference.
 
 
 
struct Clock has key
@@ -45,7 +55,10 @@
 timestamp_ms: u64
 
 
- + The clock's timestamp, which is set automatically by a + system transaction every time consensus commits a + schedule, or by sui::clock::increment_for_testing during + testing.
@@ -59,6 +72,7 @@ +Sender is not @0x0 the system address.
const ENotSystemAddress: u64 = 0;
@@ -70,6 +84,8 @@
 
 ## Function `timestamp_ms`
 
+The clock's current timestamp as a running total of
+milliseconds since an arbitrary point in the past.
 
 
 
public fun timestamp_ms(clock: &clock::Clock): u64
@@ -94,6 +110,8 @@
 
 ## Function `create`
 
+Create and share the singleton Clock -- this function is
+called exactly once, during genesis.
 
 
 
fun create(ctx: &tx_context::TxContext)
diff --git a/crates/sui-framework/docs/deepbook/dependencies/sui-framework/coin.md b/crates/sui-framework/docs/deepbook/dependencies/sui-framework/coin.md
index 015a2e81e7340..772f6b73dd18e 100644
--- a/crates/sui-framework/docs/deepbook/dependencies/sui-framework/coin.md
+++ b/crates/sui-framework/docs/deepbook/dependencies/sui-framework/coin.md
@@ -3,6 +3,9 @@
 
 # Module `0x2::coin`
 
+Defines the Coin type - platform wide representation of fungible
+tokens and coins. Coin can be described as a secure wrapper around
+Balance type.
 
 
 -  [Resource `Coin`](#0x2_coin_Coin)
@@ -68,6 +71,7 @@
 
 ## Resource `Coin`
 
+A coin of type T worth value. Transferable and storable
 
 
 
struct Coin<T> has store, key
@@ -101,6 +105,8 @@
 
 ## Resource `CoinMetadata`
 
+Each Coin type T created through create_currency function will have a
+unique instance of CoinMetadata that stores the metadata for this coin type.
 
 
 
struct CoinMetadata<T> has store, key
@@ -123,31 +129,34 @@
 decimals: u8
 
 
- + Number of decimal places the coin uses. + A coin with value N and decimals D should be shown as N / 10^D + E.g., a coin with value 7002 and decimals 3 should be displayed as 7.002 + This is metadata for display usage only.
name: string::String
- + Name for the token
symbol: ascii::String
- + Symbol for the token
description: string::String
- + Description of the token
icon_url: option::Option<url::Url>
- + URL for the token logo
@@ -158,6 +167,8 @@ ## Resource `RegulatedCoinMetadata` +Similar to CoinMetadata, but created only for regulated coins that use the DenyList. +This object is always immutable.
struct RegulatedCoinMetadata<T> has key
@@ -180,13 +191,13 @@
 coin_metadata_object: object::ID
 
 
- + The ID of the coin's CoinMetadata object.
deny_cap_object: object::ID
- + The ID of the coin's DenyCap object.
@@ -197,6 +208,8 @@ ## Resource `TreasuryCap` +Capability allowing the bearer to mint and burn +coins of type T. Transferable
struct TreasuryCap<T> has store, key
@@ -230,6 +243,8 @@
 
 ## Resource `DenyCap`
 
+Capability allowing the bearer to freeze addresses, preventing those addresses from
+interacting with the coin as an input to a transaction.
 
 
 
struct DenyCap<T> has store, key
@@ -287,6 +302,7 @@
 
 
 
+Trying to split a coin more times than its balance allows.
 
 
 
const ENotEnough: u64 = 2;
@@ -296,6 +312,7 @@
 
 
 
+The index into the deny list vector for the sui::coin::Coin type.
 
 
 
const DENY_LIST_COIN_INDEX: u64 = 0;
@@ -305,6 +322,7 @@
 
 
 
+A type passed to create_supply is not a one-time witness.
 
 
 
const EBadWitness: u64 = 0;
@@ -314,6 +332,7 @@
 
 
 
+Invalid arguments are passed to a function.
 
 
 
const EInvalidArg: u64 = 1;
@@ -325,6 +344,7 @@
 
 ## Function `total_supply`
 
+Return the total number of T's in circulation.
 
 
 
public fun total_supply<T>(cap: &coin::TreasuryCap<T>): u64
@@ -349,6 +369,10 @@
 
 ## Function `treasury_into_supply`
 
+Unwrap TreasuryCap getting the Supply.
+
+Operation is irreversible. Supply cannot be converted into a TreasuryCap due
+to different security guarantees (TreasuryCap can be created only once for a type)
 
 
 
public fun treasury_into_supply<T>(treasury: coin::TreasuryCap<T>): balance::Supply<T>
@@ -375,6 +399,7 @@
 
 ## Function `supply_immut`
 
+Get immutable reference to the treasury's Supply.
 
 
 
public fun supply_immut<T>(treasury: &coin::TreasuryCap<T>): &balance::Supply<T>
@@ -399,6 +424,7 @@
 
 ## Function `supply_mut`
 
+Get mutable reference to the treasury's Supply.
 
 
 
public fun supply_mut<T>(treasury: &mut coin::TreasuryCap<T>): &mut balance::Supply<T>
@@ -423,6 +449,7 @@
 
 ## Function `value`
 
+Public getter for the coin's value
 
 
 
public fun value<T>(self: &coin::Coin<T>): u64
@@ -447,6 +474,7 @@
 
 ## Function `balance`
 
+Get immutable reference to the balance of a coin.
 
 
 
public fun balance<T>(coin: &coin::Coin<T>): &balance::Balance<T>
@@ -471,6 +499,7 @@
 
 ## Function `balance_mut`
 
+Get a mutable reference to the balance of a coin.
 
 
 
public fun balance_mut<T>(coin: &mut coin::Coin<T>): &mut balance::Balance<T>
@@ -495,6 +524,7 @@
 
 ## Function `from_balance`
 
+Wrap a balance into a Coin to make it transferable.
 
 
 
public fun from_balance<T>(balance: balance::Balance<T>, ctx: &mut tx_context::TxContext): coin::Coin<T>
@@ -519,6 +549,7 @@
 
 ## Function `into_balance`
 
+Destruct a Coin wrapper and keep the balance.
 
 
 
public fun into_balance<T>(coin: coin::Coin<T>): balance::Balance<T>
@@ -545,6 +576,8 @@
 
 ## Function `take`
 
+Take a Coin worth of value from Balance.
+Aborts if value > balance.value
 
 
 
public fun take<T>(balance: &mut balance::Balance<T>, value: u64, ctx: &mut tx_context::TxContext): coin::Coin<T>
@@ -574,6 +607,7 @@
 
 ## Function `put`
 
+Put a Coin<T> to the Balance<T>.
 
 
 
public fun put<T>(balance: &mut balance::Balance<T>, coin: coin::Coin<T>)
@@ -598,6 +632,8 @@
 
 ## Function `join`
 
+Consume the coin c and add its value to self.
+Aborts if c.value + self.value > U64_MAX
 
 
 
public entry fun join<T>(self: &mut coin::Coin<T>, c: coin::Coin<T>)
@@ -624,6 +660,8 @@
 
 ## Function `split`
 
+Split coin self to two coins, one with balance split_amount,
+and the remaining balance is left is self.
 
 
 
public fun split<T>(self: &mut coin::Coin<T>, split_amount: u64, ctx: &mut tx_context::TxContext): coin::Coin<T>
@@ -650,6 +688,8 @@
 
 ## Function `divide_into_n`
 
+Split coin self into n - 1 coins with equal balances. The remainder is left in
+self. Return newly created coins.
 
 
 
public fun divide_into_n<T>(self: &mut coin::Coin<T>, n: u64, ctx: &mut tx_context::TxContext): vector<coin::Coin<T>>
@@ -686,6 +726,8 @@
 
 ## Function `zero`
 
+Make any Coin with a zero value. Useful for placeholding
+bids/payments or preemptively making empty balances.
 
 
 
public fun zero<T>(ctx: &mut tx_context::TxContext): coin::Coin<T>
@@ -710,6 +752,7 @@
 
 ## Function `destroy_zero`
 
+Destroy a coin with value zero
 
 
 
public fun destroy_zero<T>(c: coin::Coin<T>)
@@ -736,6 +779,9 @@
 
 ## Function `create_currency`
 
+Create a new currency type T as and return the TreasuryCap for
+T to the caller. Can only be called with a one-time-witness
+type, ensuring that there's only one TreasuryCap per T.
 
 
 
public fun create_currency<T: drop>(witness: T, decimals: u8, symbol: vector<u8>, name: vector<u8>, description: vector<u8>, icon_url: option::Option<url::Url>, ctx: &mut tx_context::TxContext): (coin::TreasuryCap<T>, coin::CoinMetadata<T>)
@@ -784,6 +830,9 @@
 
 ## Function `create_regulated_currency`
 
+This creates a new currency, via create_currency, but with an extra capability that
+allows for specific addresses to have their coins frozen. Those addresses cannot interact
+with the coin as input objects.
 
 
 
public fun create_regulated_currency<T: drop>(witness: T, decimals: u8, symbol: vector<u8>, name: vector<u8>, description: vector<u8>, icon_url: option::Option<url::Url>, ctx: &mut tx_context::TxContext): (coin::TreasuryCap<T>, coin::DenyCap<T>, coin::CoinMetadata<T>)
@@ -833,6 +882,8 @@
 
 ## Function `mint`
 
+Create a coin worth value and increase the total supply
+in cap accordingly.
 
 
 
public fun mint<T>(cap: &mut coin::TreasuryCap<T>, value: u64, ctx: &mut tx_context::TxContext): coin::Coin<T>
@@ -862,6 +913,9 @@
 
 ## Function `mint_balance`
 
+Mint some amount of T as a Balance and increase the total
+supply in cap accordingly.
+Aborts if value + cap.total_supply >= U64_MAX
 
 
 
public fun mint_balance<T>(cap: &mut coin::TreasuryCap<T>, value: u64): balance::Balance<T>
@@ -888,6 +942,8 @@
 
 ## Function `burn`
 
+Destroy the coin c and decrease the total supply in cap
+accordingly.
 
 
 
public entry fun burn<T>(cap: &mut coin::TreasuryCap<T>, c: coin::Coin<T>): u64
@@ -914,6 +970,8 @@
 
 ## Function `deny_list_add`
 
+Adds the given address to the deny list, preventing it
+from interacting with the specified coin type as an input to a transaction.
 
 
 
public fun deny_list_add<T>(deny_list: &mut deny_list::DenyList, _deny_cap: &mut coin::DenyCap<T>, addr: address, _ctx: &mut tx_context::TxContext)
@@ -950,6 +1008,8 @@
 
 ## Function `deny_list_remove`
 
+Removes an address from the deny list.
+Aborts with ENotFrozen if the address is not already in the list.
 
 
 
public fun deny_list_remove<T>(deny_list: &mut deny_list::DenyList, _deny_cap: &mut coin::DenyCap<T>, addr: address, _ctx: &mut tx_context::TxContext)
@@ -986,6 +1046,8 @@
 
 ## Function `deny_list_contains`
 
+Returns true iff the given address is denied for the given coin type. It will
+return false if given a non-coin type.
 
 
 
public fun deny_list_contains<T>(freezer: &deny_list::DenyList, addr: address): bool
@@ -1022,6 +1084,7 @@
 
 ## Function `mint_and_transfer`
 
+Mint amount of Coin and send it to recipient. Invokes mint().
 
 
 
public entry fun mint_and_transfer<T>(c: &mut coin::TreasuryCap<T>, amount: u64, recipient: address, ctx: &mut tx_context::TxContext)
@@ -1048,6 +1111,7 @@
 
 ## Function `update_name`
 
+Update name of the coin in CoinMetadata
 
 
 
public entry fun update_name<T>(_treasury: &coin::TreasuryCap<T>, metadata: &mut coin::CoinMetadata<T>, name: string::String)
@@ -1074,6 +1138,7 @@
 
 ## Function `update_symbol`
 
+Update the symbol of the coin in CoinMetadata
 
 
 
public entry fun update_symbol<T>(_treasury: &coin::TreasuryCap<T>, metadata: &mut coin::CoinMetadata<T>, symbol: ascii::String)
@@ -1100,6 +1165,7 @@
 
 ## Function `update_description`
 
+Update the description of the coin in CoinMetadata
 
 
 
public entry fun update_description<T>(_treasury: &coin::TreasuryCap<T>, metadata: &mut coin::CoinMetadata<T>, description: string::String)
@@ -1126,6 +1192,7 @@
 
 ## Function `update_icon_url`
 
+Update the url of the coin in CoinMetadata
 
 
 
public entry fun update_icon_url<T>(_treasury: &coin::TreasuryCap<T>, metadata: &mut coin::CoinMetadata<T>, url: ascii::String)
diff --git a/crates/sui-framework/docs/deepbook/dependencies/sui-framework/deny_list.md b/crates/sui-framework/docs/deepbook/dependencies/sui-framework/deny_list.md
index 9d865ffa43bf1..103528188b67a 100644
--- a/crates/sui-framework/docs/deepbook/dependencies/sui-framework/deny_list.md
+++ b/crates/sui-framework/docs/deepbook/dependencies/sui-framework/deny_list.md
@@ -3,6 +3,9 @@
 
 # Module `0x2::deny_list`
 
+Defines the DenyList type. The DenyList shared object is used to restrict access to
+instances of certain core types from being used as inputs by specified addresses in the deny
+list.
 
 
 -  [Resource `DenyList`](#0x2_deny_list_DenyList)
@@ -32,6 +35,7 @@
 
 ## Resource `DenyList`
 
+A shared object that stores the addresses that are blocked for a given core type.
 
 
 
struct DenyList has key
@@ -54,7 +58,7 @@
 lists: bag::Bag
 
 
- + The individual deny lists.
@@ -65,6 +69,7 @@ ## Resource `PerTypeList` +Stores the addresses that are denied for a given core type.
struct PerTypeList has store, key
@@ -87,13 +92,16 @@
 denied_count: table::Table<address, u64>
 
 
- + Number of object types that have been banned for a given address. + Used to quickly skip checks for most addresses.
denied_addresses: table::Table<vector<u8>, vec_set::VecSet<address>>
- + Set of addresses that are banned for a given type. + For example with sui::coin::Coin: If addresses A and B are banned from using + "0...0123::my_coin::MY_COIN", this will be "0...0123::my_coin::MY_COIN" -> {A, B}.
@@ -107,6 +115,7 @@ +Trying to create a deny list object when not called by the system address.
const ENotSystemAddress: u64 = 0;
@@ -116,6 +125,7 @@
 
 
 
+The index into the deny list vector for the sui::coin::Coin type.
 
 
 
const COIN_INDEX: u64 = 0;
@@ -125,6 +135,7 @@
 
 
 
+The specified address to be removed is not already in the deny list.
 
 
 
const ENotDenied: u64 = 1;
@@ -136,6 +147,10 @@
 
 ## Function `add`
 
+Adds the given address to the deny list of the specified type, preventing it
+from interacting with instances of that type as an input to a transaction. For coins,
+the type specified is the type of the coin, not the coin type itself. For example,
+"00...0123::my_coin::MY_COIN" would be the type, not "00...02::coin::Coin".
 
 
 
public(friend) fun add(deny_list: &mut deny_list::DenyList, per_type_index: u64, type: vector<u8>, addr: address)
@@ -205,6 +220,8 @@
 
 ## Function `remove`
 
+Removes a previously denied address from the list.
+Aborts with ENotDenied if the address is not on the list.
 
 
 
public(friend) fun remove(deny_list: &mut deny_list::DenyList, per_type_index: u64, type: vector<u8>, addr: address)
@@ -269,6 +286,7 @@
 
 ## Function `contains`
 
+Returns true iff the given address is denied for the given type.
 
 
 
public(friend) fun contains(deny_list: &deny_list::DenyList, per_type_index: u64, type: vector<u8>, addr: address): bool
@@ -334,6 +352,8 @@
 
 ## Function `create`
 
+Creation of the deny list object is restricted to the system address
+via a system transaction.
 
 
 
fun create(ctx: &mut tx_context::TxContext)
diff --git a/crates/sui-framework/docs/deepbook/dependencies/sui-framework/dynamic_field.md b/crates/sui-framework/docs/deepbook/dependencies/sui-framework/dynamic_field.md
index 680eafed3e86a..eae2689bdda5f 100644
--- a/crates/sui-framework/docs/deepbook/dependencies/sui-framework/dynamic_field.md
+++ b/crates/sui-framework/docs/deepbook/dependencies/sui-framework/dynamic_field.md
@@ -3,6 +3,12 @@
 
 # Module `0x2::dynamic_field`
 
+In addition to the fields declared in its type definition, a Sui object can have dynamic fields
+that can be added after the object has been constructed. Unlike ordinary field names
+(which are always statically declared identifiers) a dynamic field name can be any value with
+the copy, drop, and store abilities, e.g. an integer, a boolean, or a string.
+This gives Sui programmers the flexibility to extend objects on-the-fly, and it also serves as a
+building block for core collection types
 
 
 -  [Resource `Field`](#0x2_dynamic_field_Field)
@@ -35,6 +41,7 @@
 
 ## Resource `Field`
 
+Internal object used for storing the field and value
 
 
 
struct Field<Name: copy, drop, store, Value: store> has key
@@ -51,19 +58,20 @@
 id: object::UID
 
 
- + Determined by the hash of the object ID, the field name value and it's type, + i.e. hash(parent.id || name || Name)
name: Name
- + The value for the name of this field
value: Value
- + The value bound to this field
@@ -77,6 +85,7 @@ +Failed to serialize the field's name
const EBCSSerializationFailure: u64 = 3;
@@ -86,6 +95,7 @@
 
 
 
+The object added as a dynamic field was previously a shared object
 
 
 
const ESharedObjectOperationNotSupported: u64 = 4;
@@ -95,6 +105,7 @@
 
 
 
+The object already has a dynamic field with this name (with the value and type specified)
 
 
 
const EFieldAlreadyExists: u64 = 0;
@@ -104,6 +115,8 @@
 
 
 
+Cannot load dynamic field.
+The object does not have a dynamic field with this name (with the value and type specified)
 
 
 
const EFieldDoesNotExist: u64 = 1;
@@ -113,6 +126,7 @@
 
 
 
+The object has a field with that name, but the value type does not match
 
 
 
const EFieldTypeMismatch: u64 = 2;
@@ -124,6 +138,8 @@
 
 ## Function `add`
 
+Adds a dynamic field to the object object: &mut UID at field specified by name: Name.
+Aborts with EFieldAlreadyExists if the object already has that field with that name.
 
 
 
public fun add<Name: copy, drop, store, Value: store>(object: &mut object::UID, name: Name, value: Value)
@@ -161,6 +177,10 @@
 
 ## Function `borrow`
 
+Immutably borrows the objects dynamic field with the name specified by name: Name.
+Aborts with EFieldDoesNotExist if the object does not have a field with that name.
+Aborts with EFieldTypeMismatch if the field exists, but the value does not have the specified
+type.
 
 
 
public fun borrow<Name: copy, drop, store, Value: store>(object: &object::UID, name: Name): &Value
@@ -191,6 +211,10 @@
 
 ## Function `borrow_mut`
 
+Mutably borrows the objects dynamic field with the name specified by name: Name.
+Aborts with EFieldDoesNotExist if the object does not have a field with that name.
+Aborts with EFieldTypeMismatch if the field exists, but the value does not have the specified
+type.
 
 
 
public fun borrow_mut<Name: copy, drop, store, Value: store>(object: &mut object::UID, name: Name): &mut Value
@@ -221,6 +245,11 @@
 
 ## Function `remove`
 
+Removes the objects dynamic field with the name specified by name: Name and returns the
+bound value.
+Aborts with EFieldDoesNotExist if the object does not have a field with that name.
+Aborts with EFieldTypeMismatch if the field exists, but the value does not have the specified
+type.
 
 
 
public fun remove<Name: copy, drop, store, Value: store>(object: &mut object::UID, name: Name): Value
@@ -252,6 +281,8 @@
 
 ## Function `exists_`
 
+Returns true if and only if the object has a dynamic field with the name specified by
+name: Name but without specifying the Value type
 
 
 
public fun exists_<Name: copy, drop, store>(object: &object::UID, name: Name): bool
@@ -281,6 +312,7 @@
 
 ## Function `remove_if_exists`
 
+Removes the dynamic field if it exists. Returns the some(Value) if it exists or none otherwise.
 
 
 
public fun remove_if_exists<Name: copy, drop, store, Value: store>(object: &mut object::UID, name: Name): option::Option<Value>
@@ -312,6 +344,8 @@
 
 ## Function `exists_with_type`
 
+Returns true if and only if the object has a dynamic field with the name specified by
+name: Name with an assigned value of type Value.
 
 
 
public fun exists_with_type<Name: copy, drop, store, Value: store>(object: &object::UID, name: Name): bool
@@ -401,6 +435,7 @@
 
 ## Function `hash_type_and_key`
 
+May abort with EBCSSerializationFailure.
 
 
 
public(friend) fun hash_type_and_key<K: copy, drop, store>(parent: address, k: K): address
@@ -445,6 +480,10 @@
 
 ## Function `borrow_child_object`
 
+throws EFieldDoesNotExist if a child does not exist with that ID
+or throws EFieldTypeMismatch if the type does not match,
+and may also abort with EBCSSerializationFailure
+we need two versions to return a reference or a mutable reference
 
 
 
public(friend) fun borrow_child_object<Child: key>(object: &object::UID, id: address): &Child
@@ -489,6 +528,9 @@
 
 ## Function `remove_child_object`
 
+throws EFieldDoesNotExist if a child does not exist with that ID
+or throws EFieldTypeMismatch if the type does not match,
+and may also abort with EBCSSerializationFailure.
 
 
 
public(friend) fun remove_child_object<Child: key>(parent: address, id: address): Child
diff --git a/crates/sui-framework/docs/deepbook/dependencies/sui-framework/dynamic_object_field.md b/crates/sui-framework/docs/deepbook/dependencies/sui-framework/dynamic_object_field.md
index 777939654d527..390505e9410a3 100644
--- a/crates/sui-framework/docs/deepbook/dependencies/sui-framework/dynamic_object_field.md
+++ b/crates/sui-framework/docs/deepbook/dependencies/sui-framework/dynamic_object_field.md
@@ -3,6 +3,10 @@
 
 # Module `0x2::dynamic_object_field`
 
+Similar to sui::dynamic_field, this module allows for the access of dynamic fields. But
+unlike, sui::dynamic_field the values bound to these dynamic fields _must_ be objects
+themselves. This allows for the objects to still exist within in storage, which may be important
+for external tools. The difference is otherwise not observable from within Move.
 
 
 -  [Struct `Wrapper`](#0x2_dynamic_object_field_Wrapper)
@@ -53,6 +57,8 @@
 
 ## Function `add`
 
+Adds a dynamic object field to the object object: &mut UID at field specified by name: Name.
+Aborts with EFieldAlreadyExists if the object already has that field with that name.
 
 
 
public fun add<Name: copy, drop, store, Value: store, key>(object: &mut object::UID, name: Name, value: Value)
@@ -86,6 +92,10 @@
 
 ## Function `borrow`
 
+Immutably borrows the objects dynamic object field with the name specified by name: Name.
+Aborts with EFieldDoesNotExist if the object does not have a field with that name.
+Aborts with EFieldTypeMismatch if the field exists, but the value object does not have the
+specified type.
 
 
 
public fun borrow<Name: copy, drop, store, Value: store, key>(object: &object::UID, name: Name): &Value
@@ -115,6 +125,10 @@
 
 ## Function `borrow_mut`
 
+Mutably borrows the objects dynamic object field with the name specified by name: Name.
+Aborts with EFieldDoesNotExist if the object does not have a field with that name.
+Aborts with EFieldTypeMismatch if the field exists, but the value object does not have the
+specified type.
 
 
 
public fun borrow_mut<Name: copy, drop, store, Value: store, key>(object: &mut object::UID, name: Name): &mut Value
@@ -144,6 +158,11 @@
 
 ## Function `remove`
 
+Removes the objects dynamic object field with the name specified by name: Name and returns
+the bound object.
+Aborts with EFieldDoesNotExist if the object does not have a field with that name.
+Aborts with EFieldTypeMismatch if the field exists, but the value object does not have the
+specified type.
 
 
 
public fun remove<Name: copy, drop, store, Value: store, key>(object: &mut object::UID, name: Name): Value
@@ -175,6 +194,8 @@
 
 ## Function `exists_`
 
+Returns true if and only if the object has a dynamic object field with the name specified by
+name: Name.
 
 
 
public fun exists_<Name: copy, drop, store>(object: &object::UID, name: Name): bool
@@ -203,6 +224,8 @@
 
 ## Function `exists_with_type`
 
+Returns true if and only if the object has a dynamic field with the name specified by
+name: Name with an assigned value of type Value.
 
 
 
public fun exists_with_type<Name: copy, drop, store, Value: store, key>(object: &object::UID, name: Name): bool
@@ -233,6 +256,8 @@
 
 ## Function `id`
 
+Returns the ID of the object associated with the dynamic object field
+Returns none otherwise
 
 
 
public fun id<Name: copy, drop, store>(object: &object::UID, name: Name): option::Option<object::ID>
diff --git a/crates/sui-framework/docs/deepbook/dependencies/sui-framework/event.md b/crates/sui-framework/docs/deepbook/dependencies/sui-framework/event.md
index 6feab90ed56ff..16d14740a6143 100644
--- a/crates/sui-framework/docs/deepbook/dependencies/sui-framework/event.md
+++ b/crates/sui-framework/docs/deepbook/dependencies/sui-framework/event.md
@@ -3,6 +3,31 @@
 
 # Module `0x2::event`
 
+Events module. Defines the sui::event::emit function which
+creates and sends a custom MoveEvent as a part of the effects
+certificate of the transaction.
+
+Every MoveEvent has the following properties:
+- sender
+- type signature (T)
+- event data (the value of T)
+- timestamp (local to a node)
+- transaction digest
+
+Example:
+```
+module my::marketplace {
+use sui::event;
+/* ... */
+struct ItemPurchased has copy, drop {
+item_id: ID, buyer: address
+}
+entry fun buy(/* .... */) {
+/* ... */
+event::emit(ItemPurchased { item_id: ..., buyer: .... })
+}
+}
+```
 
 
 -  [Function `emit`](#0x2_event_emit)
@@ -16,6 +41,13 @@
 
 ## Function `emit`
 
+Emit a custom Move event, sending the data offchain.
+
+Used for creating custom indexes and tracking onchain
+activity in a way that suits a specific application the most.
+
+The type T is the main way to index the event, and can contain
+phantom parameters, eg emit(MyEvent<phantom T>).
 
 
 
public fun emit<T: copy, drop>(event: T)
diff --git a/crates/sui-framework/docs/deepbook/dependencies/sui-framework/hex.md b/crates/sui-framework/docs/deepbook/dependencies/sui-framework/hex.md
index 202d3300b4619..274365a8ccba7 100644
--- a/crates/sui-framework/docs/deepbook/dependencies/sui-framework/hex.md
+++ b/crates/sui-framework/docs/deepbook/dependencies/sui-framework/hex.md
@@ -3,6 +3,7 @@
 
 # Module `0x2::hex`
 
+HEX (Base16) encoding utility.
 
 
 -  [Constants](#@Constants_0)
@@ -41,6 +42,7 @@
 
 
 
+Vector of Base16 values from 00 to FF
 
 
 
const HEX: vector<vector<u8>> = [ByteArray([48, 48]), ByteArray([48, 49]), ByteArray([48, 50]), ByteArray([48, 51]), ByteArray([48, 52]), ByteArray([48, 53]), ByteArray([48, 54]), ByteArray([48, 55]), ByteArray([48, 56]), ByteArray([48, 57]), ByteArray([48, 97]), ByteArray([48, 98]), ByteArray([48, 99]), ByteArray([48, 100]), ByteArray([48, 101]), ByteArray([48, 102]), ByteArray([49, 48]), ByteArray([49, 49]), ByteArray([49, 50]), ByteArray([49, 51]), ByteArray([49, 52]), ByteArray([49, 53]), ByteArray([49, 54]), ByteArray([49, 55]), ByteArray([49, 56]), ByteArray([49, 57]), ByteArray([49, 97]), ByteArray([49, 98]), ByteArray([49, 99]), ByteArray([49, 100]), ByteArray([49, 101]), ByteArray([49, 102]), ByteArray([50, 48]), ByteArray([50, 49]), ByteArray([50, 50]), ByteArray([50, 51]), ByteArray([50, 52]), ByteArray([50, 53]), ByteArray([50, 54]), ByteArray([50, 55]), ByteArray([50, 56]), ByteArray([50, 57]), ByteArray([50, 97]), ByteArray([50, 98]), ByteArray([50, 99]), ByteArray([50, 100]), ByteArray([50, 101]), ByteArray([50, 102]), ByteArray([51, 48]), ByteArray([51, 49]), ByteArray([51, 50]), ByteArray([51, 51]), ByteArray([51, 52]), ByteArray([51, 53]), ByteArray([51, 54]), ByteArray([51, 55]), ByteArray([51, 56]), ByteArray([51, 57]), ByteArray([51, 97]), ByteArray([51, 98]), ByteArray([51, 99]), ByteArray([51, 100]), ByteArray([51, 101]), ByteArray([51, 102]), ByteArray([52, 48]), ByteArray([52, 49]), ByteArray([52, 50]), ByteArray([52, 51]), ByteArray([52, 52]), ByteArray([52, 53]), ByteArray([52, 54]), ByteArray([52, 55]), ByteArray([52, 56]), ByteArray([52, 57]), ByteArray([52, 97]), ByteArray([52, 98]), ByteArray([52, 99]), ByteArray([52, 100]), ByteArray([52, 101]), ByteArray([52, 102]), ByteArray([53, 48]), ByteArray([53, 49]), ByteArray([53, 50]), ByteArray([53, 51]), ByteArray([53, 52]), ByteArray([53, 53]), ByteArray([53, 54]), ByteArray([53, 55]), ByteArray([53, 56]), ByteArray([53, 57]), ByteArray([53, 97]), ByteArray([53, 98]), ByteArray([53, 99]), ByteArray([53, 100]), ByteArray([53, 101]), ByteArray([53, 102]), ByteArray([54, 48]), ByteArray([54, 49]), ByteArray([54, 50]), ByteArray([54, 51]), ByteArray([54, 52]), ByteArray([54, 53]), ByteArray([54, 54]), ByteArray([54, 55]), ByteArray([54, 56]), ByteArray([54, 57]), ByteArray([54, 97]), ByteArray([54, 98]), ByteArray([54, 99]), ByteArray([54, 100]), ByteArray([54, 101]), ByteArray([54, 102]), ByteArray([55, 48]), ByteArray([55, 49]), ByteArray([55, 50]), ByteArray([55, 51]), ByteArray([55, 52]), ByteArray([55, 53]), ByteArray([55, 54]), ByteArray([55, 55]), ByteArray([55, 56]), ByteArray([55, 57]), ByteArray([55, 97]), ByteArray([55, 98]), ByteArray([55, 99]), ByteArray([55, 100]), ByteArray([55, 101]), ByteArray([55, 102]), ByteArray([56, 48]), ByteArray([56, 49]), ByteArray([56, 50]), ByteArray([56, 51]), ByteArray([56, 52]), ByteArray([56, 53]), ByteArray([56, 54]), ByteArray([56, 55]), ByteArray([56, 56]), ByteArray([56, 57]), ByteArray([56, 97]), ByteArray([56, 98]), ByteArray([56, 99]), ByteArray([56, 100]), ByteArray([56, 101]), ByteArray([56, 102]), ByteArray([57, 48]), ByteArray([57, 49]), ByteArray([57, 50]), ByteArray([57, 51]), ByteArray([57, 52]), ByteArray([57, 53]), ByteArray([57, 54]), ByteArray([57, 55]), ByteArray([57, 56]), ByteArray([57, 57]), ByteArray([57, 97]), ByteArray([57, 98]), ByteArray([57, 99]), ByteArray([57, 100]), ByteArray([57, 101]), ByteArray([57, 102]), ByteArray([97, 48]), ByteArray([97, 49]), ByteArray([97, 50]), ByteArray([97, 51]), ByteArray([97, 52]), ByteArray([97, 53]), ByteArray([97, 54]), ByteArray([97, 55]), ByteArray([97, 56]), ByteArray([97, 57]), ByteArray([97, 97]), ByteArray([97, 98]), ByteArray([97, 99]), ByteArray([97, 100]), ByteArray([97, 101]), ByteArray([97, 102]), ByteArray([98, 48]), ByteArray([98, 49]), ByteArray([98, 50]), ByteArray([98, 51]), ByteArray([98, 52]), ByteArray([98, 53]), ByteArray([98, 54]), ByteArray([98, 55]), ByteArray([98, 56]), ByteArray([98, 57]), ByteArray([98, 97]), ByteArray([98, 98]), ByteArray([98, 99]), ByteArray([98, 100]), ByteArray([98, 101]), ByteArray([98, 102]), ByteArray([99, 48]), ByteArray([99, 49]), ByteArray([99, 50]), ByteArray([99, 51]), ByteArray([99, 52]), ByteArray([99, 53]), ByteArray([99, 54]), ByteArray([99, 55]), ByteArray([99, 56]), ByteArray([99, 57]), ByteArray([99, 97]), ByteArray([99, 98]), ByteArray([99, 99]), ByteArray([99, 100]), ByteArray([99, 101]), ByteArray([99, 102]), ByteArray([100, 48]), ByteArray([100, 49]), ByteArray([100, 50]), ByteArray([100, 51]), ByteArray([100, 52]), ByteArray([100, 53]), ByteArray([100, 54]), ByteArray([100, 55]), ByteArray([100, 56]), ByteArray([100, 57]), ByteArray([100, 97]), ByteArray([100, 98]), ByteArray([100, 99]), ByteArray([100, 100]), ByteArray([100, 101]), ByteArray([100, 102]), ByteArray([101, 48]), ByteArray([101, 49]), ByteArray([101, 50]), ByteArray([101, 51]), ByteArray([101, 52]), ByteArray([101, 53]), ByteArray([101, 54]), ByteArray([101, 55]), ByteArray([101, 56]), ByteArray([101, 57]), ByteArray([101, 97]), ByteArray([101, 98]), ByteArray([101, 99]), ByteArray([101, 100]), ByteArray([101, 101]), ByteArray([101, 102]), ByteArray([102, 48]), ByteArray([102, 49]), ByteArray([102, 50]), ByteArray([102, 51]), ByteArray([102, 52]), ByteArray([102, 53]), ByteArray([102, 54]), ByteArray([102, 55]), ByteArray([102, 56]), ByteArray([102, 57]), ByteArray([102, 97]), ByteArray([102, 98]), ByteArray([102, 99]), ByteArray([102, 100]), ByteArray([102, 101]), ByteArray([102, 102])];
@@ -52,6 +54,7 @@
 
 ## Function `encode`
 
+Encode bytes in lowercase hex
 
 
 
public fun encode(bytes: vector<u8>): vector<u8>
@@ -85,6 +88,12 @@
 
 ## Function `decode`
 
+Decode hex into bytes
+Takes a hex string (no 0x prefix) (e.g. b"0f3a")
+Returns vector of bytes that represents the hex string (e.g. x"0f3a")
+Hex string can be case insensitive (e.g. b"0F3A" and b"0f3a" both return x"0f3a")
+Aborts if the hex string does not have an even number of characters (as each hex character is 2 characters long)
+Aborts if the hex string contains non-valid hex characters (valid characters are 0 - 9, a - f, A - F)
 
 
 
public fun decode(hex: vector<u8>): vector<u8>
diff --git a/crates/sui-framework/docs/deepbook/dependencies/sui-framework/linked_table.md b/crates/sui-framework/docs/deepbook/dependencies/sui-framework/linked_table.md
index 7ef4989256d1e..58ade591c373b 100644
--- a/crates/sui-framework/docs/deepbook/dependencies/sui-framework/linked_table.md
+++ b/crates/sui-framework/docs/deepbook/dependencies/sui-framework/linked_table.md
@@ -3,6 +3,8 @@
 
 # Module `0x2::linked_table`
 
+Similar to sui::table but the values are linked together, allowing for ordered insertion and
+removal
 
 
 -  [Resource `LinkedTable`](#0x2_linked_table_LinkedTable)
@@ -55,25 +57,25 @@
 id: object::UID
 
 
- + the ID of this table
size: u64
- + the number of key-value pairs in the table
head: option::Option<K>
- + the front of the table, i.e. the key of the first entry
tail: option::Option<K>
- + the back of the table, i.e. the key of the last entry
@@ -100,19 +102,19 @@ prev: option::Option<K>
- + the previous key
next: option::Option<K>
- + the next key
value: V
- + the value being stored
@@ -146,6 +148,7 @@ ## Function `new` +Creates a new, empty table
public fun new<K: copy, drop, store, V: store>(ctx: &mut tx_context::TxContext): linked_table::LinkedTable<K, V>
@@ -175,6 +178,7 @@
 
 ## Function `front`
 
+Returns the key for the first element in the table, or None if the table is empty
 
 
 
public fun front<K: copy, drop, store, V: store>(table: &linked_table::LinkedTable<K, V>): &option::Option<K>
@@ -199,6 +203,7 @@
 
 ## Function `back`
 
+Returns the key for the last element in the table, or None if the table is empty
 
 
 
public fun back<K: copy, drop, store, V: store>(table: &linked_table::LinkedTable<K, V>): &option::Option<K>
@@ -223,6 +228,10 @@
 
 ## Function `push_front`
 
+Inserts a key-value pair at the front of the table, i.e. the newly inserted pair will be
+the first element in the table
+Aborts with sui::dynamic_field::EFieldAlreadyExists if the table already has an entry with
+that key k: K.
 
 
 
public fun push_front<K: copy, drop, store, V: store>(table: &mut linked_table::LinkedTable<K, V>, k: K, value: V)
@@ -262,6 +271,10 @@
 
 ## Function `push_back`
 
+Inserts a key-value pair at the back of the table, i.e. the newly inserted pair will be
+the last element in the table
+Aborts with sui::dynamic_field::EFieldAlreadyExists if the table already has an entry with
+that key k: K.
 
 
 
public fun push_back<K: copy, drop, store, V: store>(table: &mut linked_table::LinkedTable<K, V>, k: K, value: V)
@@ -301,6 +314,9 @@
 
 ## Function `borrow`
 
+Immutable borrows the value associated with the key in the table table: &LinkedTable<K, V>.
+Aborts with sui::dynamic_field::EFieldDoesNotExist if the table does not have an entry with
+that key k: K.
 
 
 
public fun borrow<K: copy, drop, store, V: store>(table: &linked_table::LinkedTable<K, V>, k: K): &V
@@ -325,6 +341,9 @@
 
 ## Function `borrow_mut`
 
+Mutably borrows the value associated with the key in the table table: &mut LinkedTable<K, V>.
+Aborts with sui::dynamic_field::EFieldDoesNotExist if the table does not have an entry with
+that key k: K.
 
 
 
public fun borrow_mut<K: copy, drop, store, V: store>(table: &mut linked_table::LinkedTable<K, V>, k: K): &mut V
@@ -352,6 +371,10 @@
 
 ## Function `prev`
 
+Borrows the key for the previous entry of the specified key k: K in the table
+table: &LinkedTable<K, V>. Returns None if the entry does not have a predecessor.
+Aborts with sui::dynamic_field::EFieldDoesNotExist if the table does not have an entry with
+that key k: K
 
 
 
public fun prev<K: copy, drop, store, V: store>(table: &linked_table::LinkedTable<K, V>, k: K): &option::Option<K>
@@ -376,6 +399,10 @@
 
 ## Function `next`
 
+Borrows the key for the next entry of the specified key k: K in the table
+table: &LinkedTable<K, V>. Returns None if the entry does not have a predecessor.
+Aborts with sui::dynamic_field::EFieldDoesNotExist if the table does not have an entry with
+that key k: K
 
 
 
public fun next<K: copy, drop, store, V: store>(table: &linked_table::LinkedTable<K, V>, k: K): &option::Option<K>
@@ -400,6 +427,10 @@
 
 ## Function `remove`
 
+Removes the key-value pair in the table table: &mut LinkedTable<K, V> and returns the value.
+This splices the element out of the ordering.
+Aborts with sui::dynamic_field::EFieldDoesNotExist if the table does not have an entry with
+that key k: K. Note: this is also what happens when the table is empty.
 
 
 
public fun remove<K: copy, drop, store, V: store>(table: &mut linked_table::LinkedTable<K, V>, k: K): V
@@ -434,6 +465,8 @@
 
 ## Function `pop_front`
 
+Removes the front of the table table: &mut LinkedTable<K, V> and returns the value.
+Aborts with ETableIsEmpty if the table is empty
 
 
 
public fun pop_front<K: copy, drop, store, V: store>(table: &mut linked_table::LinkedTable<K, V>): (K, V)
@@ -460,6 +493,8 @@
 
 ## Function `pop_back`
 
+Removes the back of the table table: &mut LinkedTable<K, V> and returns the value.
+Aborts with ETableIsEmpty if the table is empty
 
 
 
public fun pop_back<K: copy, drop, store, V: store>(table: &mut linked_table::LinkedTable<K, V>): (K, V)
@@ -486,6 +521,8 @@
 
 ## Function `contains`
 
+Returns true iff there is a value associated with the key k: K in table
+table: &LinkedTable<K, V>
 
 
 
public fun contains<K: copy, drop, store, V: store>(table: &linked_table::LinkedTable<K, V>, k: K): bool
@@ -510,6 +547,7 @@
 
 ## Function `length`
 
+Returns the size of the table, the number of key-value pairs
 
 
 
public fun length<K: copy, drop, store, V: store>(table: &linked_table::LinkedTable<K, V>): u64
@@ -534,6 +572,7 @@
 
 ## Function `is_empty`
 
+Returns true iff the table is empty (if length returns 0)
 
 
 
public fun is_empty<K: copy, drop, store, V: store>(table: &linked_table::LinkedTable<K, V>): bool
@@ -558,6 +597,8 @@
 
 ## Function `destroy_empty`
 
+Destroys an empty table
+Aborts with ETableNotEmpty if the table still contains values
 
 
 
public fun destroy_empty<K: copy, drop, store, V: store>(table: linked_table::LinkedTable<K, V>)
@@ -584,6 +625,8 @@
 
 ## Function `drop`
 
+Drop a possibly non-empty table.
+Usable only if the value type V has the drop ability
 
 
 
public fun drop<K: copy, drop, store, V: drop, store>(table: linked_table::LinkedTable<K, V>)
diff --git a/crates/sui-framework/docs/deepbook/dependencies/sui-framework/math.md b/crates/sui-framework/docs/deepbook/dependencies/sui-framework/math.md
index 4500b3c1e344e..a7885e6031b34 100644
--- a/crates/sui-framework/docs/deepbook/dependencies/sui-framework/math.md
+++ b/crates/sui-framework/docs/deepbook/dependencies/sui-framework/math.md
@@ -3,6 +3,7 @@
 
 # Module `0x2::math`
 
+Basic math for nicer programmability
 
 
 -  [Function `max`](#0x2_math_max)
@@ -22,6 +23,7 @@
 
 ## Function `max`
 
+Return the larger of x and y
 
 
 
public fun max(x: u64, y: u64): u64
@@ -50,6 +52,7 @@
 
 ## Function `min`
 
+Return the smaller of x and y
 
 
 
public fun min(x: u64, y: u64): u64
@@ -78,6 +81,7 @@
 
 ## Function `diff`
 
+Return the absolute value of x - y
 
 
 
public fun diff(x: u64, y: u64): u64
@@ -106,6 +110,7 @@
 
 ## Function `pow`
 
+Return the value of a base raised to a power
 
 
 
public fun pow(base: u64, exponent: u8): u64
@@ -141,6 +146,31 @@
 
 ## Function `sqrt`
 
+Get a nearest lower integer Square Root for x. Given that this
+function can only operate with integers, it is impossible
+to get perfect (or precise) integer square root for some numbers.
+
+Example:
+```
+math::sqrt(9) => 3
+math::sqrt(8) => 2 // the nearest lower square root is 4;
+```
+
+In integer math, one of the possible ways to get results with more
+precision is to use higher values or temporarily multiply the
+value by some bigger number. Ideally if this is a square of 10 or 100.
+
+Example:
+```
+math::sqrt(8) => 2;
+math::sqrt(8 * 10000) => 282;
+// now we can use this value as if it was 2.82;
+// but to get the actual result, this value needs
+// to be divided by 100 (because sqrt(10000)).
+
+
+math::sqrt(8 * 1000000) => 2828; // same as above, 2828 / 1000 (2.828)
+```
 
 
 
public fun sqrt(x: u64): u64
@@ -179,6 +209,31 @@
 
 ## Function `sqrt_u128`
 
+Similar to math::sqrt, but for u128 numbers. Get a nearest lower integer Square Root for x. Given that this
+function can only operate with integers, it is impossible
+to get perfect (or precise) integer square root for some numbers.
+
+Example:
+```
+math::sqrt_u128(9) => 3
+math::sqrt_u128(8) => 2 // the nearest lower square root is 4;
+```
+
+In integer math, one of the possible ways to get results with more
+precision is to use higher values or temporarily multiply the
+value by some bigger number. Ideally if this is a square of 10 or 100.
+
+Example:
+```
+math::sqrt_u128(8) => 2;
+math::sqrt_u128(8 * 10000) => 282;
+// now we can use this value as if it was 2.82;
+// but to get the actual result, this value needs
+// to be divided by 100 (because sqrt_u128(10000)).
+
+
+math::sqrt_u128(8 * 1000000) => 2828; // same as above, 2828 / 1000 (2.828)
+```
 
 
 
public fun sqrt_u128(x: u128): u128
@@ -217,6 +272,7 @@
 
 ## Function `divide_and_round_up`
 
+Calculate x / y, but round up the result.
 
 
 
public fun divide_and_round_up(x: u64, y: u64): u64
diff --git a/crates/sui-framework/docs/deepbook/dependencies/sui-framework/object.md b/crates/sui-framework/docs/deepbook/dependencies/sui-framework/object.md
index 2343ca0844d6c..eb05b2a7b22ed 100644
--- a/crates/sui-framework/docs/deepbook/dependencies/sui-framework/object.md
+++ b/crates/sui-framework/docs/deepbook/dependencies/sui-framework/object.md
@@ -3,6 +3,7 @@
 
 # Module `0x2::object`
 
+Sui object identifiers
 
 
 -  [Struct `ID`](#0x2_object_ID)
@@ -44,6 +45,12 @@
 
 ## Struct `ID`
 
+An object ID. This is used to reference Sui Objects.
+This is *not* guaranteed to be globally unique--anyone can create an ID from a UID or
+from an object, and ID's can be freely copied and dropped.
+Here, the values are not globally unique because there can be multiple values of type ID
+with the same underlying bytes. For example, object::id(&obj) can be called as many times
+as you want for a given obj, and each ID value will be identical.
 
 
 
struct ID has copy, drop, store
@@ -71,6 +78,12 @@
 
 ## Struct `UID`
 
+Globally unique IDs that define an object's ID in storage. Any Sui Object, that is a struct
+with the key ability, must have id: UID as its first field.
+These are globally unique in the sense that no two values of type UID are ever equal, in
+other words for any two values id1: UID and id2: UID, id1 != id2.
+This is a privileged type that can only be derived from a TxContext.
+UID doesn't have the drop ability, so deleting a UID requires a call to delete.
 
 
 
struct UID has store
@@ -101,6 +114,7 @@
 
 
 
+Sender is not @0x0 the system address.
 
 
 
const ENotSystemAddress: u64 = 0;
@@ -110,6 +124,7 @@
 
 
 
+The hardcoded ID for the singleton AuthenticatorState Object.
 
 
 
const SUI_AUTHENTICATOR_STATE_ID: address = 7;
@@ -119,6 +134,7 @@
 
 
 
+The hardcoded ID for the singleton Clock Object.
 
 
 
const SUI_CLOCK_OBJECT_ID: address = 6;
@@ -128,6 +144,7 @@
 
 
 
+The hardcoded ID for the singleton DenyList.
 
 
 
const SUI_DENY_LIST_OBJECT_ID: address = 403;
@@ -137,6 +154,7 @@
 
 
 
+The hardcoded ID for the singleton Random Object.
 
 
 
const SUI_RANDOM_ID: address = 8;
@@ -146,6 +164,7 @@
 
 
 
+The hardcoded ID for the singleton Sui System State Object.
 
 
 
const SUI_SYSTEM_STATE_OBJECT_ID: address = 5;
@@ -157,6 +176,7 @@
 
 ## Function `id_to_bytes`
 
+Get the raw bytes of a ID
 
 
 
public fun id_to_bytes(id: &object::ID): vector<u8>
@@ -181,6 +201,7 @@
 
 ## Function `id_to_address`
 
+Get the inner bytes of id as an address.
 
 
 
public fun id_to_address(id: &object::ID): address
@@ -205,6 +226,7 @@
 
 ## Function `id_from_bytes`
 
+Make an ID from raw bytes.
 
 
 
public fun id_from_bytes(bytes: vector<u8>): object::ID
@@ -229,6 +251,7 @@
 
 ## Function `id_from_address`
 
+Make an ID from an address.
 
 
 
public fun id_from_address(bytes: address): object::ID
@@ -253,6 +276,8 @@
 
 ## Function `sui_system_state`
 
+Create the UID for the singleton SuiSystemState object.
+This should only be called once from sui_system.
 
 
 
fun sui_system_state(ctx: &tx_context::TxContext): object::UID
@@ -280,6 +305,8 @@
 
 ## Function `clock`
 
+Create the UID for the singleton Clock object.
+This should only be called once from clock.
 
 
 
public(friend) fun clock(): object::UID
@@ -306,6 +333,8 @@
 
 ## Function `authenticator_state`
 
+Create the UID for the singleton AuthenticatorState object.
+This should only be called once from authenticator_state.
 
 
 
public(friend) fun authenticator_state(): object::UID
@@ -332,6 +361,8 @@
 
 ## Function `randomness_state`
 
+Create the UID for the singleton Random object.
+This should only be called once from random.
 
 
 
public(friend) fun randomness_state(): object::UID
@@ -358,6 +389,8 @@
 
 ## Function `sui_deny_list_object_id`
 
+Create the UID for the singleton DenyList object.
+This should only be called once from deny_list.
 
 
 
public(friend) fun sui_deny_list_object_id(): object::UID
@@ -384,6 +417,7 @@
 
 ## Function `uid_as_inner`
 
+Get the inner ID of uid
 
 
 
public fun uid_as_inner(uid: &object::UID): &object::ID
@@ -408,6 +442,7 @@
 
 ## Function `uid_to_inner`
 
+Get the raw bytes of a uid's inner ID
 
 
 
public fun uid_to_inner(uid: &object::UID): object::ID
@@ -432,6 +467,7 @@
 
 ## Function `uid_to_bytes`
 
+Get the raw bytes of a UID
 
 
 
public fun uid_to_bytes(uid: &object::UID): vector<u8>
@@ -456,6 +492,7 @@
 
 ## Function `uid_to_address`
 
+Get the inner bytes of id as an address.
 
 
 
public fun uid_to_address(uid: &object::UID): address
@@ -480,6 +517,8 @@
 
 ## Function `new`
 
+Create a new object. Returns the UID that must be stored in a Sui object.
+This is the only way to create UIDs.
 
 
 
public fun new(ctx: &mut tx_context::TxContext): object::UID
@@ -506,6 +545,7 @@
 
 ## Function `delete`
 
+Delete the object and it's UID. This is the only way to eliminate a UID.
 
 
 
public fun delete(id: object::UID)
@@ -531,6 +571,7 @@
 
 ## Function `id`
 
+Get the underlying ID of obj
 
 
 
public fun id<T: key>(obj: &T): object::ID
@@ -555,6 +596,7 @@
 
 ## Function `borrow_id`
 
+Borrow the underlying ID of obj
 
 
 
public fun borrow_id<T: key>(obj: &T): &object::ID
@@ -579,6 +621,7 @@
 
 ## Function `id_bytes`
 
+Get the raw bytes for the underlying ID of obj
 
 
 
public fun id_bytes<T: key>(obj: &T): vector<u8>
@@ -603,6 +646,7 @@
 
 ## Function `id_address`
 
+Get the inner bytes for the underlying ID of obj
 
 
 
public fun id_address<T: key>(obj: &T): address
@@ -627,6 +671,11 @@
 
 ## Function `borrow_uid`
 
+Get the UID for obj.
+Safe because Sui has an extra bytecode verifier pass that forces every struct with
+the key ability to have a distinguished UID field.
+Cannot be made public as the access to UID for a given object must be privileged, and
+restrictable in the object's module.
 
 
 
fun borrow_uid<T: key>(obj: &T): &object::UID
@@ -649,6 +698,7 @@
 
 ## Function `new_uid_from_hash`
 
+Generate a new UID specifically used for creating a UID from a hash
 
 
 
public(friend) fun new_uid_from_hash(bytes: address): object::UID
diff --git a/crates/sui-framework/docs/deepbook/dependencies/sui-framework/random.md b/crates/sui-framework/docs/deepbook/dependencies/sui-framework/random.md
index 46fb8b93ea534..02006e7a7d91e 100644
--- a/crates/sui-framework/docs/deepbook/dependencies/sui-framework/random.md
+++ b/crates/sui-framework/docs/deepbook/dependencies/sui-framework/random.md
@@ -27,6 +27,8 @@
 
 ## Resource `Random`
 
+Singleton shared object which stores the global randomness state.
+The actual state is stored in a versioned inner field.
 
 
 
struct Random has key
@@ -146,6 +148,9 @@
 
 ## Function `create`
 
+Create and share the Random object. This function is called exactly once, when
+the Random object is first created.
+Can only be called by genesis or change_epoch transactions.
 
 
 
fun create(ctx: &mut tx_context::TxContext)
@@ -249,6 +254,8 @@
 
 ## Function `update_randomness_state`
 
+Record new randomness. Called when executing the RandomnessStateUpdate system
+transaction.
 
 
 
fun update_randomness_state(self: &mut random::Random, new_round: u64, new_bytes: vector<u8>, ctx: &tx_context::TxContext)
diff --git a/crates/sui-framework/docs/deepbook/dependencies/sui-framework/sui.md b/crates/sui-framework/docs/deepbook/dependencies/sui-framework/sui.md
index e4fc549a40e08..b316ff244d3b1 100644
--- a/crates/sui-framework/docs/deepbook/dependencies/sui-framework/sui.md
+++ b/crates/sui-framework/docs/deepbook/dependencies/sui-framework/sui.md
@@ -3,6 +3,8 @@
 
 # Module `0x2::sui`
 
+Coin is the token used to pay for gas in Sui.
+It has 9 decimals, and the smallest unit (10^-9) is called "mist".
 
 
 -  [Struct `SUI`](#0x2_sui_SUI)
@@ -25,6 +27,7 @@
 
 ## Struct `SUI`
 
+Name of the coin
 
 
 
struct SUI has drop
@@ -55,6 +58,7 @@
 
 
 
+Sender is not @0x0 the system address.
 
 
 
const ENotSystemAddress: u64 = 1;
@@ -73,6 +77,8 @@
 
 
 
+The amount of Mist per Sui token based on the the fact that mist is
+10^-9 of a Sui token
 
 
 
const MIST_PER_SUI: u64 = 1000000000;
@@ -82,6 +88,7 @@
 
 
 
+The total supply of Sui denominated in Mist (10 Billion * 10^9)
 
 
 
const TOTAL_SUPPLY_MIST: u64 = 10000000000000000000;
@@ -91,6 +98,7 @@
 
 
 
+The total supply of Sui denominated in whole Sui tokens (10 Billion)
 
 
 
const TOTAL_SUPPLY_SUI: u64 = 10000000000;
@@ -102,6 +110,8 @@
 
 ## Function `new`
 
+Register the SUI Coin to acquire its Supply.
+This should be called only once during genesis creation.
 
 
 
fun new(ctx: &mut tx_context::TxContext): balance::Balance<sui::SUI>
diff --git a/crates/sui-framework/docs/deepbook/dependencies/sui-framework/table.md b/crates/sui-framework/docs/deepbook/dependencies/sui-framework/table.md
index b9383a24ff555..46d8e6efff72d 100644
--- a/crates/sui-framework/docs/deepbook/dependencies/sui-framework/table.md
+++ b/crates/sui-framework/docs/deepbook/dependencies/sui-framework/table.md
@@ -3,6 +3,21 @@
 
 # Module `0x2::table`
 
+A table is a map-like collection. But unlike a traditional collection, it's keys and values are
+not stored within the Table value, but instead are stored using Sui's object system. The
+Table struct acts only as a handle into the object system to retrieve those keys and values.
+Note that this means that Table values with exactly the same key-value mapping will not be
+equal, with ==, at runtime. For example
+```
+let table1 = table::new();
+let table2 = table::new();
+table::add(&mut table1, 0, false);
+table::add(&mut table1, 1, true);
+table::add(&mut table2, 0, false);
+table::add(&mut table2, 1, true);
+// table1 does not equal table2, despite having the same entries
+assert!(&table1 != &table2, 0);
+```
 
 
 -  [Resource `Table`](#0x2_table_Table)
@@ -46,13 +61,13 @@
 id: object::UID
 
 
- + the ID of this table
size: u64
- + the number of key-value pairs in the table
@@ -77,6 +92,7 @@ ## Function `new` +Creates a new, empty table
public fun new<K: copy, drop, store, V: store>(ctx: &mut tx_context::TxContext): table::Table<K, V>
@@ -104,6 +120,9 @@
 
 ## Function `add`
 
+Adds a key-value pair to the table table: &mut Table<K, V>
+Aborts with sui::dynamic_field::EFieldAlreadyExists if the table already has an entry with
+that key k: K.
 
 
 
public fun add<K: copy, drop, store, V: store>(table: &mut table::Table<K, V>, k: K, v: V)
@@ -129,6 +148,9 @@
 
 ## Function `borrow`
 
+Immutable borrows the value associated with the key in the table table: &Table<K, V>.
+Aborts with sui::dynamic_field::EFieldDoesNotExist if the table does not have an entry with
+that key k: K.
 
 
 
public fun borrow<K: copy, drop, store, V: store>(table: &table::Table<K, V>, k: K): &V
@@ -153,6 +175,9 @@
 
 ## Function `borrow_mut`
 
+Mutably borrows the value associated with the key in the table table: &mut Table<K, V>.
+Aborts with sui::dynamic_field::EFieldDoesNotExist if the table does not have an entry with
+that key k: K.
 
 
 
public fun borrow_mut<K: copy, drop, store, V: store>(table: &mut table::Table<K, V>, k: K): &mut V
@@ -177,6 +202,9 @@
 
 ## Function `remove`
 
+Removes the key-value pair in the table table: &mut Table<K, V> and returns the value.
+Aborts with sui::dynamic_field::EFieldDoesNotExist if the table does not have an entry with
+that key k: K.
 
 
 
public fun remove<K: copy, drop, store, V: store>(table: &mut table::Table<K, V>, k: K): V
@@ -203,6 +231,7 @@
 
 ## Function `contains`
 
+Returns true iff there is a value associated with the key k: K in table table: &Table<K, V>
 
 
 
public fun contains<K: copy, drop, store, V: store>(table: &table::Table<K, V>, k: K): bool
@@ -227,6 +256,7 @@
 
 ## Function `length`
 
+Returns the size of the table, the number of key-value pairs
 
 
 
public fun length<K: copy, drop, store, V: store>(table: &table::Table<K, V>): u64
@@ -251,6 +281,7 @@
 
 ## Function `is_empty`
 
+Returns true iff the table is empty (if length returns 0)
 
 
 
public fun is_empty<K: copy, drop, store, V: store>(table: &table::Table<K, V>): bool
@@ -275,6 +306,8 @@
 
 ## Function `destroy_empty`
 
+Destroys an empty table
+Aborts with ETableNotEmpty if the table still contains values
 
 
 
public fun destroy_empty<K: copy, drop, store, V: store>(table: table::Table<K, V>)
@@ -301,6 +334,8 @@
 
 ## Function `drop`
 
+Drop a possibly non-empty table.
+Usable only if the value type V has the drop ability
 
 
 
public fun drop<K: copy, drop, store, V: drop, store>(table: table::Table<K, V>)
diff --git a/crates/sui-framework/docs/deepbook/dependencies/sui-framework/transfer.md b/crates/sui-framework/docs/deepbook/dependencies/sui-framework/transfer.md
index bb96dd56b78b4..d66e0f0b89068 100644
--- a/crates/sui-framework/docs/deepbook/dependencies/sui-framework/transfer.md
+++ b/crates/sui-framework/docs/deepbook/dependencies/sui-framework/transfer.md
@@ -31,6 +31,13 @@
 
 ## Struct `Receiving`
 
+This represents the ability to receive an object of type T.
+This type is ephemeral per-transaction and cannot be stored on-chain.
+This does not represent the obligation to receive the object that it
+references, but simply the ability to receive the object with object ID
+id at version version if you can prove mutable access to the parent
+object during the transaction.
+Internals of this struct are opaque outside this module.
 
 
 
struct Receiving<T: key> has drop
@@ -67,6 +74,7 @@
 
 
 
+Serialization of the object failed.
 
 
 
const EBCSSerializationFailure: u64 = 1;
@@ -76,6 +84,7 @@
 
 
 
+The object being received is not of the expected type.
 
 
 
const EReceivingObjectTypeMismatch: u64 = 2;
@@ -85,6 +94,8 @@
 
 
 
+Shared an object that was previously created. Shared objects must currently
+be constructed in the transaction they are created.
 
 
 
const ESharedNonNewObject: u64 = 0;
@@ -94,6 +105,7 @@
 
 
 
+Shared object operations such as wrapping, freezing, and converting to owned are not allowed.
 
 
 
const ESharedObjectOperationNotSupported: u64 = 4;
@@ -103,6 +115,8 @@
 
 
 
+Represents both the case where the object does not exist and the case where the object is not
+able to be accessed through the parent that is passed-in.
 
 
 
const EUnableToReceiveObject: u64 = 3;
@@ -114,6 +128,13 @@
 
 ## Function `transfer`
 
+Transfer ownership of obj to recipient. obj must have the key attribute,
+which (in turn) ensures that obj has a globally unique ID. Note that if the recipient
+address represents an object ID, the obj sent will be inaccessible after the transfer
+(though they will be retrievable at a future date once new features are added).
+This function has custom rules performed by the Sui Move bytecode verifier that ensures
+that T is an object defined in the module where transfer is invoked. Use
+public_transfer to transfer an object with store outside of its module.
 
 
 
public fun transfer<T: key>(obj: T, recipient: address)
@@ -138,6 +159,11 @@
 
 ## Function `public_transfer`
 
+Transfer ownership of obj to recipient. obj must have the key attribute,
+which (in turn) ensures that obj has a globally unique ID. Note that if the recipient
+address represents an object ID, the obj sent will be inaccessible after the transfer
+(though they will be retrievable at a future date once new features are added).
+The object must have store to be transferred outside of its module.
 
 
 
public fun public_transfer<T: store, key>(obj: T, recipient: address)
@@ -162,6 +188,11 @@
 
 ## Function `freeze_object`
 
+Freeze obj. After freezing obj becomes immutable and can no longer be transferred or
+mutated.
+This function has custom rules performed by the Sui Move bytecode verifier that ensures
+that T is an object defined in the module where freeze_object is invoked. Use
+public_freeze_object to freeze an object with store outside of its module.
 
 
 
public fun freeze_object<T: key>(obj: T)
@@ -186,6 +217,9 @@
 
 ## Function `public_freeze_object`
 
+Freeze obj. After freezing obj becomes immutable and can no longer be transferred or
+mutated.
+The object must have store to be frozen outside of its module.
 
 
 
public fun public_freeze_object<T: store, key>(obj: T)
@@ -210,6 +244,13 @@
 
 ## Function `share_object`
 
+Turn the given object into a mutable shared object that everyone can access and mutate.
+This is irreversible, i.e. once an object is shared, it will stay shared forever.
+Aborts with ESharedNonNewObject of the object being shared was not created in this
+transaction. This restriction may be relaxed in the future.
+This function has custom rules performed by the Sui Move bytecode verifier that ensures
+that T is an object defined in the module where share_object is invoked. Use
+public_share_object to share an object with store outside of its module.
 
 
 
public fun share_object<T: key>(obj: T)
@@ -234,6 +275,11 @@
 
 ## Function `public_share_object`
 
+Turn the given object into a mutable shared object that everyone can access and mutate.
+This is irreversible, i.e. once an object is shared, it will stay shared forever.
+Aborts with ESharedNonNewObject of the object being shared was not created in this
+transaction. This restriction may be relaxed in the future.
+The object must have store to be shared outside of its module.
 
 
 
public fun public_share_object<T: store, key>(obj: T)
@@ -258,6 +304,12 @@
 
 ## Function `receive`
 
+Given mutable (i.e., locked) access to the parent and a Receiving argument
+referencing an object of type T owned by parent use the to_receive
+argument to receive and return the referenced owned object of type T.
+This function has custom rules performed by the Sui Move bytecode verifier that ensures
+that T is an object defined in the module where receive is invoked. Use
+public_receive to receivne an object with store outside of its module.
 
 
 
public fun receive<T: key>(parent: &mut object::UID, to_receive: transfer::Receiving<T>): T
@@ -286,6 +338,10 @@
 
 ## Function `public_receive`
 
+Given mutable (i.e., locked) access to the parent and a Receiving argument
+referencing an object of type T owned by parent use the to_receive
+argument to receive and return the referenced owned object of type T.
+The object must have store to be received outside of its defining module.
 
 
 
public fun public_receive<T: store, key>(parent: &mut object::UID, to_receive: transfer::Receiving<T>): T
@@ -314,6 +370,7 @@
 
 ## Function `receiving_object_id`
 
+Return the object ID that the given Receiving argument references.
 
 
 
public fun receiving_object_id<T: key>(receiving: &transfer::Receiving<T>): object::ID
diff --git a/crates/sui-framework/docs/deepbook/dependencies/sui-framework/tx_context.md b/crates/sui-framework/docs/deepbook/dependencies/sui-framework/tx_context.md
index 979faf5df05a8..95cfb077de6e5 100644
--- a/crates/sui-framework/docs/deepbook/dependencies/sui-framework/tx_context.md
+++ b/crates/sui-framework/docs/deepbook/dependencies/sui-framework/tx_context.md
@@ -23,6 +23,9 @@
 
 ## Struct `TxContext`
 
+Information about the transaction currently being executed.
+This cannot be constructed by a transaction--it is a privileged object created by
+the VM and passed in to the entrypoint of the transaction as &mut TxContext.
 
 
 
struct TxContext has drop
@@ -39,31 +42,32 @@
 sender: address
 
 
- + The address of the user that signed the current transaction
tx_hash: vector<u8>
- + Hash of the current transaction
epoch: u64
- + The current epoch number
epoch_timestamp_ms: u64
- + Timestamp that the epoch started at
ids_created: u64
- + Counter recording the number of fresh id's created while executing + this transaction. Always 0 at the start of a transaction
@@ -74,6 +78,8 @@ ## Function `sender` +Return the address of the user that signed the current +transaction
public fun sender(self: &tx_context::TxContext): address
@@ -98,6 +104,8 @@
 
 ## Function `digest`
 
+Return the transaction digest (hash of transaction inputs).
+Please do not use as a source of randomness.
 
 
 
public fun digest(self: &tx_context::TxContext): &vector<u8>
@@ -122,6 +130,7 @@
 
 ## Function `epoch`
 
+Return the current epoch
 
 
 
public fun epoch(self: &tx_context::TxContext): u64
@@ -146,6 +155,7 @@
 
 ## Function `epoch_timestamp_ms`
 
+Return the epoch start time as a unix timestamp in milliseconds.
 
 
 
public fun epoch_timestamp_ms(self: &tx_context::TxContext): u64
@@ -170,6 +180,9 @@
 
 ## Function `fresh_object_address`
 
+Create an address that has not been used. As it is an object address, it will never
+occur as the address for a user.
+In other words, the generated address is a globally unique object ID.
 
 
 
public fun fresh_object_address(ctx: &mut tx_context::TxContext): address
@@ -197,6 +210,8 @@
 
 ## Function `ids_created`
 
+Return the number of id's created by the current transaction.
+Hidden for now, but may expose later
 
 
 
fun ids_created(self: &tx_context::TxContext): u64
@@ -221,6 +236,7 @@
 
 ## Function `derive_id`
 
+Native function for deriving an ID via hash(tx_hash || ids_created)
 
 
 
fun derive_id(tx_hash: vector<u8>, ids_created: u64): address
diff --git a/crates/sui-framework/docs/deepbook/dependencies/sui-framework/types.md b/crates/sui-framework/docs/deepbook/dependencies/sui-framework/types.md
index a02b917c70f53..6dbc998014433 100644
--- a/crates/sui-framework/docs/deepbook/dependencies/sui-framework/types.md
+++ b/crates/sui-framework/docs/deepbook/dependencies/sui-framework/types.md
@@ -3,6 +3,7 @@
 
 # Module `0x2::types`
 
+Sui types helpers and utilities
 
 
 -  [Function `is_one_time_witness`](#0x2_types_is_one_time_witness)
@@ -16,6 +17,8 @@
 
 ## Function `is_one_time_witness`
 
+Tests if the argument type is a one-time witness, that is a type with only one instantiation
+across the entire code base.
 
 
 
public fun is_one_time_witness<T: drop>(_: &T): bool
diff --git a/crates/sui-framework/docs/deepbook/dependencies/sui-framework/url.md b/crates/sui-framework/docs/deepbook/dependencies/sui-framework/url.md
index ec2e701d17370..d4957518c0d96 100644
--- a/crates/sui-framework/docs/deepbook/dependencies/sui-framework/url.md
+++ b/crates/sui-framework/docs/deepbook/dependencies/sui-framework/url.md
@@ -3,6 +3,7 @@
 
 # Module `0x2::url`
 
+URL: standard Uniform Resource Locator string
 
 
 -  [Struct `Url`](#0x2_url_Url)
@@ -21,6 +22,7 @@
 
 ## Struct `Url`
 
+Standard Uniform Resource Locator (URL) string.
 
 
 
struct Url has copy, drop, store
@@ -48,6 +50,7 @@
 
 ## Function `new_unsafe`
 
+Create a Url, with no validation
 
 
 
public fun new_unsafe(url: ascii::String): url::Url
@@ -72,6 +75,8 @@
 
 ## Function `new_unsafe_from_bytes`
 
+Create a Url with no validation from bytes
+Note: this will abort if bytes is not valid ASCII
 
 
 
public fun new_unsafe_from_bytes(bytes: vector<u8>): url::Url
@@ -97,6 +102,7 @@
 
 ## Function `inner_url`
 
+Get inner URL
 
 
 
public fun inner_url(self: &url::Url): ascii::String
@@ -121,6 +127,7 @@
 
 ## Function `update`
 
+Update the inner URL
 
 
 
public fun update(self: &mut url::Url, url: ascii::String)
diff --git a/crates/sui-framework/docs/deepbook/dependencies/sui-framework/vec_set.md b/crates/sui-framework/docs/deepbook/dependencies/sui-framework/vec_set.md
index 4c72c4c65801f..b1cfb3c10b816 100644
--- a/crates/sui-framework/docs/deepbook/dependencies/sui-framework/vec_set.md
+++ b/crates/sui-framework/docs/deepbook/dependencies/sui-framework/vec_set.md
@@ -30,6 +30,11 @@
 
 ## Struct `VecSet`
 
+A set data structure backed by a vector. The set is guaranteed not to
+contain duplicate keys. All operations are O(N) in the size of the set
+- the intention of this data structure is only to provide the convenience
+of programming against a set API. Sets that need sorted iteration rather
+than insertion order iteration should be handwritten.
 
 
 
struct VecSet<K: copy, drop> has copy, drop, store
@@ -60,6 +65,7 @@
 
 
 
+This key already exists in the map
 
 
 
const EKeyAlreadyExists: u64 = 0;
@@ -69,6 +75,7 @@
 
 
 
+This key does not exist in the map
 
 
 
const EKeyDoesNotExist: u64 = 1;
@@ -80,6 +87,7 @@
 
 ## Function `empty`
 
+Create an empty VecSet
 
 
 
public fun empty<K: copy, drop>(): vec_set::VecSet<K>
@@ -104,6 +112,7 @@
 
 ## Function `singleton`
 
+Create a singleton VecSet that only contains one element.
 
 
 
public fun singleton<K: copy, drop>(key: K): vec_set::VecSet<K>
@@ -128,6 +137,8 @@
 
 ## Function `insert`
 
+Insert a key into self.
+Aborts if key is already present in self.
 
 
 
public fun insert<K: copy, drop>(self: &mut vec_set::VecSet<K>, key: K)
@@ -153,6 +164,7 @@
 
 ## Function `remove`
 
+Remove the entry key from self. Aborts if key is not present in self.
 
 
 
public fun remove<K: copy, drop>(self: &mut vec_set::VecSet<K>, key: &K)
@@ -178,6 +190,7 @@
 
 ## Function `contains`
 
+Return true if self contains an entry for key, false otherwise
 
 
 
public fun contains<K: copy, drop>(self: &vec_set::VecSet<K>, key: &K): bool
@@ -202,6 +215,7 @@
 
 ## Function `size`
 
+Return the number of entries in self
 
 
 
public fun size<K: copy, drop>(self: &vec_set::VecSet<K>): u64
@@ -226,6 +240,7 @@
 
 ## Function `is_empty`
 
+Return true if self has 0 elements, false otherwise
 
 
 
public fun is_empty<K: copy, drop>(self: &vec_set::VecSet<K>): bool
@@ -250,6 +265,8 @@
 
 ## Function `into_keys`
 
+Unpack self into vectors of keys.
+The output keys are stored in insertion order, *not* sorted.
 
 
 
public fun into_keys<K: copy, drop>(self: vec_set::VecSet<K>): vector<K>
@@ -275,6 +292,9 @@
 
 ## Function `keys`
 
+Borrow the contents of the VecSet to access content by index
+without unpacking. The contents are stored in insertion order,
+*not* sorted.
 
 
 
public fun keys<K: copy, drop>(self: &vec_set::VecSet<K>): &vector<K>
@@ -299,6 +319,8 @@
 
 ## Function `get_idx_opt`
 
+Find the index of key in self. Return None if key is not in self.
+Note that keys are stored in insertion order, *not* sorted.
 
 
 
fun get_idx_opt<K: copy, drop>(self: &vec_set::VecSet<K>, key: &K): option::Option<u64>
@@ -331,6 +353,8 @@
 
 ## Function `get_idx`
 
+Find the index of key in self. Aborts if key is not in self.
+Note that map entries are stored in insertion order, *not* sorted.
 
 
 
fun get_idx<K: copy, drop>(self: &vec_set::VecSet<K>, key: &K): u64
diff --git a/crates/sui-framework/docs/deepbook/dependencies/sui-framework/versioned.md b/crates/sui-framework/docs/deepbook/dependencies/sui-framework/versioned.md
index 5bf9369c1781f..2bd638d5cc340 100644
--- a/crates/sui-framework/docs/deepbook/dependencies/sui-framework/versioned.md
+++ b/crates/sui-framework/docs/deepbook/dependencies/sui-framework/versioned.md
@@ -28,6 +28,12 @@
 
 ## Resource `Versioned`
 
+A wrapper type that supports versioning of the inner type.
+The inner type is a dynamic field of the Versioned object, and is keyed using version.
+User of this type could load the inner object using corresponding type based on the version.
+You can also upgrade the inner object to a new type version.
+If you want to support lazy upgrade of the inner type, one caveat is that all APIs would have
+to use mutable reference even if it's a read-only API.
 
 
 
struct Versioned has store, key
@@ -61,6 +67,8 @@
 
 ## Struct `VersionChangeCap`
 
+Represents a hot potato object generated when we take out the dynamic field.
+This is to make sure that we always put a new value back.
 
 
 
struct VersionChangeCap
@@ -97,6 +105,7 @@
 
 
 
+Failed to upgrade the inner object due to invalid capability or new version.
 
 
 
const EInvalidUpgrade: u64 = 0;
@@ -108,6 +117,7 @@
 
 ## Function `create`
 
+Create a new Versioned object that contains a initial value of type T with an initial version.
 
 
 
public fun create<T: store>(init_version: u64, init_value: T, ctx: &mut tx_context::TxContext): versioned::Versioned
@@ -137,6 +147,7 @@
 
 ## Function `version`
 
+Get the current version of the inner type.
 
 
 
public fun version(self: &versioned::Versioned): u64
@@ -161,6 +172,8 @@
 
 ## Function `load_value`
 
+Load the inner value based on the current version. Caller specifies an expected type T.
+If the type mismatch, the load will fail.
 
 
 
public fun load_value<T: store>(self: &versioned::Versioned): &T
@@ -185,6 +198,7 @@
 
 ## Function `load_value_mut`
 
+Similar to load_value, but return a mutable reference.
 
 
 
public fun load_value_mut<T: store>(self: &mut versioned::Versioned): &mut T
@@ -209,6 +223,8 @@
 
 ## Function `remove_value_for_upgrade`
 
+Take the inner object out for upgrade. To ensure we always upgrade properly, a capability object is returned
+and must be used when we upgrade.
 
 
 
public fun remove_value_for_upgrade<T: store>(self: &mut versioned::Versioned): (T, versioned::VersionChangeCap)
@@ -239,6 +255,8 @@
 
 ## Function `upgrade`
 
+Upgrade the inner object with a new version and new value. Must use the capability returned
+by calling remove_value_for_upgrade.
 
 
 
public fun upgrade<T: store>(self: &mut versioned::Versioned, new_version: u64, new_value: T, cap: versioned::VersionChangeCap)
@@ -267,6 +285,7 @@
 
 ## Function `destroy`
 
+Destroy this Versioned container, and return the inner object.
 
 
 
public fun destroy<T: store>(self: versioned::Versioned): T
diff --git a/crates/sui-framework/docs/sui-framework/dependencies/move-stdlib/address.md b/crates/sui-framework/docs/sui-framework/dependencies/move-stdlib/address.md
index dd10b7d17c904..75c40f04d24ed 100644
--- a/crates/sui-framework/docs/sui-framework/dependencies/move-stdlib/address.md
+++ b/crates/sui-framework/docs/sui-framework/dependencies/move-stdlib/address.md
@@ -3,6 +3,8 @@
 
 # Module `0x1::address`
 
+Provides a way to get address length since it's a
+platform-specific parameter.
 
 
 -  [Function `length`](#0x1_address_length)
@@ -16,6 +18,8 @@
 
 ## Function `length`
 
+Should be converted to a native function.
+Current implementation only works for Sui.
 
 
 
public fun length(): u64
diff --git a/crates/sui-framework/docs/sui-framework/dependencies/move-stdlib/ascii.md b/crates/sui-framework/docs/sui-framework/dependencies/move-stdlib/ascii.md
index bf876816e6e0f..488f0efcc8983 100644
--- a/crates/sui-framework/docs/sui-framework/dependencies/move-stdlib/ascii.md
+++ b/crates/sui-framework/docs/sui-framework/dependencies/move-stdlib/ascii.md
@@ -3,6 +3,8 @@
 
 # Module `0x1::ascii`
 
+The ASCII module defines basic string and char newtypes in Move that verify
+that characters are valid ASCII, and that strings consist of only valid ASCII characters.
 
 
 -  [Struct `String`](#0x1_ascii_String)
@@ -31,6 +33,11 @@
 
 ## Struct `String`
 
+The String struct holds a vector of bytes that all represent
+valid ASCII characters. Note that these ASCII characters may not all
+be printable. To determine if a String contains only "printable"
+characters you should use the all_characters_printable predicate
+defined in this module.
 
 
 
struct String has copy, drop, store
@@ -58,6 +65,7 @@
 
 ## Struct `Char`
 
+An ASCII character.
 
 
 
struct Char has copy, drop, store
@@ -88,6 +96,7 @@
 
 
 
+An invalid ASCII character was encountered when creating an ASCII string.
 
 
 
const EINVALID_ASCII_CHARACTER: u64 = 65536;
@@ -99,6 +108,7 @@
 
 ## Function `char`
 
+Convert a byte into a Char that is checked to make sure it is valid ASCII.
 
 
 
public fun char(byte: u8): ascii::Char
@@ -124,6 +134,8 @@
 
 ## Function `string`
 
+Convert a vector of bytes bytes into an String. Aborts if
+bytes contains non-ASCII characters.
 
 
 
public fun string(bytes: vector<u8>): ascii::String
@@ -153,6 +165,9 @@
 
 ## Function `try_string`
 
+Convert a vector of bytes bytes into an String. Returns
+Some(<ascii_string>) if the bytes contains all valid ASCII
+characters. Otherwise returns None.
 
 
 
public fun try_string(bytes: vector<u8>): option::Option<ascii::String>
@@ -184,6 +199,8 @@
 
 ## Function `all_characters_printable`
 
+Returns true if all characters in string are printable characters
+Returns false otherwise. Not all Strings are printable strings.
 
 
 
public fun all_characters_printable(string: &ascii::String): bool
@@ -287,6 +304,7 @@
 
 ## Function `as_bytes`
 
+Get the inner bytes of the string as a reference
 
 
 
public fun as_bytes(string: &ascii::String): &vector<u8>
@@ -311,6 +329,7 @@
 
 ## Function `into_bytes`
 
+Unpack the string to get its backing bytes
 
 
 
public fun into_bytes(string: ascii::String): vector<u8>
@@ -336,6 +355,7 @@
 
 ## Function `byte`
 
+Unpack the char into its underlying byte.
 
 
 
public fun byte(char: ascii::Char): u8
@@ -361,6 +381,7 @@
 
 ## Function `is_valid_char`
 
+Returns true if b is a valid ASCII character. Returns false otherwise.
 
 
 
public fun is_valid_char(b: u8): bool
@@ -385,6 +406,7 @@
 
 ## Function `is_printable_char`
 
+Returns true if byte is an printable ASCII character. Returns false otherwise.
 
 
 
public fun is_printable_char(byte: u8): bool
diff --git a/crates/sui-framework/docs/sui-framework/dependencies/move-stdlib/bcs.md b/crates/sui-framework/docs/sui-framework/dependencies/move-stdlib/bcs.md
index 28c8dcf4f161e..a1766667fd594 100644
--- a/crates/sui-framework/docs/sui-framework/dependencies/move-stdlib/bcs.md
+++ b/crates/sui-framework/docs/sui-framework/dependencies/move-stdlib/bcs.md
@@ -3,6 +3,10 @@
 
 # Module `0x1::bcs`
 
+Utility for converting a Move value to its binary representation in BCS (Binary Canonical
+Serialization). BCS is the binary encoding for Move resources and other non-module values
+published on-chain. See https://github.com/diem/bcs#binary-canonical-serialization-bcs for more
+details on BCS.
 
 
 -  [Function `to_bytes`](#0x1_bcs_to_bytes)
@@ -16,6 +20,7 @@
 
 ## Function `to_bytes`
 
+Return the binary representation of v in BCS (Binary Canonical Serialization) format
 
 
 
public fun to_bytes<MoveValue>(v: &MoveValue): vector<u8>
diff --git a/crates/sui-framework/docs/sui-framework/dependencies/move-stdlib/option.md b/crates/sui-framework/docs/sui-framework/dependencies/move-stdlib/option.md
index 1b454e2aef6c0..34ac9fa66b827 100644
--- a/crates/sui-framework/docs/sui-framework/dependencies/move-stdlib/option.md
+++ b/crates/sui-framework/docs/sui-framework/dependencies/move-stdlib/option.md
@@ -3,6 +3,7 @@
 
 # Module `0x1::option`
 
+This module defines the Option type and its methods to represent and handle an optional value.
 
 
 -  [Struct `Option`](#0x1_option_Option)
@@ -35,6 +36,8 @@
 
 ## Struct `Option`
 
+Abstraction of a value that may or may not be present. Implemented with a vector of size
+zero or one because Move bytecode does not have ADTs.
 
 
 
struct Option<Element> has copy, drop, store
@@ -65,6 +68,8 @@
 
 
 
+The Option is in an invalid state for the operation attempted.
+The Option is Some while it should be None.
 
 
 
const EOPTION_IS_SET: u64 = 262144;
@@ -74,6 +79,8 @@
 
 
 
+The Option is in an invalid state for the operation attempted.
+The Option is None while it should be Some.
 
 
 
const EOPTION_NOT_SET: u64 = 262145;
@@ -85,6 +92,7 @@
 
 ## Function `none`
 
+Return an empty Option
 
 
 
public fun none<Element>(): option::Option<Element>
@@ -109,6 +117,7 @@
 
 ## Function `some`
 
+Return an Option containing e
 
 
 
public fun some<Element>(e: Element): option::Option<Element>
@@ -133,6 +142,7 @@
 
 ## Function `is_none`
 
+Return true if t does not hold a value
 
 
 
public fun is_none<Element>(t: &option::Option<Element>): bool
@@ -157,6 +167,7 @@
 
 ## Function `is_some`
 
+Return true if t holds a value
 
 
 
public fun is_some<Element>(t: &option::Option<Element>): bool
@@ -181,6 +192,8 @@
 
 ## Function `contains`
 
+Return true if the value in t is equal to e_ref
+Always returns false if t does not hold a value
 
 
 
public fun contains<Element>(t: &option::Option<Element>, e_ref: &Element): bool
@@ -205,6 +218,8 @@
 
 ## Function `borrow`
 
+Return an immutable reference to the value inside t
+Aborts if t does not hold a value
 
 
 
public fun borrow<Element>(t: &option::Option<Element>): &Element
@@ -230,6 +245,8 @@
 
 ## Function `borrow_with_default`
 
+Return a reference to the value inside t if it holds one
+Return default_ref if t does not hold a value
 
 
 
public fun borrow_with_default<Element>(t: &option::Option<Element>, default_ref: &Element): &Element
@@ -256,6 +273,8 @@
 
 ## Function `get_with_default`
 
+Return the value inside t if it holds one
+Return default if t does not hold a value
 
 
 
public fun get_with_default<Element: copy, drop>(t: &option::Option<Element>, default: Element): Element
@@ -285,6 +304,8 @@
 
 ## Function `fill`
 
+Convert the none option t to a some option by adding e.
+Aborts if t already holds a value
 
 
 
public fun fill<Element>(t: &mut option::Option<Element>, e: Element)
@@ -311,6 +332,8 @@
 
 ## Function `extract`
 
+Convert a some option to a none by removing and returning the value stored inside t
+Aborts if t does not hold a value
 
 
 
public fun extract<Element>(t: &mut option::Option<Element>): Element
@@ -336,6 +359,8 @@
 
 ## Function `borrow_mut`
 
+Return a mutable reference to the value inside t
+Aborts if t does not hold a value
 
 
 
public fun borrow_mut<Element>(t: &mut option::Option<Element>): &mut Element
@@ -361,6 +386,8 @@
 
 ## Function `swap`
 
+Swap the old value inside t with e and return the old value
+Aborts if t does not hold a value
 
 
 
public fun swap<Element>(t: &mut option::Option<Element>, e: Element): Element
@@ -389,6 +416,9 @@
 
 ## Function `swap_or_fill`
 
+Swap the old value inside t with e and return the old value;
+or if there is no old value, fill it with e.
+Different from swap(), swap_or_fill() allows for t not holding a value.
 
 
 
public fun swap_or_fill<Element>(t: &mut option::Option<Element>, e: Element): option::Option<Element>
@@ -417,6 +447,7 @@
 
 ## Function `destroy_with_default`
 
+Destroys t. If t holds a value, return it. Returns default otherwise
 
 
 
public fun destroy_with_default<Element: drop>(t: option::Option<Element>, default: Element): Element
@@ -443,6 +474,8 @@
 
 ## Function `destroy_some`
 
+Unpack t and return its contents
+Aborts if t does not hold a value
 
 
 
public fun destroy_some<Element>(t: option::Option<Element>): Element
@@ -471,6 +504,8 @@
 
 ## Function `destroy_none`
 
+Unpack t
+Aborts if t holds a value
 
 
 
public fun destroy_none<Element>(t: option::Option<Element>)
@@ -497,6 +532,8 @@
 
 ## Function `to_vec`
 
+Convert t into a vector of length 1 if it is Some,
+and an empty vector otherwise
 
 
 
public fun to_vec<Element>(t: option::Option<Element>): vector<Element>
diff --git a/crates/sui-framework/docs/sui-framework/dependencies/move-stdlib/string.md b/crates/sui-framework/docs/sui-framework/dependencies/move-stdlib/string.md
index 4a48dbc3ea0ae..088a2da2f91e9 100644
--- a/crates/sui-framework/docs/sui-framework/dependencies/move-stdlib/string.md
+++ b/crates/sui-framework/docs/sui-framework/dependencies/move-stdlib/string.md
@@ -3,6 +3,7 @@
 
 # Module `0x1::string`
 
+The string module defines the String type which represents UTF8 encoded strings.
 
 
 -  [Struct `String`](#0x1_string_String)
@@ -36,6 +37,7 @@
 
 ## Struct `String`
 
+A String holds a sequence of bytes which is guaranteed to be in utf8 format.
 
 
 
struct String has copy, drop, store
@@ -66,6 +68,7 @@
 
 
 
+Index out of range.
 
 
 
const EINVALID_INDEX: u64 = 2;
@@ -75,6 +78,7 @@
 
 
 
+An invalid UTF8 encoding.
 
 
 
const EINVALID_UTF8: u64 = 1;
@@ -86,6 +90,7 @@
 
 ## Function `utf8`
 
+Creates a new string from a sequence of bytes. Aborts if the bytes do not represent valid utf8.
 
 
 
public fun utf8(bytes: vector<u8>): string::String
@@ -111,6 +116,7 @@
 
 ## Function `from_ascii`
 
+Convert an ASCII string to a UTF8 string
 
 
 
public fun from_ascii(s: ascii::String): string::String
@@ -135,6 +141,8 @@
 
 ## Function `to_ascii`
 
+Convert an UTF8 string to an ASCII string.
+Aborts if s is not valid ASCII
 
 
 
public fun to_ascii(s: string::String): ascii::String
@@ -160,6 +168,7 @@
 
 ## Function `try_utf8`
 
+Tries to create a new string from a sequence of bytes.
 
 
 
public fun try_utf8(bytes: vector<u8>): option::Option<string::String>
@@ -188,6 +197,7 @@
 
 ## Function `bytes`
 
+Returns a reference to the underlying byte vector.
 
 
 
public fun bytes(s: &string::String): &vector<u8>
@@ -212,6 +222,7 @@
 
 ## Function `is_empty`
 
+Checks whether this string is empty.
 
 
 
public fun is_empty(s: &string::String): bool
@@ -236,6 +247,7 @@
 
 ## Function `length`
 
+Returns the length of this string, in bytes.
 
 
 
public fun length(s: &string::String): u64
@@ -260,6 +272,7 @@
 
 ## Function `append`
 
+Appends a string.
 
 
 
public fun append(s: &mut string::String, r: string::String)
@@ -284,6 +297,7 @@
 
 ## Function `append_utf8`
 
+Appends bytes which must be in valid utf8 format.
 
 
 
public fun append_utf8(s: &mut string::String, bytes: vector<u8>)
@@ -308,6 +322,8 @@
 
 ## Function `insert`
 
+Insert the other string at the byte index in given string. The index must be at a valid utf8 char
+boundary.
 
 
 
public fun insert(s: &mut string::String, at: u64, o: string::String)
@@ -339,6 +355,9 @@
 
 ## Function `sub_string`
 
+Returns a sub-string using the given byte indices, where i is the first byte position and j is the start
+of the first byte not included (or the length of the string). The indices must be at valid utf8 char boundaries,
+guaranteeing that the result is valid utf8.
 
 
 
public fun sub_string(s: &string::String, i: u64, j: u64): string::String
@@ -369,6 +388,7 @@
 
 ## Function `index_of`
 
+Computes the index of the first occurrence of a string. Returns length(s) if no occurrence found.
 
 
 
public fun index_of(s: &string::String, r: &string::String): u64
diff --git a/crates/sui-framework/docs/sui-framework/dependencies/move-stdlib/type_name.md b/crates/sui-framework/docs/sui-framework/dependencies/move-stdlib/type_name.md
index 48560570a18a3..01cc1819fa89e 100644
--- a/crates/sui-framework/docs/sui-framework/dependencies/move-stdlib/type_name.md
+++ b/crates/sui-framework/docs/sui-framework/dependencies/move-stdlib/type_name.md
@@ -3,6 +3,7 @@
 
 # Module `0x1::type_name`
 
+Functionality for converting Move types into values. Use with care!
 
 
 -  [Struct `TypeName`](#0x1_type_name_TypeName)
@@ -42,7 +43,13 @@
 name: ascii::String
 
 
- + String representation of the type. All types are represented + using their source syntax: + "u8", "u64", "bool", "address", "vector", and so on for primitive types. + Struct types are represented as fully qualified type names; e.g. + 00000000000000000000000000000001::string::String or + 0000000000000000000000000000000a::module_name1::type_name1<0000000000000000000000000000000a::module_name2::type_name2<u64>> + Addresses are hex-encoded lowercase values of length ADDRESS_LENGTH (16, 20, or 32 depending on the Move platform)
@@ -56,6 +63,7 @@ +ASCII Character code for the c (lowercase c) symbol.
const ASCII_C: u8 = 99;
@@ -65,6 +73,7 @@
 
 
 
+ASCII Character code for the : (colon) symbol.
 
 
 
const ASCII_COLON: u8 = 58;
@@ -74,6 +83,7 @@
 
 
 
+ASCII Character code for the e (lowercase e) symbol.
 
 
 
const ASCII_E: u8 = 101;
@@ -83,6 +93,7 @@
 
 
 
+ASCII Character code for the o (lowercase o) symbol.
 
 
 
const ASCII_O: u8 = 111;
@@ -92,6 +103,7 @@
 
 
 
+ASCII Character code for the r (lowercase r) symbol.
 
 
 
const ASCII_R: u8 = 114;
@@ -101,6 +113,7 @@
 
 
 
+ASCII Character code for the t (lowercase t) symbol.
 
 
 
const ASCII_T: u8 = 116;
@@ -110,6 +123,7 @@
 
 
 
+ASCII Character code for the v (lowercase v) symbol.
 
 
 
const ASCII_V: u8 = 118;
@@ -119,6 +133,7 @@
 
 
 
+The type is not from a package/module. It is a primitive type.
 
 
 
const ENonModuleType: u64 = 0;
@@ -130,6 +145,10 @@
 
 ## Function `get`
 
+Return a value representation of the type T.  Package IDs
+that appear in fully qualified type names in the output from
+this function are defining IDs (the ID of the package in
+storage that first introduced the type).
 
 
 
public fun get<T>(): type_name::TypeName
@@ -152,6 +171,11 @@
 
 ## Function `get_with_original_ids`
 
+Return a value representation of the type T.  Package IDs
+that appear in fully qualified type names in the output from
+this function are original IDs (the ID of the first version of
+the package, even if the type in question was introduced in a
+later upgrade).
 
 
 
public fun get_with_original_ids<T>(): type_name::TypeName
@@ -174,6 +198,8 @@
 
 ## Function `is_primitive`
 
+Returns true iff the TypeName represents a primitive type, i.e. one of
+u8, u16, u32, u64, u128, u256, bool, address, vector.
 
 
 
public fun is_primitive(self: &type_name::TypeName): bool
@@ -214,6 +240,7 @@
 
 ## Function `borrow_string`
 
+Get the String representation of self
 
 
 
public fun borrow_string(self: &type_name::TypeName): &ascii::String
@@ -238,6 +265,8 @@
 
 ## Function `get_address`
 
+Get Address string (Base16 encoded), first part of the TypeName.
+Aborts if given a primitive type.
 
 
 
public fun get_address(self: &type_name::TypeName): ascii::String
@@ -279,6 +308,8 @@
 
 ## Function `get_module`
 
+Get name of the module.
+Aborts if given a primitive type.
 
 
 
public fun get_module(self: &type_name::TypeName): ascii::String
@@ -320,6 +351,7 @@
 
 ## Function `into_string`
 
+Convert self into its inner String
 
 
 
public fun into_string(self: type_name::TypeName): ascii::String
diff --git a/crates/sui-framework/docs/sui-framework/dependencies/move-stdlib/vector.md b/crates/sui-framework/docs/sui-framework/dependencies/move-stdlib/vector.md
index 568cf3ebcb3ab..afe3aeb3febed 100644
--- a/crates/sui-framework/docs/sui-framework/dependencies/move-stdlib/vector.md
+++ b/crates/sui-framework/docs/sui-framework/dependencies/move-stdlib/vector.md
@@ -3,6 +3,8 @@
 
 # Module `0x1::vector`
 
+A variable-sized container that can hold any type. Indexing is 0-based, and
+vectors are growable. This module has many native functions.
 
 
 -  [Constants](#@Constants_0)
@@ -36,6 +38,7 @@
 
 
 
+The index into the vector is out of bounds
 
 
 
const EINDEX_OUT_OF_BOUNDS: u64 = 131072;
@@ -47,6 +50,7 @@
 
 ## Function `empty`
 
+Create an empty vector.
 
 
 
public fun empty<Element>(): vector<Element>
@@ -69,6 +73,7 @@
 
 ## Function `length`
 
+Return the length of the vector.
 
 
 
public fun length<Element>(v: &vector<Element>): u64
@@ -91,6 +96,8 @@
 
 ## Function `borrow`
 
+Acquire an immutable reference to the ith element of the vector v.
+Aborts if i is out of bounds.
 
 
 
public fun borrow<Element>(v: &vector<Element>, i: u64): &Element
@@ -113,6 +120,7 @@
 
 ## Function `push_back`
 
+Add element e to the end of the vector v.
 
 
 
public fun push_back<Element>(v: &mut vector<Element>, e: Element)
@@ -135,6 +143,8 @@
 
 ## Function `borrow_mut`
 
+Return a mutable reference to the ith element in the vector v.
+Aborts if i is out of bounds.
 
 
 
public fun borrow_mut<Element>(v: &mut vector<Element>, i: u64): &mut Element
@@ -157,6 +167,8 @@
 
 ## Function `pop_back`
 
+Pop an element from the end of vector v.
+Aborts if v is empty.
 
 
 
public fun pop_back<Element>(v: &mut vector<Element>): Element
@@ -179,6 +191,8 @@
 
 ## Function `destroy_empty`
 
+Destroy the vector v.
+Aborts if v is not empty.
 
 
 
public fun destroy_empty<Element>(v: vector<Element>)
@@ -201,6 +215,8 @@
 
 ## Function `swap`
 
+Swaps the elements at the ith and jth indices in the vector v.
+Aborts if i or j is out of bounds.
 
 
 
public fun swap<Element>(v: &mut vector<Element>, i: u64, j: u64)
@@ -223,6 +239,7 @@
 
 ## Function `singleton`
 
+Return an vector of size one containing element e.
 
 
 
public fun singleton<Element>(e: Element): vector<Element>
@@ -249,6 +266,7 @@
 
 ## Function `reverse`
 
+Reverses the order of the elements in the vector v in place.
 
 
 
public fun reverse<Element>(v: &mut vector<Element>)
@@ -282,6 +300,7 @@
 
 ## Function `append`
 
+Pushes all of the elements of the other vector into the lhs vector.
 
 
 
public fun append<Element>(lhs: &mut vector<Element>, other: vector<Element>)
@@ -308,6 +327,7 @@
 
 ## Function `is_empty`
 
+Return true if the vector v has no elements and false otherwise.
 
 
 
public fun is_empty<Element>(v: &vector<Element>): bool
@@ -332,6 +352,8 @@
 
 ## Function `contains`
 
+Return true if e is in the vector v.
+Otherwise, returns false.
 
 
 
public fun contains<Element>(v: &vector<Element>, e: &Element): bool
@@ -362,6 +384,8 @@
 
 ## Function `index_of`
 
+Return (true, i) if e is in the vector v at index i.
+Otherwise, returns (false, 0).
 
 
 
public fun index_of<Element>(v: &vector<Element>, e: &Element): (bool, u64)
@@ -392,6 +416,9 @@
 
 ## Function `remove`
 
+Remove the ith element of the vector v, shifting all subsequent elements.
+This is O(n) and preserves ordering of elements in the vector.
+Aborts if i is out of bounds.
 
 
 
public fun remove<Element>(v: &mut vector<Element>, i: u64): Element
@@ -422,6 +449,11 @@
 
 ## Function `insert`
 
+Insert e at position i in the vector v.
+If i is in bounds, this shifts the old v[i] and all subsequent elements to the right.
+If i == length(v), this adds e to the end of the vector.
+This is O(n) and preserves ordering of elements in the vector.
+Aborts if i > length(v)
 
 
 
public fun insert<Element>(v: &mut vector<Element>, e: Element, i: u64)
@@ -454,6 +486,9 @@
 
 ## Function `swap_remove`
 
+Swap the ith element of the vector v with the last element and then pop the vector.
+This is O(1), but does not preserve ordering of elements in the vector.
+Aborts if i is out of bounds.
 
 
 
public fun swap_remove<Element>(v: &mut vector<Element>, i: u64): Element
diff --git a/crates/sui-framework/docs/sui-system/dependencies/move-stdlib/address.md b/crates/sui-framework/docs/sui-system/dependencies/move-stdlib/address.md
index dd10b7d17c904..75c40f04d24ed 100644
--- a/crates/sui-framework/docs/sui-system/dependencies/move-stdlib/address.md
+++ b/crates/sui-framework/docs/sui-system/dependencies/move-stdlib/address.md
@@ -3,6 +3,8 @@
 
 # Module `0x1::address`
 
+Provides a way to get address length since it's a
+platform-specific parameter.
 
 
 -  [Function `length`](#0x1_address_length)
@@ -16,6 +18,8 @@
 
 ## Function `length`
 
+Should be converted to a native function.
+Current implementation only works for Sui.
 
 
 
public fun length(): u64
diff --git a/crates/sui-framework/docs/sui-system/dependencies/move-stdlib/ascii.md b/crates/sui-framework/docs/sui-system/dependencies/move-stdlib/ascii.md
index bf876816e6e0f..488f0efcc8983 100644
--- a/crates/sui-framework/docs/sui-system/dependencies/move-stdlib/ascii.md
+++ b/crates/sui-framework/docs/sui-system/dependencies/move-stdlib/ascii.md
@@ -3,6 +3,8 @@
 
 # Module `0x1::ascii`
 
+The ASCII module defines basic string and char newtypes in Move that verify
+that characters are valid ASCII, and that strings consist of only valid ASCII characters.
 
 
 -  [Struct `String`](#0x1_ascii_String)
@@ -31,6 +33,11 @@
 
 ## Struct `String`
 
+The String struct holds a vector of bytes that all represent
+valid ASCII characters. Note that these ASCII characters may not all
+be printable. To determine if a String contains only "printable"
+characters you should use the all_characters_printable predicate
+defined in this module.
 
 
 
struct String has copy, drop, store
@@ -58,6 +65,7 @@
 
 ## Struct `Char`
 
+An ASCII character.
 
 
 
struct Char has copy, drop, store
@@ -88,6 +96,7 @@
 
 
 
+An invalid ASCII character was encountered when creating an ASCII string.
 
 
 
const EINVALID_ASCII_CHARACTER: u64 = 65536;
@@ -99,6 +108,7 @@
 
 ## Function `char`
 
+Convert a byte into a Char that is checked to make sure it is valid ASCII.
 
 
 
public fun char(byte: u8): ascii::Char
@@ -124,6 +134,8 @@
 
 ## Function `string`
 
+Convert a vector of bytes bytes into an String. Aborts if
+bytes contains non-ASCII characters.
 
 
 
public fun string(bytes: vector<u8>): ascii::String
@@ -153,6 +165,9 @@
 
 ## Function `try_string`
 
+Convert a vector of bytes bytes into an String. Returns
+Some(<ascii_string>) if the bytes contains all valid ASCII
+characters. Otherwise returns None.
 
 
 
public fun try_string(bytes: vector<u8>): option::Option<ascii::String>
@@ -184,6 +199,8 @@
 
 ## Function `all_characters_printable`
 
+Returns true if all characters in string are printable characters
+Returns false otherwise. Not all Strings are printable strings.
 
 
 
public fun all_characters_printable(string: &ascii::String): bool
@@ -287,6 +304,7 @@
 
 ## Function `as_bytes`
 
+Get the inner bytes of the string as a reference
 
 
 
public fun as_bytes(string: &ascii::String): &vector<u8>
@@ -311,6 +329,7 @@
 
 ## Function `into_bytes`
 
+Unpack the string to get its backing bytes
 
 
 
public fun into_bytes(string: ascii::String): vector<u8>
@@ -336,6 +355,7 @@
 
 ## Function `byte`
 
+Unpack the char into its underlying byte.
 
 
 
public fun byte(char: ascii::Char): u8
@@ -361,6 +381,7 @@
 
 ## Function `is_valid_char`
 
+Returns true if b is a valid ASCII character. Returns false otherwise.
 
 
 
public fun is_valid_char(b: u8): bool
@@ -385,6 +406,7 @@
 
 ## Function `is_printable_char`
 
+Returns true if byte is an printable ASCII character. Returns false otherwise.
 
 
 
public fun is_printable_char(byte: u8): bool
diff --git a/crates/sui-framework/docs/sui-system/dependencies/move-stdlib/bcs.md b/crates/sui-framework/docs/sui-system/dependencies/move-stdlib/bcs.md
index 28c8dcf4f161e..a1766667fd594 100644
--- a/crates/sui-framework/docs/sui-system/dependencies/move-stdlib/bcs.md
+++ b/crates/sui-framework/docs/sui-system/dependencies/move-stdlib/bcs.md
@@ -3,6 +3,10 @@
 
 # Module `0x1::bcs`
 
+Utility for converting a Move value to its binary representation in BCS (Binary Canonical
+Serialization). BCS is the binary encoding for Move resources and other non-module values
+published on-chain. See https://github.com/diem/bcs#binary-canonical-serialization-bcs for more
+details on BCS.
 
 
 -  [Function `to_bytes`](#0x1_bcs_to_bytes)
@@ -16,6 +20,7 @@
 
 ## Function `to_bytes`
 
+Return the binary representation of v in BCS (Binary Canonical Serialization) format
 
 
 
public fun to_bytes<MoveValue>(v: &MoveValue): vector<u8>
diff --git a/crates/sui-framework/docs/sui-system/dependencies/move-stdlib/option.md b/crates/sui-framework/docs/sui-system/dependencies/move-stdlib/option.md
index f161bb1b20b11..0f6660f50bd58 100644
--- a/crates/sui-framework/docs/sui-system/dependencies/move-stdlib/option.md
+++ b/crates/sui-framework/docs/sui-system/dependencies/move-stdlib/option.md
@@ -3,6 +3,7 @@
 
 # Module `0x1::option`
 
+This module defines the Option type and its methods to represent and handle an optional value.
 
 
 -  [Struct `Option`](#0x1_option_Option)
@@ -35,6 +36,8 @@
 
 ## Struct `Option`
 
+Abstraction of a value that may or may not be present. Implemented with a vector of size
+zero or one because Move bytecode does not have ADTs.
 
 
 
struct Option<Element> has copy, drop, store
@@ -65,6 +68,8 @@
 
 
 
+The Option is in an invalid state for the operation attempted.
+The Option is Some while it should be None.
 
 
 
const EOPTION_IS_SET: u64 = 262144;
@@ -74,6 +79,8 @@
 
 
 
+The Option is in an invalid state for the operation attempted.
+The Option is None while it should be Some.
 
 
 
const EOPTION_NOT_SET: u64 = 262145;
@@ -85,6 +92,7 @@
 
 ## Function `none`
 
+Return an empty Option
 
 
 
public fun none<Element>(): option::Option<Element>
@@ -109,6 +117,7 @@
 
 ## Function `some`
 
+Return an Option containing e
 
 
 
public fun some<Element>(e: Element): option::Option<Element>
@@ -133,6 +142,7 @@
 
 ## Function `is_none`
 
+Return true if t does not hold a value
 
 
 
public fun is_none<Element>(t: &option::Option<Element>): bool
@@ -157,6 +167,7 @@
 
 ## Function `is_some`
 
+Return true if t holds a value
 
 
 
public fun is_some<Element>(t: &option::Option<Element>): bool
@@ -181,6 +192,8 @@
 
 ## Function `contains`
 
+Return true if the value in t is equal to e_ref
+Always returns false if t does not hold a value
 
 
 
public fun contains<Element>(t: &option::Option<Element>, e_ref: &Element): bool
@@ -205,6 +218,8 @@
 
 ## Function `borrow`
 
+Return an immutable reference to the value inside t
+Aborts if t does not hold a value
 
 
 
public fun borrow<Element>(t: &option::Option<Element>): &Element
@@ -230,6 +245,8 @@
 
 ## Function `borrow_with_default`
 
+Return a reference to the value inside t if it holds one
+Return default_ref if t does not hold a value
 
 
 
public fun borrow_with_default<Element>(t: &option::Option<Element>, default_ref: &Element): &Element
@@ -256,6 +273,8 @@
 
 ## Function `get_with_default`
 
+Return the value inside t if it holds one
+Return default if t does not hold a value
 
 
 
public fun get_with_default<Element: copy, drop>(t: &option::Option<Element>, default: Element): Element
@@ -285,6 +304,8 @@
 
 ## Function `fill`
 
+Convert the none option t to a some option by adding e.
+Aborts if t already holds a value
 
 
 
public fun fill<Element>(t: &mut option::Option<Element>, e: Element)
@@ -311,6 +332,8 @@
 
 ## Function `extract`
 
+Convert a some option to a none by removing and returning the value stored inside t
+Aborts if t does not hold a value
 
 
 
public fun extract<Element>(t: &mut option::Option<Element>): Element
@@ -336,6 +359,8 @@
 
 ## Function `borrow_mut`
 
+Return a mutable reference to the value inside t
+Aborts if t does not hold a value
 
 
 
public fun borrow_mut<Element>(t: &mut option::Option<Element>): &mut Element
@@ -361,6 +386,8 @@
 
 ## Function `swap`
 
+Swap the old value inside t with e and return the old value
+Aborts if t does not hold a value
 
 
 
public fun swap<Element>(t: &mut option::Option<Element>, e: Element): Element
@@ -389,6 +416,9 @@
 
 ## Function `swap_or_fill`
 
+Swap the old value inside t with e and return the old value;
+or if there is no old value, fill it with e.
+Different from swap(), swap_or_fill() allows for t not holding a value.
 
 
 
public fun swap_or_fill<Element>(t: &mut option::Option<Element>, e: Element): option::Option<Element>
@@ -417,6 +447,7 @@
 
 ## Function `destroy_with_default`
 
+Destroys t. If t holds a value, return it. Returns default otherwise
 
 
 
public fun destroy_with_default<Element: drop>(t: option::Option<Element>, default: Element): Element
@@ -443,6 +474,8 @@
 
 ## Function `destroy_some`
 
+Unpack t and return its contents
+Aborts if t does not hold a value
 
 
 
public fun destroy_some<Element>(t: option::Option<Element>): Element
@@ -471,6 +504,8 @@
 
 ## Function `destroy_none`
 
+Unpack t
+Aborts if t holds a value
 
 
 
public fun destroy_none<Element>(t: option::Option<Element>)
@@ -497,6 +532,8 @@
 
 ## Function `to_vec`
 
+Convert t into a vector of length 1 if it is Some,
+and an empty vector otherwise
 
 
 
public fun to_vec<Element>(t: option::Option<Element>): vector<Element>
diff --git a/crates/sui-framework/docs/sui-system/dependencies/move-stdlib/string.md b/crates/sui-framework/docs/sui-system/dependencies/move-stdlib/string.md
index 4a48dbc3ea0ae..088a2da2f91e9 100644
--- a/crates/sui-framework/docs/sui-system/dependencies/move-stdlib/string.md
+++ b/crates/sui-framework/docs/sui-system/dependencies/move-stdlib/string.md
@@ -3,6 +3,7 @@
 
 # Module `0x1::string`
 
+The string module defines the String type which represents UTF8 encoded strings.
 
 
 -  [Struct `String`](#0x1_string_String)
@@ -36,6 +37,7 @@
 
 ## Struct `String`
 
+A String holds a sequence of bytes which is guaranteed to be in utf8 format.
 
 
 
struct String has copy, drop, store
@@ -66,6 +68,7 @@
 
 
 
+Index out of range.
 
 
 
const EINVALID_INDEX: u64 = 2;
@@ -75,6 +78,7 @@
 
 
 
+An invalid UTF8 encoding.
 
 
 
const EINVALID_UTF8: u64 = 1;
@@ -86,6 +90,7 @@
 
 ## Function `utf8`
 
+Creates a new string from a sequence of bytes. Aborts if the bytes do not represent valid utf8.
 
 
 
public fun utf8(bytes: vector<u8>): string::String
@@ -111,6 +116,7 @@
 
 ## Function `from_ascii`
 
+Convert an ASCII string to a UTF8 string
 
 
 
public fun from_ascii(s: ascii::String): string::String
@@ -135,6 +141,8 @@
 
 ## Function `to_ascii`
 
+Convert an UTF8 string to an ASCII string.
+Aborts if s is not valid ASCII
 
 
 
public fun to_ascii(s: string::String): ascii::String
@@ -160,6 +168,7 @@
 
 ## Function `try_utf8`
 
+Tries to create a new string from a sequence of bytes.
 
 
 
public fun try_utf8(bytes: vector<u8>): option::Option<string::String>
@@ -188,6 +197,7 @@
 
 ## Function `bytes`
 
+Returns a reference to the underlying byte vector.
 
 
 
public fun bytes(s: &string::String): &vector<u8>
@@ -212,6 +222,7 @@
 
 ## Function `is_empty`
 
+Checks whether this string is empty.
 
 
 
public fun is_empty(s: &string::String): bool
@@ -236,6 +247,7 @@
 
 ## Function `length`
 
+Returns the length of this string, in bytes.
 
 
 
public fun length(s: &string::String): u64
@@ -260,6 +272,7 @@
 
 ## Function `append`
 
+Appends a string.
 
 
 
public fun append(s: &mut string::String, r: string::String)
@@ -284,6 +297,7 @@
 
 ## Function `append_utf8`
 
+Appends bytes which must be in valid utf8 format.
 
 
 
public fun append_utf8(s: &mut string::String, bytes: vector<u8>)
@@ -308,6 +322,8 @@
 
 ## Function `insert`
 
+Insert the other string at the byte index in given string. The index must be at a valid utf8 char
+boundary.
 
 
 
public fun insert(s: &mut string::String, at: u64, o: string::String)
@@ -339,6 +355,9 @@
 
 ## Function `sub_string`
 
+Returns a sub-string using the given byte indices, where i is the first byte position and j is the start
+of the first byte not included (or the length of the string). The indices must be at valid utf8 char boundaries,
+guaranteeing that the result is valid utf8.
 
 
 
public fun sub_string(s: &string::String, i: u64, j: u64): string::String
@@ -369,6 +388,7 @@
 
 ## Function `index_of`
 
+Computes the index of the first occurrence of a string. Returns length(s) if no occurrence found.
 
 
 
public fun index_of(s: &string::String, r: &string::String): u64
diff --git a/crates/sui-framework/docs/sui-system/dependencies/move-stdlib/type_name.md b/crates/sui-framework/docs/sui-system/dependencies/move-stdlib/type_name.md
index 48560570a18a3..01cc1819fa89e 100644
--- a/crates/sui-framework/docs/sui-system/dependencies/move-stdlib/type_name.md
+++ b/crates/sui-framework/docs/sui-system/dependencies/move-stdlib/type_name.md
@@ -3,6 +3,7 @@
 
 # Module `0x1::type_name`
 
+Functionality for converting Move types into values. Use with care!
 
 
 -  [Struct `TypeName`](#0x1_type_name_TypeName)
@@ -42,7 +43,13 @@
 name: ascii::String
 
 
- + String representation of the type. All types are represented + using their source syntax: + "u8", "u64", "bool", "address", "vector", and so on for primitive types. + Struct types are represented as fully qualified type names; e.g. + 00000000000000000000000000000001::string::String or + 0000000000000000000000000000000a::module_name1::type_name1<0000000000000000000000000000000a::module_name2::type_name2<u64>> + Addresses are hex-encoded lowercase values of length ADDRESS_LENGTH (16, 20, or 32 depending on the Move platform)
@@ -56,6 +63,7 @@ +ASCII Character code for the c (lowercase c) symbol.
const ASCII_C: u8 = 99;
@@ -65,6 +73,7 @@
 
 
 
+ASCII Character code for the : (colon) symbol.
 
 
 
const ASCII_COLON: u8 = 58;
@@ -74,6 +83,7 @@
 
 
 
+ASCII Character code for the e (lowercase e) symbol.
 
 
 
const ASCII_E: u8 = 101;
@@ -83,6 +93,7 @@
 
 
 
+ASCII Character code for the o (lowercase o) symbol.
 
 
 
const ASCII_O: u8 = 111;
@@ -92,6 +103,7 @@
 
 
 
+ASCII Character code for the r (lowercase r) symbol.
 
 
 
const ASCII_R: u8 = 114;
@@ -101,6 +113,7 @@
 
 
 
+ASCII Character code for the t (lowercase t) symbol.
 
 
 
const ASCII_T: u8 = 116;
@@ -110,6 +123,7 @@
 
 
 
+ASCII Character code for the v (lowercase v) symbol.
 
 
 
const ASCII_V: u8 = 118;
@@ -119,6 +133,7 @@
 
 
 
+The type is not from a package/module. It is a primitive type.
 
 
 
const ENonModuleType: u64 = 0;
@@ -130,6 +145,10 @@
 
 ## Function `get`
 
+Return a value representation of the type T.  Package IDs
+that appear in fully qualified type names in the output from
+this function are defining IDs (the ID of the package in
+storage that first introduced the type).
 
 
 
public fun get<T>(): type_name::TypeName
@@ -152,6 +171,11 @@
 
 ## Function `get_with_original_ids`
 
+Return a value representation of the type T.  Package IDs
+that appear in fully qualified type names in the output from
+this function are original IDs (the ID of the first version of
+the package, even if the type in question was introduced in a
+later upgrade).
 
 
 
public fun get_with_original_ids<T>(): type_name::TypeName
@@ -174,6 +198,8 @@
 
 ## Function `is_primitive`
 
+Returns true iff the TypeName represents a primitive type, i.e. one of
+u8, u16, u32, u64, u128, u256, bool, address, vector.
 
 
 
public fun is_primitive(self: &type_name::TypeName): bool
@@ -214,6 +240,7 @@
 
 ## Function `borrow_string`
 
+Get the String representation of self
 
 
 
public fun borrow_string(self: &type_name::TypeName): &ascii::String
@@ -238,6 +265,8 @@
 
 ## Function `get_address`
 
+Get Address string (Base16 encoded), first part of the TypeName.
+Aborts if given a primitive type.
 
 
 
public fun get_address(self: &type_name::TypeName): ascii::String
@@ -279,6 +308,8 @@
 
 ## Function `get_module`
 
+Get name of the module.
+Aborts if given a primitive type.
 
 
 
public fun get_module(self: &type_name::TypeName): ascii::String
@@ -320,6 +351,7 @@
 
 ## Function `into_string`
 
+Convert self into its inner String
 
 
 
public fun into_string(self: type_name::TypeName): ascii::String
diff --git a/crates/sui-framework/docs/sui-system/dependencies/move-stdlib/vector.md b/crates/sui-framework/docs/sui-system/dependencies/move-stdlib/vector.md
index c7eb58dd7c830..8485fe043291b 100644
--- a/crates/sui-framework/docs/sui-system/dependencies/move-stdlib/vector.md
+++ b/crates/sui-framework/docs/sui-system/dependencies/move-stdlib/vector.md
@@ -3,6 +3,8 @@
 
 # Module `0x1::vector`
 
+A variable-sized container that can hold any type. Indexing is 0-based, and
+vectors are growable. This module has many native functions.
 
 
 -  [Constants](#@Constants_0)
@@ -36,6 +38,7 @@
 
 
 
+The index into the vector is out of bounds
 
 
 
const EINDEX_OUT_OF_BOUNDS: u64 = 131072;
@@ -47,6 +50,7 @@
 
 ## Function `empty`
 
+Create an empty vector.
 
 
 
public fun empty<Element>(): vector<Element>
@@ -69,6 +73,7 @@
 
 ## Function `length`
 
+Return the length of the vector.
 
 
 
public fun length<Element>(v: &vector<Element>): u64
@@ -91,6 +96,8 @@
 
 ## Function `borrow`
 
+Acquire an immutable reference to the ith element of the vector v.
+Aborts if i is out of bounds.
 
 
 
public fun borrow<Element>(v: &vector<Element>, i: u64): &Element
@@ -113,6 +120,7 @@
 
 ## Function `push_back`
 
+Add element e to the end of the vector v.
 
 
 
public fun push_back<Element>(v: &mut vector<Element>, e: Element)
@@ -135,6 +143,8 @@
 
 ## Function `borrow_mut`
 
+Return a mutable reference to the ith element in the vector v.
+Aborts if i is out of bounds.
 
 
 
public fun borrow_mut<Element>(v: &mut vector<Element>, i: u64): &mut Element
@@ -157,6 +167,8 @@
 
 ## Function `pop_back`
 
+Pop an element from the end of vector v.
+Aborts if v is empty.
 
 
 
public fun pop_back<Element>(v: &mut vector<Element>): Element
@@ -179,6 +191,8 @@
 
 ## Function `destroy_empty`
 
+Destroy the vector v.
+Aborts if v is not empty.
 
 
 
public fun destroy_empty<Element>(v: vector<Element>)
@@ -201,6 +215,8 @@
 
 ## Function `swap`
 
+Swaps the elements at the ith and jth indices in the vector v.
+Aborts if i or j is out of bounds.
 
 
 
public fun swap<Element>(v: &mut vector<Element>, i: u64, j: u64)
@@ -223,6 +239,7 @@
 
 ## Function `singleton`
 
+Return an vector of size one containing element e.
 
 
 
public fun singleton<Element>(e: Element): vector<Element>
@@ -249,6 +266,7 @@
 
 ## Function `reverse`
 
+Reverses the order of the elements in the vector v in place.
 
 
 
public fun reverse<Element>(v: &mut vector<Element>)
@@ -282,6 +300,7 @@
 
 ## Function `append`
 
+Pushes all of the elements of the other vector into the lhs vector.
 
 
 
public fun append<Element>(lhs: &mut vector<Element>, other: vector<Element>)
@@ -308,6 +327,7 @@
 
 ## Function `is_empty`
 
+Return true if the vector v has no elements and false otherwise.
 
 
 
public fun is_empty<Element>(v: &vector<Element>): bool
@@ -332,6 +352,8 @@
 
 ## Function `contains`
 
+Return true if e is in the vector v.
+Otherwise, returns false.
 
 
 
public fun contains<Element>(v: &vector<Element>, e: &Element): bool
@@ -362,6 +384,8 @@
 
 ## Function `index_of`
 
+Return (true, i) if e is in the vector v at index i.
+Otherwise, returns (false, 0).
 
 
 
public fun index_of<Element>(v: &vector<Element>, e: &Element): (bool, u64)
@@ -392,6 +416,9 @@
 
 ## Function `remove`
 
+Remove the ith element of the vector v, shifting all subsequent elements.
+This is O(n) and preserves ordering of elements in the vector.
+Aborts if i is out of bounds.
 
 
 
public fun remove<Element>(v: &mut vector<Element>, i: u64): Element
@@ -422,6 +449,11 @@
 
 ## Function `insert`
 
+Insert e at position i in the vector v.
+If i is in bounds, this shifts the old v[i] and all subsequent elements to the right.
+If i == length(v), this adds e to the end of the vector.
+This is O(n) and preserves ordering of elements in the vector.
+Aborts if i > length(v)
 
 
 
public fun insert<Element>(v: &mut vector<Element>, e: Element, i: u64)
@@ -454,6 +486,9 @@
 
 ## Function `swap_remove`
 
+Swap the ith element of the vector v with the last element and then pop the vector.
+This is O(1), but does not preserve ordering of elements in the vector.
+Aborts if i is out of bounds.
 
 
 
public fun swap_remove<Element>(v: &mut vector<Element>, i: u64): Element
diff --git a/crates/sui-framework/docs/sui-system/dependencies/sui-framework/address.md b/crates/sui-framework/docs/sui-system/dependencies/sui-framework/address.md
index c14fcf69945ab..88277ddf277ce 100644
--- a/crates/sui-framework/docs/sui-system/dependencies/sui-framework/address.md
+++ b/crates/sui-framework/docs/sui-system/dependencies/sui-framework/address.md
@@ -33,6 +33,7 @@
 
 
 
+Error from from_bytes when it is supplied too many or too few bytes.
 
 
 
const EAddressParseError: u64 = 0;
@@ -42,6 +43,7 @@
 
 
 
+The length of an address, in bytes
 
 
 
const LENGTH: u64 = 32;
@@ -62,6 +64,8 @@
 
 ## Function `to_u256`
 
+Convert a into a u256 by interpreting a as the bytes of a big-endian integer
+(e.g., to_u256(0x1) == 1)
 
 
 
public fun to_u256(a: address): u256
@@ -84,6 +88,8 @@
 
 ## Function `from_u256`
 
+Convert n into an address by encoding it as a big-endian integer (e.g., from_u256(1) = @0x1)
+Aborts if n > MAX_ADDRESS
 
 
 
public fun from_u256(n: u256): address
@@ -106,6 +112,8 @@
 
 ## Function `from_bytes`
 
+Convert bytes into an address.
+Aborts with EAddressParseError if the length of bytes is not 32
 
 
 
public fun from_bytes(bytes: vector<u8>): address
@@ -128,6 +136,7 @@
 
 ## Function `to_bytes`
 
+Convert a into BCS-encoded bytes.
 
 
 
public fun to_bytes(a: address): vector<u8>
@@ -152,6 +161,7 @@
 
 ## Function `to_ascii_string`
 
+Convert a to a hex-encoded ASCII string
 
 
 
public fun to_ascii_string(a: address): ascii::String
@@ -176,6 +186,7 @@
 
 ## Function `to_string`
 
+Convert a to a hex-encoded ASCII string
 
 
 
public fun to_string(a: address): string::String
@@ -200,6 +211,12 @@
 
 ## Function `from_ascii_bytes`
 
+Converts an ASCII string to an address, taking the numerical value for each character. The
+string must be Base16 encoded, and thus exactly 64 characters long.
+For example, the string "00000000000000000000000000000000000000000000000000000000DEADB33F"
+will be converted to the address @0xDEADB33F.
+Aborts with EAddressParseError if the length of s is not 64,
+or if an invalid character is encountered.
 
 
 
public fun from_ascii_bytes(bytes: &vector<u8>): address
@@ -260,6 +277,7 @@
 
 ## Function `length`
 
+Length of a Sui address in bytes
 
 
 
public fun length(): u64
@@ -284,6 +302,7 @@
 
 ## Function `max`
 
+Largest possible address
 
 
 
public fun max(): u256
diff --git a/crates/sui-framework/docs/sui-system/dependencies/sui-framework/authenticator_state.md b/crates/sui-framework/docs/sui-system/dependencies/sui-framework/authenticator_state.md
index 5231890001b00..7fcd57bcaaf5d 100644
--- a/crates/sui-framework/docs/sui-system/dependencies/sui-framework/authenticator_state.md
+++ b/crates/sui-framework/docs/sui-system/dependencies/sui-framework/authenticator_state.md
@@ -41,6 +41,9 @@
 
 ## Resource `AuthenticatorState`
 
+Singleton shared object which stores the global authenticator state.
+The actual state is stored in a dynamic field of type AuthenticatorStateInner to support
+future versions of the authenticator state.
 
 
 
struct AuthenticatorState has key
@@ -96,7 +99,7 @@
 active_jwks: vector<authenticator_state::ActiveJwk>
 
 
- + List of currently active JWKs.
@@ -107,6 +110,7 @@ ## Struct `JWK` +Must match the JWK struct in fastcrypto-zkp
struct JWK has copy, drop, store
@@ -152,6 +156,7 @@
 
 ## Struct `JwkId`
 
+Must match the JwkId struct in fastcrypto-zkp
 
 
 
struct JwkId has copy, drop, store
@@ -227,6 +232,7 @@
 
 
 
+Sender is not @0x0 the system address.
 
 
 
const ENotSystemAddress: u64 = 0;
@@ -426,6 +432,9 @@
 
 ## Function `create`
 
+Create and share the AuthenticatorState object. This function is call exactly once, when
+the authenticator state object is first created.
+Can only be called by genesis or change_epoch transactions.
 
 
 
fun create(ctx: &tx_context::TxContext)
@@ -563,6 +572,10 @@
 
 ## Function `update_authenticator_state`
 
+Record a new set of active_jwks. Called when executing the AuthenticatorStateUpdate system
+transaction. The new input vector must be sorted and must not contain duplicates.
+If a new JWK is already present, but with a previous epoch, then the epoch is updated to
+indicate that the JWK has been validated in the current epoch and should not be expired.
 
 
 
fun update_authenticator_state(self: &mut authenticator_state::AuthenticatorState, new_active_jwks: vector<authenticator_state::ActiveJwk>, ctx: &tx_context::TxContext)
@@ -768,6 +781,8 @@
 
 ## Function `get_active_jwks`
 
+Get the current active_jwks. Called when the node starts up in order to load the current
+JWK state from the chain.
 
 
 
fun get_active_jwks(self: &authenticator_state::AuthenticatorState, ctx: &tx_context::TxContext): vector<authenticator_state::ActiveJwk>
diff --git a/crates/sui-framework/docs/sui-system/dependencies/sui-framework/bag.md b/crates/sui-framework/docs/sui-system/dependencies/sui-framework/bag.md
index e37ae7c37eea3..2393c5f9d285f 100644
--- a/crates/sui-framework/docs/sui-system/dependencies/sui-framework/bag.md
+++ b/crates/sui-framework/docs/sui-system/dependencies/sui-framework/bag.md
@@ -3,6 +3,26 @@
 
 # Module `0x2::bag`
 
+A bag is a heterogeneous map-like collection. The collection is similar to sui::table in that
+its keys and values are not stored within the Bag value, but instead are stored using Sui's
+object system. The Bag struct acts only as a handle into the object system to retrieve those
+keys and values.
+Note that this means that Bag values with exactly the same key-value mapping will not be
+equal, with ==, at runtime. For example
+```
+let bag1 = bag::new();
+let bag2 = bag::new();
+bag::add(&mut bag1, 0, false);
+bag::add(&mut bag1, 1, true);
+bag::add(&mut bag2, 0, false);
+bag::add(&mut bag2, 1, true);
+// bag1 does not equal bag2, despite having the same entries
+assert!(&bag1 != &bag2, 0);
+```
+At it's core, sui::bag is a wrapper around UID that allows for access to
+sui::dynamic_field while preventing accidentally stranding field values. A UID can be
+deleted, even if it has dynamic fields associated with it, but a bag, on the other hand, must be
+empty to be destroyed.
 
 
 -  [Resource `Bag`](#0x2_bag_Bag)
@@ -46,13 +66,13 @@
 id: object::UID
 
 
- + the ID of this bag
size: u64
- + the number of key-value pairs in the bag
@@ -77,6 +97,7 @@ ## Function `new` +Creates a new, empty bag
public fun new(ctx: &mut tx_context::TxContext): bag::Bag
@@ -104,6 +125,9 @@
 
 ## Function `add`
 
+Adds a key-value pair to the bag bag: &mut Bag
+Aborts with sui::dynamic_field::EFieldAlreadyExists if the bag already has an entry with
+that key k: K.
 
 
 
public fun add<K: copy, drop, store, V: store>(bag: &mut bag::Bag, k: K, v: V)
@@ -129,6 +153,11 @@
 
 ## Function `borrow`
 
+Immutable borrows the value associated with the key in the bag bag: &Bag.
+Aborts with sui::dynamic_field::EFieldDoesNotExist if the bag does not have an entry with
+that key k: K.
+Aborts with sui::dynamic_field::EFieldTypeMismatch if the bag has an entry for the key, but
+the value does not have the specified type.
 
 
 
public fun borrow<K: copy, drop, store, V: store>(bag: &bag::Bag, k: K): &V
@@ -153,6 +182,11 @@
 
 ## Function `borrow_mut`
 
+Mutably borrows the value associated with the key in the bag bag: &mut Bag.
+Aborts with sui::dynamic_field::EFieldDoesNotExist if the bag does not have an entry with
+that key k: K.
+Aborts with sui::dynamic_field::EFieldTypeMismatch if the bag has an entry for the key, but
+the value does not have the specified type.
 
 
 
public fun borrow_mut<K: copy, drop, store, V: store>(bag: &mut bag::Bag, k: K): &mut V
@@ -177,6 +211,11 @@
 
 ## Function `remove`
 
+Mutably borrows the key-value pair in the bag bag: &mut Bag and returns the value.
+Aborts with sui::dynamic_field::EFieldDoesNotExist if the bag does not have an entry with
+that key k: K.
+Aborts with sui::dynamic_field::EFieldTypeMismatch if the bag has an entry for the key, but
+the value does not have the specified type.
 
 
 
public fun remove<K: copy, drop, store, V: store>(bag: &mut bag::Bag, k: K): V
@@ -203,6 +242,7 @@
 
 ## Function `contains`
 
+Returns true iff there is an value associated with the key k: K in the bag bag: &Bag
 
 
 
public fun contains<K: copy, drop, store>(bag: &bag::Bag, k: K): bool
@@ -227,6 +267,8 @@
 
 ## Function `contains_with_type`
 
+Returns true iff there is an value associated with the key k: K in the bag bag: &Bag
+with an assigned value of type V
 
 
 
public fun contains_with_type<K: copy, drop, store, V: store>(bag: &bag::Bag, k: K): bool
@@ -251,6 +293,7 @@
 
 ## Function `length`
 
+Returns the size of the bag, the number of key-value pairs
 
 
 
public fun length(bag: &bag::Bag): u64
@@ -275,6 +318,7 @@
 
 ## Function `is_empty`
 
+Returns true iff the bag is empty (if length returns 0)
 
 
 
public fun is_empty(bag: &bag::Bag): bool
@@ -299,6 +343,8 @@
 
 ## Function `destroy_empty`
 
+Destroys an empty bag
+Aborts with EBagNotEmpty if the bag still contains values
 
 
 
public fun destroy_empty(bag: bag::Bag)
diff --git a/crates/sui-framework/docs/sui-system/dependencies/sui-framework/balance.md b/crates/sui-framework/docs/sui-system/dependencies/sui-framework/balance.md
index ccb3f78bfdd13..8832aa8ab8794 100644
--- a/crates/sui-framework/docs/sui-system/dependencies/sui-framework/balance.md
+++ b/crates/sui-framework/docs/sui-system/dependencies/sui-framework/balance.md
@@ -3,6 +3,9 @@
 
 # Module `0x2::balance`
 
+A storable handler for Balances in general. Is used in the Coin
+module to allow balance operations and can be used to implement
+custom coins with Supply and Balances.
 
 
 -  [Struct `Supply`](#0x2_balance_Supply)
@@ -32,6 +35,8 @@
 
 ## Struct `Supply`
 
+A Supply of T. Used for minting and burning.
+Wrapped into a TreasuryCap in the Coin module.
 
 
 
struct Supply<T> has store
@@ -59,6 +64,8 @@
 
 ## Struct `Balance`
 
+Storable balance - an inner struct of a Coin type.
+Can be used to store coins which don't need the key ability.
 
 
 
struct Balance<T> has store
@@ -89,6 +96,7 @@
 
 
 
+Sender is not @0x0 the system address.
 
 
 
const ENotSystemAddress: u64 = 3;
@@ -98,6 +106,7 @@
 
 
 
+For when trying to destroy a non-zero balance.
 
 
 
const ENonZero: u64 = 0;
@@ -107,6 +116,7 @@
 
 
 
+For when trying to withdraw more than there is.
 
 
 
const ENotEnough: u64 = 2;
@@ -116,6 +126,7 @@
 
 
 
+For when an overflow is happening on Supply operations.
 
 
 
const EOverflow: u64 = 1;
@@ -127,6 +138,7 @@
 
 ## Function `value`
 
+Get the amount stored in a Balance.
 
 
 
public fun value<T>(self: &balance::Balance<T>): u64
@@ -151,6 +163,7 @@
 
 ## Function `supply_value`
 
+Get the Supply value.
 
 
 
public fun supply_value<T>(supply: &balance::Supply<T>): u64
@@ -175,6 +188,7 @@
 
 ## Function `create_supply`
 
+Create a new supply for type T.
 
 
 
public fun create_supply<T: drop>(_: T): balance::Supply<T>
@@ -199,6 +213,7 @@
 
 ## Function `increase_supply`
 
+Increase supply by value and create a new Balance<T> with this value.
 
 
 
public fun increase_supply<T>(self: &mut balance::Supply<T>, value: u64): balance::Balance<T>
@@ -225,6 +240,7 @@
 
 ## Function `decrease_supply`
 
+Burn a Balance and decrease Supply.
 
 
 
public fun decrease_supply<T>(self: &mut balance::Supply<T>, balance: balance::Balance<T>): u64
@@ -252,6 +268,7 @@
 
 ## Function `zero`
 
+Create a zero Balance for type T.
 
 
 
public fun zero<T>(): balance::Balance<T>
@@ -276,6 +293,7 @@
 
 ## Function `join`
 
+Join two balances together.
 
 
 
public fun join<T>(self: &mut balance::Balance<T>, balance: balance::Balance<T>): u64
@@ -302,6 +320,7 @@
 
 ## Function `split`
 
+Split a Balance and take a sub balance from it.
 
 
 
public fun split<T>(self: &mut balance::Balance<T>, value: u64): balance::Balance<T>
@@ -328,6 +347,7 @@
 
 ## Function `withdraw_all`
 
+Withdraw all balance. After this the remaining balance must be 0.
 
 
 
public fun withdraw_all<T>(self: &mut balance::Balance<T>): balance::Balance<T>
@@ -353,6 +373,7 @@
 
 ## Function `destroy_zero`
 
+Destroy a zero Balance.
 
 
 
public fun destroy_zero<T>(balance: balance::Balance<T>)
@@ -378,6 +399,9 @@
 
 ## Function `create_staking_rewards`
 
+CAUTION: this function creates a Balance without increasing the supply.
+It should only be called by the epoch change system txn to create staking rewards,
+and nowhere else.
 
 
 
fun create_staking_rewards<T>(value: u64, ctx: &tx_context::TxContext): balance::Balance<T>
@@ -403,6 +427,9 @@
 
 ## Function `destroy_storage_rebates`
 
+CAUTION: this function destroys a Balance without decreasing the supply.
+It should only be called by the epoch change system txn to destroy storage rebates,
+and nowhere else.
 
 
 
fun destroy_storage_rebates<T>(self: balance::Balance<T>, ctx: &tx_context::TxContext)
@@ -428,6 +455,7 @@
 
 ## Function `destroy_supply`
 
+Destroy a Supply preventing any further minting and burning.
 
 
 
public(friend) fun destroy_supply<T>(self: balance::Supply<T>): u64
diff --git a/crates/sui-framework/docs/sui-system/dependencies/sui-framework/clock.md b/crates/sui-framework/docs/sui-system/dependencies/sui-framework/clock.md
index 6b0c7e8fc5b7a..258f811884591 100644
--- a/crates/sui-framework/docs/sui-system/dependencies/sui-framework/clock.md
+++ b/crates/sui-framework/docs/sui-system/dependencies/sui-framework/clock.md
@@ -3,6 +3,8 @@
 
 # Module `0x2::clock`
 
+APIs for accessing time from move calls, via the Clock: a unique
+shared object that is created at 0x6 during genesis.
 
 
 -  [Resource `Clock`](#0x2_clock_Clock)
@@ -23,6 +25,14 @@
 
 ## Resource `Clock`
 
+Singleton shared object that exposes time to Move calls.  This
+object is found at address 0x6, and can only be read (accessed
+via an immutable reference) by entry functions.
+
+Entry Functions that attempt to accept Clock by mutable
+reference or value will fail to verify, and honest validators
+will not sign or execute transactions that use Clock as an
+input parameter, unless it is passed by immutable reference.
 
 
 
struct Clock has key
@@ -45,7 +55,10 @@
 timestamp_ms: u64
 
 
- + The clock's timestamp, which is set automatically by a + system transaction every time consensus commits a + schedule, or by sui::clock::increment_for_testing during + testing.
@@ -59,6 +72,7 @@ +Sender is not @0x0 the system address.
const ENotSystemAddress: u64 = 0;
@@ -70,6 +84,8 @@
 
 ## Function `timestamp_ms`
 
+The clock's current timestamp as a running total of
+milliseconds since an arbitrary point in the past.
 
 
 
public fun timestamp_ms(clock: &clock::Clock): u64
@@ -94,6 +110,8 @@
 
 ## Function `create`
 
+Create and share the singleton Clock -- this function is
+called exactly once, during genesis.
 
 
 
fun create(ctx: &tx_context::TxContext)
diff --git a/crates/sui-framework/docs/sui-system/dependencies/sui-framework/coin.md b/crates/sui-framework/docs/sui-system/dependencies/sui-framework/coin.md
index 015a2e81e7340..772f6b73dd18e 100644
--- a/crates/sui-framework/docs/sui-system/dependencies/sui-framework/coin.md
+++ b/crates/sui-framework/docs/sui-system/dependencies/sui-framework/coin.md
@@ -3,6 +3,9 @@
 
 # Module `0x2::coin`
 
+Defines the Coin type - platform wide representation of fungible
+tokens and coins. Coin can be described as a secure wrapper around
+Balance type.
 
 
 -  [Resource `Coin`](#0x2_coin_Coin)
@@ -68,6 +71,7 @@
 
 ## Resource `Coin`
 
+A coin of type T worth value. Transferable and storable
 
 
 
struct Coin<T> has store, key
@@ -101,6 +105,8 @@
 
 ## Resource `CoinMetadata`
 
+Each Coin type T created through create_currency function will have a
+unique instance of CoinMetadata that stores the metadata for this coin type.
 
 
 
struct CoinMetadata<T> has store, key
@@ -123,31 +129,34 @@
 decimals: u8
 
 
- + Number of decimal places the coin uses. + A coin with value N and decimals D should be shown as N / 10^D + E.g., a coin with value 7002 and decimals 3 should be displayed as 7.002 + This is metadata for display usage only.
name: string::String
- + Name for the token
symbol: ascii::String
- + Symbol for the token
description: string::String
- + Description of the token
icon_url: option::Option<url::Url>
- + URL for the token logo
@@ -158,6 +167,8 @@ ## Resource `RegulatedCoinMetadata` +Similar to CoinMetadata, but created only for regulated coins that use the DenyList. +This object is always immutable.
struct RegulatedCoinMetadata<T> has key
@@ -180,13 +191,13 @@
 coin_metadata_object: object::ID
 
 
- + The ID of the coin's CoinMetadata object.
deny_cap_object: object::ID
- + The ID of the coin's DenyCap object.
@@ -197,6 +208,8 @@ ## Resource `TreasuryCap` +Capability allowing the bearer to mint and burn +coins of type T. Transferable
struct TreasuryCap<T> has store, key
@@ -230,6 +243,8 @@
 
 ## Resource `DenyCap`
 
+Capability allowing the bearer to freeze addresses, preventing those addresses from
+interacting with the coin as an input to a transaction.
 
 
 
struct DenyCap<T> has store, key
@@ -287,6 +302,7 @@
 
 
 
+Trying to split a coin more times than its balance allows.
 
 
 
const ENotEnough: u64 = 2;
@@ -296,6 +312,7 @@
 
 
 
+The index into the deny list vector for the sui::coin::Coin type.
 
 
 
const DENY_LIST_COIN_INDEX: u64 = 0;
@@ -305,6 +322,7 @@
 
 
 
+A type passed to create_supply is not a one-time witness.
 
 
 
const EBadWitness: u64 = 0;
@@ -314,6 +332,7 @@
 
 
 
+Invalid arguments are passed to a function.
 
 
 
const EInvalidArg: u64 = 1;
@@ -325,6 +344,7 @@
 
 ## Function `total_supply`
 
+Return the total number of T's in circulation.
 
 
 
public fun total_supply<T>(cap: &coin::TreasuryCap<T>): u64
@@ -349,6 +369,10 @@
 
 ## Function `treasury_into_supply`
 
+Unwrap TreasuryCap getting the Supply.
+
+Operation is irreversible. Supply cannot be converted into a TreasuryCap due
+to different security guarantees (TreasuryCap can be created only once for a type)
 
 
 
public fun treasury_into_supply<T>(treasury: coin::TreasuryCap<T>): balance::Supply<T>
@@ -375,6 +399,7 @@
 
 ## Function `supply_immut`
 
+Get immutable reference to the treasury's Supply.
 
 
 
public fun supply_immut<T>(treasury: &coin::TreasuryCap<T>): &balance::Supply<T>
@@ -399,6 +424,7 @@
 
 ## Function `supply_mut`
 
+Get mutable reference to the treasury's Supply.
 
 
 
public fun supply_mut<T>(treasury: &mut coin::TreasuryCap<T>): &mut balance::Supply<T>
@@ -423,6 +449,7 @@
 
 ## Function `value`
 
+Public getter for the coin's value
 
 
 
public fun value<T>(self: &coin::Coin<T>): u64
@@ -447,6 +474,7 @@
 
 ## Function `balance`
 
+Get immutable reference to the balance of a coin.
 
 
 
public fun balance<T>(coin: &coin::Coin<T>): &balance::Balance<T>
@@ -471,6 +499,7 @@
 
 ## Function `balance_mut`
 
+Get a mutable reference to the balance of a coin.
 
 
 
public fun balance_mut<T>(coin: &mut coin::Coin<T>): &mut balance::Balance<T>
@@ -495,6 +524,7 @@
 
 ## Function `from_balance`
 
+Wrap a balance into a Coin to make it transferable.
 
 
 
public fun from_balance<T>(balance: balance::Balance<T>, ctx: &mut tx_context::TxContext): coin::Coin<T>
@@ -519,6 +549,7 @@
 
 ## Function `into_balance`
 
+Destruct a Coin wrapper and keep the balance.
 
 
 
public fun into_balance<T>(coin: coin::Coin<T>): balance::Balance<T>
@@ -545,6 +576,8 @@
 
 ## Function `take`
 
+Take a Coin worth of value from Balance.
+Aborts if value > balance.value
 
 
 
public fun take<T>(balance: &mut balance::Balance<T>, value: u64, ctx: &mut tx_context::TxContext): coin::Coin<T>
@@ -574,6 +607,7 @@
 
 ## Function `put`
 
+Put a Coin<T> to the Balance<T>.
 
 
 
public fun put<T>(balance: &mut balance::Balance<T>, coin: coin::Coin<T>)
@@ -598,6 +632,8 @@
 
 ## Function `join`
 
+Consume the coin c and add its value to self.
+Aborts if c.value + self.value > U64_MAX
 
 
 
public entry fun join<T>(self: &mut coin::Coin<T>, c: coin::Coin<T>)
@@ -624,6 +660,8 @@
 
 ## Function `split`
 
+Split coin self to two coins, one with balance split_amount,
+and the remaining balance is left is self.
 
 
 
public fun split<T>(self: &mut coin::Coin<T>, split_amount: u64, ctx: &mut tx_context::TxContext): coin::Coin<T>
@@ -650,6 +688,8 @@
 
 ## Function `divide_into_n`
 
+Split coin self into n - 1 coins with equal balances. The remainder is left in
+self. Return newly created coins.
 
 
 
public fun divide_into_n<T>(self: &mut coin::Coin<T>, n: u64, ctx: &mut tx_context::TxContext): vector<coin::Coin<T>>
@@ -686,6 +726,8 @@
 
 ## Function `zero`
 
+Make any Coin with a zero value. Useful for placeholding
+bids/payments or preemptively making empty balances.
 
 
 
public fun zero<T>(ctx: &mut tx_context::TxContext): coin::Coin<T>
@@ -710,6 +752,7 @@
 
 ## Function `destroy_zero`
 
+Destroy a coin with value zero
 
 
 
public fun destroy_zero<T>(c: coin::Coin<T>)
@@ -736,6 +779,9 @@
 
 ## Function `create_currency`
 
+Create a new currency type T as and return the TreasuryCap for
+T to the caller. Can only be called with a one-time-witness
+type, ensuring that there's only one TreasuryCap per T.
 
 
 
public fun create_currency<T: drop>(witness: T, decimals: u8, symbol: vector<u8>, name: vector<u8>, description: vector<u8>, icon_url: option::Option<url::Url>, ctx: &mut tx_context::TxContext): (coin::TreasuryCap<T>, coin::CoinMetadata<T>)
@@ -784,6 +830,9 @@
 
 ## Function `create_regulated_currency`
 
+This creates a new currency, via create_currency, but with an extra capability that
+allows for specific addresses to have their coins frozen. Those addresses cannot interact
+with the coin as input objects.
 
 
 
public fun create_regulated_currency<T: drop>(witness: T, decimals: u8, symbol: vector<u8>, name: vector<u8>, description: vector<u8>, icon_url: option::Option<url::Url>, ctx: &mut tx_context::TxContext): (coin::TreasuryCap<T>, coin::DenyCap<T>, coin::CoinMetadata<T>)
@@ -833,6 +882,8 @@
 
 ## Function `mint`
 
+Create a coin worth value and increase the total supply
+in cap accordingly.
 
 
 
public fun mint<T>(cap: &mut coin::TreasuryCap<T>, value: u64, ctx: &mut tx_context::TxContext): coin::Coin<T>
@@ -862,6 +913,9 @@
 
 ## Function `mint_balance`
 
+Mint some amount of T as a Balance and increase the total
+supply in cap accordingly.
+Aborts if value + cap.total_supply >= U64_MAX
 
 
 
public fun mint_balance<T>(cap: &mut coin::TreasuryCap<T>, value: u64): balance::Balance<T>
@@ -888,6 +942,8 @@
 
 ## Function `burn`
 
+Destroy the coin c and decrease the total supply in cap
+accordingly.
 
 
 
public entry fun burn<T>(cap: &mut coin::TreasuryCap<T>, c: coin::Coin<T>): u64
@@ -914,6 +970,8 @@
 
 ## Function `deny_list_add`
 
+Adds the given address to the deny list, preventing it
+from interacting with the specified coin type as an input to a transaction.
 
 
 
public fun deny_list_add<T>(deny_list: &mut deny_list::DenyList, _deny_cap: &mut coin::DenyCap<T>, addr: address, _ctx: &mut tx_context::TxContext)
@@ -950,6 +1008,8 @@
 
 ## Function `deny_list_remove`
 
+Removes an address from the deny list.
+Aborts with ENotFrozen if the address is not already in the list.
 
 
 
public fun deny_list_remove<T>(deny_list: &mut deny_list::DenyList, _deny_cap: &mut coin::DenyCap<T>, addr: address, _ctx: &mut tx_context::TxContext)
@@ -986,6 +1046,8 @@
 
 ## Function `deny_list_contains`
 
+Returns true iff the given address is denied for the given coin type. It will
+return false if given a non-coin type.
 
 
 
public fun deny_list_contains<T>(freezer: &deny_list::DenyList, addr: address): bool
@@ -1022,6 +1084,7 @@
 
 ## Function `mint_and_transfer`
 
+Mint amount of Coin and send it to recipient. Invokes mint().
 
 
 
public entry fun mint_and_transfer<T>(c: &mut coin::TreasuryCap<T>, amount: u64, recipient: address, ctx: &mut tx_context::TxContext)
@@ -1048,6 +1111,7 @@
 
 ## Function `update_name`
 
+Update name of the coin in CoinMetadata
 
 
 
public entry fun update_name<T>(_treasury: &coin::TreasuryCap<T>, metadata: &mut coin::CoinMetadata<T>, name: string::String)
@@ -1074,6 +1138,7 @@
 
 ## Function `update_symbol`
 
+Update the symbol of the coin in CoinMetadata
 
 
 
public entry fun update_symbol<T>(_treasury: &coin::TreasuryCap<T>, metadata: &mut coin::CoinMetadata<T>, symbol: ascii::String)
@@ -1100,6 +1165,7 @@
 
 ## Function `update_description`
 
+Update the description of the coin in CoinMetadata
 
 
 
public entry fun update_description<T>(_treasury: &coin::TreasuryCap<T>, metadata: &mut coin::CoinMetadata<T>, description: string::String)
@@ -1126,6 +1192,7 @@
 
 ## Function `update_icon_url`
 
+Update the url of the coin in CoinMetadata
 
 
 
public entry fun update_icon_url<T>(_treasury: &coin::TreasuryCap<T>, metadata: &mut coin::CoinMetadata<T>, url: ascii::String)
diff --git a/crates/sui-framework/docs/sui-system/dependencies/sui-framework/deny_list.md b/crates/sui-framework/docs/sui-system/dependencies/sui-framework/deny_list.md
index 9d865ffa43bf1..103528188b67a 100644
--- a/crates/sui-framework/docs/sui-system/dependencies/sui-framework/deny_list.md
+++ b/crates/sui-framework/docs/sui-system/dependencies/sui-framework/deny_list.md
@@ -3,6 +3,9 @@
 
 # Module `0x2::deny_list`
 
+Defines the DenyList type. The DenyList shared object is used to restrict access to
+instances of certain core types from being used as inputs by specified addresses in the deny
+list.
 
 
 -  [Resource `DenyList`](#0x2_deny_list_DenyList)
@@ -32,6 +35,7 @@
 
 ## Resource `DenyList`
 
+A shared object that stores the addresses that are blocked for a given core type.
 
 
 
struct DenyList has key
@@ -54,7 +58,7 @@
 lists: bag::Bag
 
 
- + The individual deny lists.
@@ -65,6 +69,7 @@ ## Resource `PerTypeList` +Stores the addresses that are denied for a given core type.
struct PerTypeList has store, key
@@ -87,13 +92,16 @@
 denied_count: table::Table<address, u64>
 
 
- + Number of object types that have been banned for a given address. + Used to quickly skip checks for most addresses.
denied_addresses: table::Table<vector<u8>, vec_set::VecSet<address>>
- + Set of addresses that are banned for a given type. + For example with sui::coin::Coin: If addresses A and B are banned from using + "0...0123::my_coin::MY_COIN", this will be "0...0123::my_coin::MY_COIN" -> {A, B}.
@@ -107,6 +115,7 @@ +Trying to create a deny list object when not called by the system address.
const ENotSystemAddress: u64 = 0;
@@ -116,6 +125,7 @@
 
 
 
+The index into the deny list vector for the sui::coin::Coin type.
 
 
 
const COIN_INDEX: u64 = 0;
@@ -125,6 +135,7 @@
 
 
 
+The specified address to be removed is not already in the deny list.
 
 
 
const ENotDenied: u64 = 1;
@@ -136,6 +147,10 @@
 
 ## Function `add`
 
+Adds the given address to the deny list of the specified type, preventing it
+from interacting with instances of that type as an input to a transaction. For coins,
+the type specified is the type of the coin, not the coin type itself. For example,
+"00...0123::my_coin::MY_COIN" would be the type, not "00...02::coin::Coin".
 
 
 
public(friend) fun add(deny_list: &mut deny_list::DenyList, per_type_index: u64, type: vector<u8>, addr: address)
@@ -205,6 +220,8 @@
 
 ## Function `remove`
 
+Removes a previously denied address from the list.
+Aborts with ENotDenied if the address is not on the list.
 
 
 
public(friend) fun remove(deny_list: &mut deny_list::DenyList, per_type_index: u64, type: vector<u8>, addr: address)
@@ -269,6 +286,7 @@
 
 ## Function `contains`
 
+Returns true iff the given address is denied for the given type.
 
 
 
public(friend) fun contains(deny_list: &deny_list::DenyList, per_type_index: u64, type: vector<u8>, addr: address): bool
@@ -334,6 +352,8 @@
 
 ## Function `create`
 
+Creation of the deny list object is restricted to the system address
+via a system transaction.
 
 
 
fun create(ctx: &mut tx_context::TxContext)
diff --git a/crates/sui-framework/docs/sui-system/dependencies/sui-framework/dynamic_field.md b/crates/sui-framework/docs/sui-system/dependencies/sui-framework/dynamic_field.md
index 680eafed3e86a..eae2689bdda5f 100644
--- a/crates/sui-framework/docs/sui-system/dependencies/sui-framework/dynamic_field.md
+++ b/crates/sui-framework/docs/sui-system/dependencies/sui-framework/dynamic_field.md
@@ -3,6 +3,12 @@
 
 # Module `0x2::dynamic_field`
 
+In addition to the fields declared in its type definition, a Sui object can have dynamic fields
+that can be added after the object has been constructed. Unlike ordinary field names
+(which are always statically declared identifiers) a dynamic field name can be any value with
+the copy, drop, and store abilities, e.g. an integer, a boolean, or a string.
+This gives Sui programmers the flexibility to extend objects on-the-fly, and it also serves as a
+building block for core collection types
 
 
 -  [Resource `Field`](#0x2_dynamic_field_Field)
@@ -35,6 +41,7 @@
 
 ## Resource `Field`
 
+Internal object used for storing the field and value
 
 
 
struct Field<Name: copy, drop, store, Value: store> has key
@@ -51,19 +58,20 @@
 id: object::UID
 
 
- + Determined by the hash of the object ID, the field name value and it's type, + i.e. hash(parent.id || name || Name)
name: Name
- + The value for the name of this field
value: Value
- + The value bound to this field
@@ -77,6 +85,7 @@ +Failed to serialize the field's name
const EBCSSerializationFailure: u64 = 3;
@@ -86,6 +95,7 @@
 
 
 
+The object added as a dynamic field was previously a shared object
 
 
 
const ESharedObjectOperationNotSupported: u64 = 4;
@@ -95,6 +105,7 @@
 
 
 
+The object already has a dynamic field with this name (with the value and type specified)
 
 
 
const EFieldAlreadyExists: u64 = 0;
@@ -104,6 +115,8 @@
 
 
 
+Cannot load dynamic field.
+The object does not have a dynamic field with this name (with the value and type specified)
 
 
 
const EFieldDoesNotExist: u64 = 1;
@@ -113,6 +126,7 @@
 
 
 
+The object has a field with that name, but the value type does not match
 
 
 
const EFieldTypeMismatch: u64 = 2;
@@ -124,6 +138,8 @@
 
 ## Function `add`
 
+Adds a dynamic field to the object object: &mut UID at field specified by name: Name.
+Aborts with EFieldAlreadyExists if the object already has that field with that name.
 
 
 
public fun add<Name: copy, drop, store, Value: store>(object: &mut object::UID, name: Name, value: Value)
@@ -161,6 +177,10 @@
 
 ## Function `borrow`
 
+Immutably borrows the objects dynamic field with the name specified by name: Name.
+Aborts with EFieldDoesNotExist if the object does not have a field with that name.
+Aborts with EFieldTypeMismatch if the field exists, but the value does not have the specified
+type.
 
 
 
public fun borrow<Name: copy, drop, store, Value: store>(object: &object::UID, name: Name): &Value
@@ -191,6 +211,10 @@
 
 ## Function `borrow_mut`
 
+Mutably borrows the objects dynamic field with the name specified by name: Name.
+Aborts with EFieldDoesNotExist if the object does not have a field with that name.
+Aborts with EFieldTypeMismatch if the field exists, but the value does not have the specified
+type.
 
 
 
public fun borrow_mut<Name: copy, drop, store, Value: store>(object: &mut object::UID, name: Name): &mut Value
@@ -221,6 +245,11 @@
 
 ## Function `remove`
 
+Removes the objects dynamic field with the name specified by name: Name and returns the
+bound value.
+Aborts with EFieldDoesNotExist if the object does not have a field with that name.
+Aborts with EFieldTypeMismatch if the field exists, but the value does not have the specified
+type.
 
 
 
public fun remove<Name: copy, drop, store, Value: store>(object: &mut object::UID, name: Name): Value
@@ -252,6 +281,8 @@
 
 ## Function `exists_`
 
+Returns true if and only if the object has a dynamic field with the name specified by
+name: Name but without specifying the Value type
 
 
 
public fun exists_<Name: copy, drop, store>(object: &object::UID, name: Name): bool
@@ -281,6 +312,7 @@
 
 ## Function `remove_if_exists`
 
+Removes the dynamic field if it exists. Returns the some(Value) if it exists or none otherwise.
 
 
 
public fun remove_if_exists<Name: copy, drop, store, Value: store>(object: &mut object::UID, name: Name): option::Option<Value>
@@ -312,6 +344,8 @@
 
 ## Function `exists_with_type`
 
+Returns true if and only if the object has a dynamic field with the name specified by
+name: Name with an assigned value of type Value.
 
 
 
public fun exists_with_type<Name: copy, drop, store, Value: store>(object: &object::UID, name: Name): bool
@@ -401,6 +435,7 @@
 
 ## Function `hash_type_and_key`
 
+May abort with EBCSSerializationFailure.
 
 
 
public(friend) fun hash_type_and_key<K: copy, drop, store>(parent: address, k: K): address
@@ -445,6 +480,10 @@
 
 ## Function `borrow_child_object`
 
+throws EFieldDoesNotExist if a child does not exist with that ID
+or throws EFieldTypeMismatch if the type does not match,
+and may also abort with EBCSSerializationFailure
+we need two versions to return a reference or a mutable reference
 
 
 
public(friend) fun borrow_child_object<Child: key>(object: &object::UID, id: address): &Child
@@ -489,6 +528,9 @@
 
 ## Function `remove_child_object`
 
+throws EFieldDoesNotExist if a child does not exist with that ID
+or throws EFieldTypeMismatch if the type does not match,
+and may also abort with EBCSSerializationFailure.
 
 
 
public(friend) fun remove_child_object<Child: key>(parent: address, id: address): Child
diff --git a/crates/sui-framework/docs/sui-system/dependencies/sui-framework/dynamic_object_field.md b/crates/sui-framework/docs/sui-system/dependencies/sui-framework/dynamic_object_field.md
index 777939654d527..390505e9410a3 100644
--- a/crates/sui-framework/docs/sui-system/dependencies/sui-framework/dynamic_object_field.md
+++ b/crates/sui-framework/docs/sui-system/dependencies/sui-framework/dynamic_object_field.md
@@ -3,6 +3,10 @@
 
 # Module `0x2::dynamic_object_field`
 
+Similar to sui::dynamic_field, this module allows for the access of dynamic fields. But
+unlike, sui::dynamic_field the values bound to these dynamic fields _must_ be objects
+themselves. This allows for the objects to still exist within in storage, which may be important
+for external tools. The difference is otherwise not observable from within Move.
 
 
 -  [Struct `Wrapper`](#0x2_dynamic_object_field_Wrapper)
@@ -53,6 +57,8 @@
 
 ## Function `add`
 
+Adds a dynamic object field to the object object: &mut UID at field specified by name: Name.
+Aborts with EFieldAlreadyExists if the object already has that field with that name.
 
 
 
public fun add<Name: copy, drop, store, Value: store, key>(object: &mut object::UID, name: Name, value: Value)
@@ -86,6 +92,10 @@
 
 ## Function `borrow`
 
+Immutably borrows the objects dynamic object field with the name specified by name: Name.
+Aborts with EFieldDoesNotExist if the object does not have a field with that name.
+Aborts with EFieldTypeMismatch if the field exists, but the value object does not have the
+specified type.
 
 
 
public fun borrow<Name: copy, drop, store, Value: store, key>(object: &object::UID, name: Name): &Value
@@ -115,6 +125,10 @@
 
 ## Function `borrow_mut`
 
+Mutably borrows the objects dynamic object field with the name specified by name: Name.
+Aborts with EFieldDoesNotExist if the object does not have a field with that name.
+Aborts with EFieldTypeMismatch if the field exists, but the value object does not have the
+specified type.
 
 
 
public fun borrow_mut<Name: copy, drop, store, Value: store, key>(object: &mut object::UID, name: Name): &mut Value
@@ -144,6 +158,11 @@
 
 ## Function `remove`
 
+Removes the objects dynamic object field with the name specified by name: Name and returns
+the bound object.
+Aborts with EFieldDoesNotExist if the object does not have a field with that name.
+Aborts with EFieldTypeMismatch if the field exists, but the value object does not have the
+specified type.
 
 
 
public fun remove<Name: copy, drop, store, Value: store, key>(object: &mut object::UID, name: Name): Value
@@ -175,6 +194,8 @@
 
 ## Function `exists_`
 
+Returns true if and only if the object has a dynamic object field with the name specified by
+name: Name.
 
 
 
public fun exists_<Name: copy, drop, store>(object: &object::UID, name: Name): bool
@@ -203,6 +224,8 @@
 
 ## Function `exists_with_type`
 
+Returns true if and only if the object has a dynamic field with the name specified by
+name: Name with an assigned value of type Value.
 
 
 
public fun exists_with_type<Name: copy, drop, store, Value: store, key>(object: &object::UID, name: Name): bool
@@ -233,6 +256,8 @@
 
 ## Function `id`
 
+Returns the ID of the object associated with the dynamic object field
+Returns none otherwise
 
 
 
public fun id<Name: copy, drop, store>(object: &object::UID, name: Name): option::Option<object::ID>
diff --git a/crates/sui-framework/docs/sui-system/dependencies/sui-framework/event.md b/crates/sui-framework/docs/sui-system/dependencies/sui-framework/event.md
index 6feab90ed56ff..16d14740a6143 100644
--- a/crates/sui-framework/docs/sui-system/dependencies/sui-framework/event.md
+++ b/crates/sui-framework/docs/sui-system/dependencies/sui-framework/event.md
@@ -3,6 +3,31 @@
 
 # Module `0x2::event`
 
+Events module. Defines the sui::event::emit function which
+creates and sends a custom MoveEvent as a part of the effects
+certificate of the transaction.
+
+Every MoveEvent has the following properties:
+- sender
+- type signature (T)
+- event data (the value of T)
+- timestamp (local to a node)
+- transaction digest
+
+Example:
+```
+module my::marketplace {
+use sui::event;
+/* ... */
+struct ItemPurchased has copy, drop {
+item_id: ID, buyer: address
+}
+entry fun buy(/* .... */) {
+/* ... */
+event::emit(ItemPurchased { item_id: ..., buyer: .... })
+}
+}
+```
 
 
 -  [Function `emit`](#0x2_event_emit)
@@ -16,6 +41,13 @@
 
 ## Function `emit`
 
+Emit a custom Move event, sending the data offchain.
+
+Used for creating custom indexes and tracking onchain
+activity in a way that suits a specific application the most.
+
+The type T is the main way to index the event, and can contain
+phantom parameters, eg emit(MyEvent<phantom T>).
 
 
 
public fun emit<T: copy, drop>(event: T)
diff --git a/crates/sui-framework/docs/sui-system/dependencies/sui-framework/hex.md b/crates/sui-framework/docs/sui-system/dependencies/sui-framework/hex.md
index 202d3300b4619..274365a8ccba7 100644
--- a/crates/sui-framework/docs/sui-system/dependencies/sui-framework/hex.md
+++ b/crates/sui-framework/docs/sui-system/dependencies/sui-framework/hex.md
@@ -3,6 +3,7 @@
 
 # Module `0x2::hex`
 
+HEX (Base16) encoding utility.
 
 
 -  [Constants](#@Constants_0)
@@ -41,6 +42,7 @@
 
 
 
+Vector of Base16 values from 00 to FF
 
 
 
const HEX: vector<vector<u8>> = [ByteArray([48, 48]), ByteArray([48, 49]), ByteArray([48, 50]), ByteArray([48, 51]), ByteArray([48, 52]), ByteArray([48, 53]), ByteArray([48, 54]), ByteArray([48, 55]), ByteArray([48, 56]), ByteArray([48, 57]), ByteArray([48, 97]), ByteArray([48, 98]), ByteArray([48, 99]), ByteArray([48, 100]), ByteArray([48, 101]), ByteArray([48, 102]), ByteArray([49, 48]), ByteArray([49, 49]), ByteArray([49, 50]), ByteArray([49, 51]), ByteArray([49, 52]), ByteArray([49, 53]), ByteArray([49, 54]), ByteArray([49, 55]), ByteArray([49, 56]), ByteArray([49, 57]), ByteArray([49, 97]), ByteArray([49, 98]), ByteArray([49, 99]), ByteArray([49, 100]), ByteArray([49, 101]), ByteArray([49, 102]), ByteArray([50, 48]), ByteArray([50, 49]), ByteArray([50, 50]), ByteArray([50, 51]), ByteArray([50, 52]), ByteArray([50, 53]), ByteArray([50, 54]), ByteArray([50, 55]), ByteArray([50, 56]), ByteArray([50, 57]), ByteArray([50, 97]), ByteArray([50, 98]), ByteArray([50, 99]), ByteArray([50, 100]), ByteArray([50, 101]), ByteArray([50, 102]), ByteArray([51, 48]), ByteArray([51, 49]), ByteArray([51, 50]), ByteArray([51, 51]), ByteArray([51, 52]), ByteArray([51, 53]), ByteArray([51, 54]), ByteArray([51, 55]), ByteArray([51, 56]), ByteArray([51, 57]), ByteArray([51, 97]), ByteArray([51, 98]), ByteArray([51, 99]), ByteArray([51, 100]), ByteArray([51, 101]), ByteArray([51, 102]), ByteArray([52, 48]), ByteArray([52, 49]), ByteArray([52, 50]), ByteArray([52, 51]), ByteArray([52, 52]), ByteArray([52, 53]), ByteArray([52, 54]), ByteArray([52, 55]), ByteArray([52, 56]), ByteArray([52, 57]), ByteArray([52, 97]), ByteArray([52, 98]), ByteArray([52, 99]), ByteArray([52, 100]), ByteArray([52, 101]), ByteArray([52, 102]), ByteArray([53, 48]), ByteArray([53, 49]), ByteArray([53, 50]), ByteArray([53, 51]), ByteArray([53, 52]), ByteArray([53, 53]), ByteArray([53, 54]), ByteArray([53, 55]), ByteArray([53, 56]), ByteArray([53, 57]), ByteArray([53, 97]), ByteArray([53, 98]), ByteArray([53, 99]), ByteArray([53, 100]), ByteArray([53, 101]), ByteArray([53, 102]), ByteArray([54, 48]), ByteArray([54, 49]), ByteArray([54, 50]), ByteArray([54, 51]), ByteArray([54, 52]), ByteArray([54, 53]), ByteArray([54, 54]), ByteArray([54, 55]), ByteArray([54, 56]), ByteArray([54, 57]), ByteArray([54, 97]), ByteArray([54, 98]), ByteArray([54, 99]), ByteArray([54, 100]), ByteArray([54, 101]), ByteArray([54, 102]), ByteArray([55, 48]), ByteArray([55, 49]), ByteArray([55, 50]), ByteArray([55, 51]), ByteArray([55, 52]), ByteArray([55, 53]), ByteArray([55, 54]), ByteArray([55, 55]), ByteArray([55, 56]), ByteArray([55, 57]), ByteArray([55, 97]), ByteArray([55, 98]), ByteArray([55, 99]), ByteArray([55, 100]), ByteArray([55, 101]), ByteArray([55, 102]), ByteArray([56, 48]), ByteArray([56, 49]), ByteArray([56, 50]), ByteArray([56, 51]), ByteArray([56, 52]), ByteArray([56, 53]), ByteArray([56, 54]), ByteArray([56, 55]), ByteArray([56, 56]), ByteArray([56, 57]), ByteArray([56, 97]), ByteArray([56, 98]), ByteArray([56, 99]), ByteArray([56, 100]), ByteArray([56, 101]), ByteArray([56, 102]), ByteArray([57, 48]), ByteArray([57, 49]), ByteArray([57, 50]), ByteArray([57, 51]), ByteArray([57, 52]), ByteArray([57, 53]), ByteArray([57, 54]), ByteArray([57, 55]), ByteArray([57, 56]), ByteArray([57, 57]), ByteArray([57, 97]), ByteArray([57, 98]), ByteArray([57, 99]), ByteArray([57, 100]), ByteArray([57, 101]), ByteArray([57, 102]), ByteArray([97, 48]), ByteArray([97, 49]), ByteArray([97, 50]), ByteArray([97, 51]), ByteArray([97, 52]), ByteArray([97, 53]), ByteArray([97, 54]), ByteArray([97, 55]), ByteArray([97, 56]), ByteArray([97, 57]), ByteArray([97, 97]), ByteArray([97, 98]), ByteArray([97, 99]), ByteArray([97, 100]), ByteArray([97, 101]), ByteArray([97, 102]), ByteArray([98, 48]), ByteArray([98, 49]), ByteArray([98, 50]), ByteArray([98, 51]), ByteArray([98, 52]), ByteArray([98, 53]), ByteArray([98, 54]), ByteArray([98, 55]), ByteArray([98, 56]), ByteArray([98, 57]), ByteArray([98, 97]), ByteArray([98, 98]), ByteArray([98, 99]), ByteArray([98, 100]), ByteArray([98, 101]), ByteArray([98, 102]), ByteArray([99, 48]), ByteArray([99, 49]), ByteArray([99, 50]), ByteArray([99, 51]), ByteArray([99, 52]), ByteArray([99, 53]), ByteArray([99, 54]), ByteArray([99, 55]), ByteArray([99, 56]), ByteArray([99, 57]), ByteArray([99, 97]), ByteArray([99, 98]), ByteArray([99, 99]), ByteArray([99, 100]), ByteArray([99, 101]), ByteArray([99, 102]), ByteArray([100, 48]), ByteArray([100, 49]), ByteArray([100, 50]), ByteArray([100, 51]), ByteArray([100, 52]), ByteArray([100, 53]), ByteArray([100, 54]), ByteArray([100, 55]), ByteArray([100, 56]), ByteArray([100, 57]), ByteArray([100, 97]), ByteArray([100, 98]), ByteArray([100, 99]), ByteArray([100, 100]), ByteArray([100, 101]), ByteArray([100, 102]), ByteArray([101, 48]), ByteArray([101, 49]), ByteArray([101, 50]), ByteArray([101, 51]), ByteArray([101, 52]), ByteArray([101, 53]), ByteArray([101, 54]), ByteArray([101, 55]), ByteArray([101, 56]), ByteArray([101, 57]), ByteArray([101, 97]), ByteArray([101, 98]), ByteArray([101, 99]), ByteArray([101, 100]), ByteArray([101, 101]), ByteArray([101, 102]), ByteArray([102, 48]), ByteArray([102, 49]), ByteArray([102, 50]), ByteArray([102, 51]), ByteArray([102, 52]), ByteArray([102, 53]), ByteArray([102, 54]), ByteArray([102, 55]), ByteArray([102, 56]), ByteArray([102, 57]), ByteArray([102, 97]), ByteArray([102, 98]), ByteArray([102, 99]), ByteArray([102, 100]), ByteArray([102, 101]), ByteArray([102, 102])];
@@ -52,6 +54,7 @@
 
 ## Function `encode`
 
+Encode bytes in lowercase hex
 
 
 
public fun encode(bytes: vector<u8>): vector<u8>
@@ -85,6 +88,12 @@
 
 ## Function `decode`
 
+Decode hex into bytes
+Takes a hex string (no 0x prefix) (e.g. b"0f3a")
+Returns vector of bytes that represents the hex string (e.g. x"0f3a")
+Hex string can be case insensitive (e.g. b"0F3A" and b"0f3a" both return x"0f3a")
+Aborts if the hex string does not have an even number of characters (as each hex character is 2 characters long)
+Aborts if the hex string contains non-valid hex characters (valid characters are 0 - 9, a - f, A - F)
 
 
 
public fun decode(hex: vector<u8>): vector<u8>
diff --git a/crates/sui-framework/docs/sui-system/dependencies/sui-framework/math.md b/crates/sui-framework/docs/sui-system/dependencies/sui-framework/math.md
index 4500b3c1e344e..a7885e6031b34 100644
--- a/crates/sui-framework/docs/sui-system/dependencies/sui-framework/math.md
+++ b/crates/sui-framework/docs/sui-system/dependencies/sui-framework/math.md
@@ -3,6 +3,7 @@
 
 # Module `0x2::math`
 
+Basic math for nicer programmability
 
 
 -  [Function `max`](#0x2_math_max)
@@ -22,6 +23,7 @@
 
 ## Function `max`
 
+Return the larger of x and y
 
 
 
public fun max(x: u64, y: u64): u64
@@ -50,6 +52,7 @@
 
 ## Function `min`
 
+Return the smaller of x and y
 
 
 
public fun min(x: u64, y: u64): u64
@@ -78,6 +81,7 @@
 
 ## Function `diff`
 
+Return the absolute value of x - y
 
 
 
public fun diff(x: u64, y: u64): u64
@@ -106,6 +110,7 @@
 
 ## Function `pow`
 
+Return the value of a base raised to a power
 
 
 
public fun pow(base: u64, exponent: u8): u64
@@ -141,6 +146,31 @@
 
 ## Function `sqrt`
 
+Get a nearest lower integer Square Root for x. Given that this
+function can only operate with integers, it is impossible
+to get perfect (or precise) integer square root for some numbers.
+
+Example:
+```
+math::sqrt(9) => 3
+math::sqrt(8) => 2 // the nearest lower square root is 4;
+```
+
+In integer math, one of the possible ways to get results with more
+precision is to use higher values or temporarily multiply the
+value by some bigger number. Ideally if this is a square of 10 or 100.
+
+Example:
+```
+math::sqrt(8) => 2;
+math::sqrt(8 * 10000) => 282;
+// now we can use this value as if it was 2.82;
+// but to get the actual result, this value needs
+// to be divided by 100 (because sqrt(10000)).
+
+
+math::sqrt(8 * 1000000) => 2828; // same as above, 2828 / 1000 (2.828)
+```
 
 
 
public fun sqrt(x: u64): u64
@@ -179,6 +209,31 @@
 
 ## Function `sqrt_u128`
 
+Similar to math::sqrt, but for u128 numbers. Get a nearest lower integer Square Root for x. Given that this
+function can only operate with integers, it is impossible
+to get perfect (or precise) integer square root for some numbers.
+
+Example:
+```
+math::sqrt_u128(9) => 3
+math::sqrt_u128(8) => 2 // the nearest lower square root is 4;
+```
+
+In integer math, one of the possible ways to get results with more
+precision is to use higher values or temporarily multiply the
+value by some bigger number. Ideally if this is a square of 10 or 100.
+
+Example:
+```
+math::sqrt_u128(8) => 2;
+math::sqrt_u128(8 * 10000) => 282;
+// now we can use this value as if it was 2.82;
+// but to get the actual result, this value needs
+// to be divided by 100 (because sqrt_u128(10000)).
+
+
+math::sqrt_u128(8 * 1000000) => 2828; // same as above, 2828 / 1000 (2.828)
+```
 
 
 
public fun sqrt_u128(x: u128): u128
@@ -217,6 +272,7 @@
 
 ## Function `divide_and_round_up`
 
+Calculate x / y, but round up the result.
 
 
 
public fun divide_and_round_up(x: u64, y: u64): u64
diff --git a/crates/sui-framework/docs/sui-system/dependencies/sui-framework/object.md b/crates/sui-framework/docs/sui-system/dependencies/sui-framework/object.md
index 2343ca0844d6c..0052be136f7a5 100644
--- a/crates/sui-framework/docs/sui-system/dependencies/sui-framework/object.md
+++ b/crates/sui-framework/docs/sui-system/dependencies/sui-framework/object.md
@@ -3,6 +3,7 @@
 
 # Module `0x2::object`
 
+Sui object identifiers
 
 
 -  [Struct `ID`](#0x2_object_ID)
@@ -44,6 +45,12 @@
 
 ## Struct `ID`
 
+An object ID. This is used to reference Sui Objects.
+This is *not* guaranteed to be globally unique--anyone can create an ID from a UID or
+from an object, and ID's can be freely copied and dropped.
+Here, the values are not globally unique because there can be multiple values of type ID
+with the same underlying bytes. For example, object::id(&obj) can be called as many times
+as you want for a given obj, and each ID value will be identical.
 
 
 
struct ID has copy, drop, store
@@ -71,6 +78,12 @@
 
 ## Struct `UID`
 
+Globally unique IDs that define an object's ID in storage. Any Sui Object, that is a struct
+with the key ability, must have id: UID as its first field.
+These are globally unique in the sense that no two values of type UID are ever equal, in
+other words for any two values id1: UID and id2: UID, id1 != id2.
+This is a privileged type that can only be derived from a TxContext.
+UID doesn't have the drop ability, so deleting a UID requires a call to delete.
 
 
 
struct UID has store
@@ -101,6 +114,7 @@
 
 
 
+Sender is not @0x0 the system address.
 
 
 
const ENotSystemAddress: u64 = 0;
@@ -110,6 +124,7 @@
 
 
 
+The hardcoded ID for the singleton AuthenticatorState Object.
 
 
 
const SUI_AUTHENTICATOR_STATE_ID: address = 7;
@@ -119,6 +134,7 @@
 
 
 
+The hardcoded ID for the singleton Clock Object.
 
 
 
const SUI_CLOCK_OBJECT_ID: address = 6;
@@ -128,6 +144,7 @@
 
 
 
+The hardcoded ID for the singleton DenyList.
 
 
 
const SUI_DENY_LIST_OBJECT_ID: address = 403;
@@ -137,6 +154,7 @@
 
 
 
+The hardcoded ID for the singleton Random Object.
 
 
 
const SUI_RANDOM_ID: address = 8;
@@ -146,6 +164,7 @@
 
 
 
+The hardcoded ID for the singleton Sui System State Object.
 
 
 
const SUI_SYSTEM_STATE_OBJECT_ID: address = 5;
@@ -157,6 +176,7 @@
 
 ## Function `id_to_bytes`
 
+Get the raw bytes of a ID
 
 
 
public fun id_to_bytes(id: &object::ID): vector<u8>
@@ -181,6 +201,7 @@
 
 ## Function `id_to_address`
 
+Get the inner bytes of id as an address.
 
 
 
public fun id_to_address(id: &object::ID): address
@@ -205,6 +226,7 @@
 
 ## Function `id_from_bytes`
 
+Make an ID from raw bytes.
 
 
 
public fun id_from_bytes(bytes: vector<u8>): object::ID
@@ -229,6 +251,7 @@
 
 ## Function `id_from_address`
 
+Make an ID from an address.
 
 
 
public fun id_from_address(bytes: address): object::ID
@@ -253,6 +276,8 @@
 
 ## Function `sui_system_state`
 
+Create the UID for the singleton SuiSystemState object.
+This should only be called once from sui_system.
 
 
 
fun sui_system_state(ctx: &tx_context::TxContext): object::UID
@@ -280,6 +305,8 @@
 
 ## Function `clock`
 
+Create the UID for the singleton Clock object.
+This should only be called once from clock.
 
 
 
public(friend) fun clock(): object::UID
@@ -306,6 +333,8 @@
 
 ## Function `authenticator_state`
 
+Create the UID for the singleton AuthenticatorState object.
+This should only be called once from authenticator_state.
 
 
 
public(friend) fun authenticator_state(): object::UID
@@ -332,6 +361,8 @@
 
 ## Function `randomness_state`
 
+Create the UID for the singleton Random object.
+This should only be called once from random.
 
 
 
public(friend) fun randomness_state(): object::UID
@@ -358,6 +389,8 @@
 
 ## Function `sui_deny_list_object_id`
 
+Create the UID for the singleton DenyList object.
+This should only be called once from deny_list.
 
 
 
public(friend) fun sui_deny_list_object_id(): object::UID
@@ -384,6 +417,7 @@
 
 ## Function `uid_as_inner`
 
+Get the inner ID of uid
 
 
 
public fun uid_as_inner(uid: &object::UID): &object::ID
@@ -408,6 +442,7 @@
 
 ## Function `uid_to_inner`
 
+Get the raw bytes of a uid's inner ID
 
 
 
public fun uid_to_inner(uid: &object::UID): object::ID
@@ -432,6 +467,7 @@
 
 ## Function `uid_to_bytes`
 
+Get the raw bytes of a UID
 
 
 
public fun uid_to_bytes(uid: &object::UID): vector<u8>
@@ -456,6 +492,7 @@
 
 ## Function `uid_to_address`
 
+Get the inner bytes of id as an address.
 
 
 
public fun uid_to_address(uid: &object::UID): address
@@ -480,6 +517,8 @@
 
 ## Function `new`
 
+Create a new object. Returns the UID that must be stored in a Sui object.
+This is the only way to create UIDs.
 
 
 
public fun new(ctx: &mut tx_context::TxContext): object::UID
@@ -506,6 +545,7 @@
 
 ## Function `delete`
 
+Delete the object and it's UID. This is the only way to eliminate a UID.
 
 
 
public fun delete(id: object::UID)
@@ -531,6 +571,7 @@
 
 ## Function `id`
 
+Get the underlying ID of obj
 
 
 
public fun id<T: key>(obj: &T): object::ID
@@ -555,6 +596,7 @@
 
 ## Function `borrow_id`
 
+Borrow the underlying ID of obj
 
 
 
public fun borrow_id<T: key>(obj: &T): &object::ID
@@ -579,6 +621,7 @@
 
 ## Function `id_bytes`
 
+Get the raw bytes for the underlying ID of obj
 
 
 
public fun id_bytes<T: key>(obj: &T): vector<u8>
@@ -603,6 +646,7 @@
 
 ## Function `id_address`
 
+Get the inner bytes for the underlying ID of obj
 
 
 
public fun id_address<T: key>(obj: &T): address
@@ -627,6 +671,11 @@
 
 ## Function `borrow_uid`
 
+Get the UID for obj.
+Safe because Sui has an extra bytecode verifier pass that forces every struct with
+the key ability to have a distinguished UID field.
+Cannot be made public as the access to UID for a given object must be privileged, and
+restrictable in the object's module.
 
 
 
fun borrow_uid<T: key>(obj: &T): &object::UID
@@ -649,6 +698,7 @@
 
 ## Function `new_uid_from_hash`
 
+Generate a new UID specifically used for creating a UID from a hash
 
 
 
public(friend) fun new_uid_from_hash(bytes: address): object::UID
diff --git a/crates/sui-framework/docs/sui-system/dependencies/sui-framework/pay.md b/crates/sui-framework/docs/sui-system/dependencies/sui-framework/pay.md
index 84f1939322f2e..68ed80967178a 100644
--- a/crates/sui-framework/docs/sui-system/dependencies/sui-framework/pay.md
+++ b/crates/sui-framework/docs/sui-system/dependencies/sui-framework/pay.md
@@ -3,6 +3,7 @@
 
 # Module `0x2::pay`
 
+This module provides handy functionality for wallets and sui::Coin management.
 
 
 -  [Constants](#@Constants_0)
@@ -30,6 +31,7 @@
 
 
 
+For when empty vector is supplied into join function.
 
 
 
const ENoCoins: u64 = 0;
@@ -41,6 +43,7 @@
 
 ## Function `keep`
 
+Transfer c to the sender of the current transaction
 
 
 
public fun keep<T>(c: coin::Coin<T>, ctx: &tx_context::TxContext)
@@ -65,6 +68,8 @@
 
 ## Function `split`
 
+Split coin self to two coins, one with balance split_amount,
+and the remaining balance is left is self.
 
 
 
public entry fun split<T>(self: &mut coin::Coin<T>, split_amount: u64, ctx: &mut tx_context::TxContext)
@@ -91,6 +96,8 @@
 
 ## Function `split_vec`
 
+Split coin self into multiple coins, each with balance specified
+in split_amounts. Remaining balance is left in self.
 
 
 
public entry fun split_vec<T>(self: &mut coin::Coin<T>, split_amounts: vector<u64>, ctx: &mut tx_context::TxContext)
@@ -121,6 +128,8 @@
 
 ## Function `split_and_transfer`
 
+Send amount units of c to recipient
+Aborts with EVALUE if amount is greater than or equal to amount
 
 
 
public entry fun split_and_transfer<T>(c: &mut coin::Coin<T>, amount: u64, recipient: address, ctx: &mut tx_context::TxContext)
@@ -147,6 +156,8 @@
 
 ## Function `divide_and_keep`
 
+Divide coin self into n - 1 coins with equal balances. If the balance is
+not evenly divisible by n, the remainder is left in self.
 
 
 
public entry fun divide_and_keep<T>(self: &mut coin::Coin<T>, n: u64, ctx: &mut tx_context::TxContext)
@@ -179,6 +190,7 @@
 
 ## Function `join`
 
+Join coin into self. Re-exports coin::join function.
 
 
 
public entry fun join<T>(self: &mut coin::Coin<T>, coin: coin::Coin<T>)
@@ -203,6 +215,7 @@
 
 ## Function `join_vec`
 
+Join everything in coins with self
 
 
 
public entry fun join_vec<T>(self: &mut coin::Coin<T>, coins: vector<coin::Coin<T>>)
@@ -234,6 +247,7 @@
 
 ## Function `join_vec_and_transfer`
 
+Join a vector of Coin into a single object and transfer it to receiver.
 
 
 
public entry fun join_vec_and_transfer<T>(coins: vector<coin::Coin<T>>, receiver: address)
diff --git a/crates/sui-framework/docs/sui-system/dependencies/sui-framework/priority_queue.md b/crates/sui-framework/docs/sui-system/dependencies/sui-framework/priority_queue.md
index 60eff50f0b4f4..66c6a5aa89b3b 100644
--- a/crates/sui-framework/docs/sui-system/dependencies/sui-framework/priority_queue.md
+++ b/crates/sui-framework/docs/sui-system/dependencies/sui-framework/priority_queue.md
@@ -3,6 +3,7 @@
 
 # Module `0x2::priority_queue`
 
+Priority queue implemented using a max heap.
 
 
 -  [Struct `PriorityQueue`](#0x2_priority_queue_PriorityQueue)
@@ -27,6 +28,11 @@
 
 ## Struct `PriorityQueue`
 
+Struct representing a priority queue. The entries vector represents a max
+heap structure, where entries[0] is the root, entries[1] and entries[2] are the
+left child and right child of the root, etc. More generally, the children of
+entries[i] are at at i * 2 + 1 and i * 2 + 2. The max heap should have the invariant
+that the parent node's priority is always higher than its child nodes' priorities.
 
 
 
struct PriorityQueue<T: drop> has drop, store
@@ -90,6 +96,7 @@
 
 
 
+For when heap is empty and there's no data to pop.
 
 
 
const EPopFromEmptyHeap: u64 = 0;
@@ -101,6 +108,7 @@
 
 ## Function `new`
 
+Create a new priority queue from the input entry vectors.
 
 
 
public fun new<T: drop>(entries: vector<priority_queue::Entry<T>>): priority_queue::PriorityQueue<T>
@@ -132,6 +140,7 @@
 
 ## Function `pop_max`
 
+Pop the entry with the highest priority value.
 
 
 
public fun pop_max<T: drop>(pq: &mut priority_queue::PriorityQueue<T>): (u64, T)
@@ -163,6 +172,7 @@
 
 ## Function `insert`
 
+Insert a new entry into the queue.
 
 
 
public fun insert<T: drop>(pq: &mut priority_queue::PriorityQueue<T>, priority: u64, value: T)
@@ -281,6 +291,11 @@
 
 ## Function `max_heapify_recursive`
 
+Max heapify the subtree whose root is at index i. That means after this function
+finishes, the subtree should have the property that the parent node has higher priority
+than both child nodes.
+This function assumes that all the other nodes in the subtree (nodes other than the root)
+do satisfy the max heap property.
 
 
 
fun max_heapify_recursive<T: drop>(v: &mut vector<priority_queue::Entry<T>>, len: u64, i: u64)
diff --git a/crates/sui-framework/docs/sui-system/dependencies/sui-framework/random.md b/crates/sui-framework/docs/sui-system/dependencies/sui-framework/random.md
index 46fb8b93ea534..02006e7a7d91e 100644
--- a/crates/sui-framework/docs/sui-system/dependencies/sui-framework/random.md
+++ b/crates/sui-framework/docs/sui-system/dependencies/sui-framework/random.md
@@ -27,6 +27,8 @@
 
 ## Resource `Random`
 
+Singleton shared object which stores the global randomness state.
+The actual state is stored in a versioned inner field.
 
 
 
struct Random has key
@@ -146,6 +148,9 @@
 
 ## Function `create`
 
+Create and share the Random object. This function is called exactly once, when
+the Random object is first created.
+Can only be called by genesis or change_epoch transactions.
 
 
 
fun create(ctx: &mut tx_context::TxContext)
@@ -249,6 +254,8 @@
 
 ## Function `update_randomness_state`
 
+Record new randomness. Called when executing the RandomnessStateUpdate system
+transaction.
 
 
 
fun update_randomness_state(self: &mut random::Random, new_round: u64, new_bytes: vector<u8>, ctx: &tx_context::TxContext)
diff --git a/crates/sui-framework/docs/sui-system/dependencies/sui-framework/sui.md b/crates/sui-framework/docs/sui-system/dependencies/sui-framework/sui.md
index e4fc549a40e08..b316ff244d3b1 100644
--- a/crates/sui-framework/docs/sui-system/dependencies/sui-framework/sui.md
+++ b/crates/sui-framework/docs/sui-system/dependencies/sui-framework/sui.md
@@ -3,6 +3,8 @@
 
 # Module `0x2::sui`
 
+Coin is the token used to pay for gas in Sui.
+It has 9 decimals, and the smallest unit (10^-9) is called "mist".
 
 
 -  [Struct `SUI`](#0x2_sui_SUI)
@@ -25,6 +27,7 @@
 
 ## Struct `SUI`
 
+Name of the coin
 
 
 
struct SUI has drop
@@ -55,6 +58,7 @@
 
 
 
+Sender is not @0x0 the system address.
 
 
 
const ENotSystemAddress: u64 = 1;
@@ -73,6 +77,8 @@
 
 
 
+The amount of Mist per Sui token based on the the fact that mist is
+10^-9 of a Sui token
 
 
 
const MIST_PER_SUI: u64 = 1000000000;
@@ -82,6 +88,7 @@
 
 
 
+The total supply of Sui denominated in Mist (10 Billion * 10^9)
 
 
 
const TOTAL_SUPPLY_MIST: u64 = 10000000000000000000;
@@ -91,6 +98,7 @@
 
 
 
+The total supply of Sui denominated in whole Sui tokens (10 Billion)
 
 
 
const TOTAL_SUPPLY_SUI: u64 = 10000000000;
@@ -102,6 +110,8 @@
 
 ## Function `new`
 
+Register the SUI Coin to acquire its Supply.
+This should be called only once during genesis creation.
 
 
 
fun new(ctx: &mut tx_context::TxContext): balance::Balance<sui::SUI>
diff --git a/crates/sui-framework/docs/sui-system/dependencies/sui-framework/table.md b/crates/sui-framework/docs/sui-system/dependencies/sui-framework/table.md
index b9383a24ff555..46d8e6efff72d 100644
--- a/crates/sui-framework/docs/sui-system/dependencies/sui-framework/table.md
+++ b/crates/sui-framework/docs/sui-system/dependencies/sui-framework/table.md
@@ -3,6 +3,21 @@
 
 # Module `0x2::table`
 
+A table is a map-like collection. But unlike a traditional collection, it's keys and values are
+not stored within the Table value, but instead are stored using Sui's object system. The
+Table struct acts only as a handle into the object system to retrieve those keys and values.
+Note that this means that Table values with exactly the same key-value mapping will not be
+equal, with ==, at runtime. For example
+```
+let table1 = table::new();
+let table2 = table::new();
+table::add(&mut table1, 0, false);
+table::add(&mut table1, 1, true);
+table::add(&mut table2, 0, false);
+table::add(&mut table2, 1, true);
+// table1 does not equal table2, despite having the same entries
+assert!(&table1 != &table2, 0);
+```
 
 
 -  [Resource `Table`](#0x2_table_Table)
@@ -46,13 +61,13 @@
 id: object::UID
 
 
- + the ID of this table
size: u64
- + the number of key-value pairs in the table
@@ -77,6 +92,7 @@ ## Function `new` +Creates a new, empty table
public fun new<K: copy, drop, store, V: store>(ctx: &mut tx_context::TxContext): table::Table<K, V>
@@ -104,6 +120,9 @@
 
 ## Function `add`
 
+Adds a key-value pair to the table table: &mut Table<K, V>
+Aborts with sui::dynamic_field::EFieldAlreadyExists if the table already has an entry with
+that key k: K.
 
 
 
public fun add<K: copy, drop, store, V: store>(table: &mut table::Table<K, V>, k: K, v: V)
@@ -129,6 +148,9 @@
 
 ## Function `borrow`
 
+Immutable borrows the value associated with the key in the table table: &Table<K, V>.
+Aborts with sui::dynamic_field::EFieldDoesNotExist if the table does not have an entry with
+that key k: K.
 
 
 
public fun borrow<K: copy, drop, store, V: store>(table: &table::Table<K, V>, k: K): &V
@@ -153,6 +175,9 @@
 
 ## Function `borrow_mut`
 
+Mutably borrows the value associated with the key in the table table: &mut Table<K, V>.
+Aborts with sui::dynamic_field::EFieldDoesNotExist if the table does not have an entry with
+that key k: K.
 
 
 
public fun borrow_mut<K: copy, drop, store, V: store>(table: &mut table::Table<K, V>, k: K): &mut V
@@ -177,6 +202,9 @@
 
 ## Function `remove`
 
+Removes the key-value pair in the table table: &mut Table<K, V> and returns the value.
+Aborts with sui::dynamic_field::EFieldDoesNotExist if the table does not have an entry with
+that key k: K.
 
 
 
public fun remove<K: copy, drop, store, V: store>(table: &mut table::Table<K, V>, k: K): V
@@ -203,6 +231,7 @@
 
 ## Function `contains`
 
+Returns true iff there is a value associated with the key k: K in table table: &Table<K, V>
 
 
 
public fun contains<K: copy, drop, store, V: store>(table: &table::Table<K, V>, k: K): bool
@@ -227,6 +256,7 @@
 
 ## Function `length`
 
+Returns the size of the table, the number of key-value pairs
 
 
 
public fun length<K: copy, drop, store, V: store>(table: &table::Table<K, V>): u64
@@ -251,6 +281,7 @@
 
 ## Function `is_empty`
 
+Returns true iff the table is empty (if length returns 0)
 
 
 
public fun is_empty<K: copy, drop, store, V: store>(table: &table::Table<K, V>): bool
@@ -275,6 +306,8 @@
 
 ## Function `destroy_empty`
 
+Destroys an empty table
+Aborts with ETableNotEmpty if the table still contains values
 
 
 
public fun destroy_empty<K: copy, drop, store, V: store>(table: table::Table<K, V>)
@@ -301,6 +334,8 @@
 
 ## Function `drop`
 
+Drop a possibly non-empty table.
+Usable only if the value type V has the drop ability
 
 
 
public fun drop<K: copy, drop, store, V: drop, store>(table: table::Table<K, V>)
diff --git a/crates/sui-framework/docs/sui-system/dependencies/sui-framework/table_vec.md b/crates/sui-framework/docs/sui-system/dependencies/sui-framework/table_vec.md
index f4d7a568a274c..09626d60ad3cc 100644
--- a/crates/sui-framework/docs/sui-system/dependencies/sui-framework/table_vec.md
+++ b/crates/sui-framework/docs/sui-system/dependencies/sui-framework/table_vec.md
@@ -3,6 +3,7 @@
 
 # Module `0x2::table_vec`
 
+A basic scalable vector library implemented using Table.
 
 
 -  [Struct `TableVec`](#0x2_table_vec_TableVec)
@@ -47,7 +48,7 @@
 contents: table::Table<u64, Element>
 
 
- + The contents of the table vector.
@@ -81,6 +82,7 @@ ## Function `empty` +Create an empty TableVec.
public fun empty<Element: store>(ctx: &mut tx_context::TxContext): table_vec::TableVec<Element>
@@ -107,6 +109,7 @@
 
 ## Function `singleton`
 
+Return a TableVec of size one containing element e.
 
 
 
public fun singleton<Element: store>(e: Element, ctx: &mut tx_context::TxContext): table_vec::TableVec<Element>
@@ -133,6 +136,7 @@
 
 ## Function `length`
 
+Return the length of the TableVec.
 
 
 
public fun length<Element: store>(t: &table_vec::TableVec<Element>): u64
@@ -157,6 +161,7 @@
 
 ## Function `is_empty`
 
+Return if the TableVec is empty or not.
 
 
 
public fun is_empty<Element: store>(t: &table_vec::TableVec<Element>): bool
@@ -181,6 +186,8 @@
 
 ## Function `borrow`
 
+Acquire an immutable reference to the ith element of the TableVec t.
+Aborts if i is out of bounds.
 
 
 
public fun borrow<Element: store>(t: &table_vec::TableVec<Element>, i: u64): &Element
@@ -206,6 +213,7 @@
 
 ## Function `push_back`
 
+Add element e to the end of the TableVec t.
 
 
 
public fun push_back<Element: store>(t: &mut table_vec::TableVec<Element>, e: Element)
@@ -231,6 +239,8 @@
 
 ## Function `borrow_mut`
 
+Return a mutable reference to the ith element in the TableVec t.
+Aborts if i is out of bounds.
 
 
 
public fun borrow_mut<Element: store>(t: &mut table_vec::TableVec<Element>, i: u64): &mut Element
@@ -256,6 +266,8 @@
 
 ## Function `pop_back`
 
+Pop an element from the end of TableVec t.
+Aborts if t is empty.
 
 
 
public fun pop_back<Element: store>(t: &mut table_vec::TableVec<Element>): Element
@@ -282,6 +294,8 @@
 
 ## Function `destroy_empty`
 
+Destroy the TableVec t.
+Aborts if t is not empty.
 
 
 
public fun destroy_empty<Element: store>(t: table_vec::TableVec<Element>)
@@ -308,6 +322,8 @@
 
 ## Function `drop`
 
+Drop a possibly non-empty TableVec t.
+Usable only if the value type Element has the drop ability
 
 
 
public fun drop<Element: drop, store>(t: table_vec::TableVec<Element>)
@@ -333,6 +349,8 @@
 
 ## Function `swap`
 
+Swaps the elements at the ith and jth indices in the TableVec t.
+Aborts if i or j is out of bounds.
 
 
 
public fun swap<Element: store>(t: &mut table_vec::TableVec<Element>, i: u64, j: u64)
@@ -363,6 +381,9 @@
 
 ## Function `swap_remove`
 
+Swap the ith element of the TableVec t with the last element and then pop the TableVec.
+This is O(1), but does not preserve ordering of elements in the TableVec.
+Aborts if i is out of bounds.
 
 
 
public fun swap_remove<Element: store>(t: &mut table_vec::TableVec<Element>, i: u64): Element
diff --git a/crates/sui-framework/docs/sui-system/dependencies/sui-framework/transfer.md b/crates/sui-framework/docs/sui-system/dependencies/sui-framework/transfer.md
index bb96dd56b78b4..d66e0f0b89068 100644
--- a/crates/sui-framework/docs/sui-system/dependencies/sui-framework/transfer.md
+++ b/crates/sui-framework/docs/sui-system/dependencies/sui-framework/transfer.md
@@ -31,6 +31,13 @@
 
 ## Struct `Receiving`
 
+This represents the ability to receive an object of type T.
+This type is ephemeral per-transaction and cannot be stored on-chain.
+This does not represent the obligation to receive the object that it
+references, but simply the ability to receive the object with object ID
+id at version version if you can prove mutable access to the parent
+object during the transaction.
+Internals of this struct are opaque outside this module.
 
 
 
struct Receiving<T: key> has drop
@@ -67,6 +74,7 @@
 
 
 
+Serialization of the object failed.
 
 
 
const EBCSSerializationFailure: u64 = 1;
@@ -76,6 +84,7 @@
 
 
 
+The object being received is not of the expected type.
 
 
 
const EReceivingObjectTypeMismatch: u64 = 2;
@@ -85,6 +94,8 @@
 
 
 
+Shared an object that was previously created. Shared objects must currently
+be constructed in the transaction they are created.
 
 
 
const ESharedNonNewObject: u64 = 0;
@@ -94,6 +105,7 @@
 
 
 
+Shared object operations such as wrapping, freezing, and converting to owned are not allowed.
 
 
 
const ESharedObjectOperationNotSupported: u64 = 4;
@@ -103,6 +115,8 @@
 
 
 
+Represents both the case where the object does not exist and the case where the object is not
+able to be accessed through the parent that is passed-in.
 
 
 
const EUnableToReceiveObject: u64 = 3;
@@ -114,6 +128,13 @@
 
 ## Function `transfer`
 
+Transfer ownership of obj to recipient. obj must have the key attribute,
+which (in turn) ensures that obj has a globally unique ID. Note that if the recipient
+address represents an object ID, the obj sent will be inaccessible after the transfer
+(though they will be retrievable at a future date once new features are added).
+This function has custom rules performed by the Sui Move bytecode verifier that ensures
+that T is an object defined in the module where transfer is invoked. Use
+public_transfer to transfer an object with store outside of its module.
 
 
 
public fun transfer<T: key>(obj: T, recipient: address)
@@ -138,6 +159,11 @@
 
 ## Function `public_transfer`
 
+Transfer ownership of obj to recipient. obj must have the key attribute,
+which (in turn) ensures that obj has a globally unique ID. Note that if the recipient
+address represents an object ID, the obj sent will be inaccessible after the transfer
+(though they will be retrievable at a future date once new features are added).
+The object must have store to be transferred outside of its module.
 
 
 
public fun public_transfer<T: store, key>(obj: T, recipient: address)
@@ -162,6 +188,11 @@
 
 ## Function `freeze_object`
 
+Freeze obj. After freezing obj becomes immutable and can no longer be transferred or
+mutated.
+This function has custom rules performed by the Sui Move bytecode verifier that ensures
+that T is an object defined in the module where freeze_object is invoked. Use
+public_freeze_object to freeze an object with store outside of its module.
 
 
 
public fun freeze_object<T: key>(obj: T)
@@ -186,6 +217,9 @@
 
 ## Function `public_freeze_object`
 
+Freeze obj. After freezing obj becomes immutable and can no longer be transferred or
+mutated.
+The object must have store to be frozen outside of its module.
 
 
 
public fun public_freeze_object<T: store, key>(obj: T)
@@ -210,6 +244,13 @@
 
 ## Function `share_object`
 
+Turn the given object into a mutable shared object that everyone can access and mutate.
+This is irreversible, i.e. once an object is shared, it will stay shared forever.
+Aborts with ESharedNonNewObject of the object being shared was not created in this
+transaction. This restriction may be relaxed in the future.
+This function has custom rules performed by the Sui Move bytecode verifier that ensures
+that T is an object defined in the module where share_object is invoked. Use
+public_share_object to share an object with store outside of its module.
 
 
 
public fun share_object<T: key>(obj: T)
@@ -234,6 +275,11 @@
 
 ## Function `public_share_object`
 
+Turn the given object into a mutable shared object that everyone can access and mutate.
+This is irreversible, i.e. once an object is shared, it will stay shared forever.
+Aborts with ESharedNonNewObject of the object being shared was not created in this
+transaction. This restriction may be relaxed in the future.
+The object must have store to be shared outside of its module.
 
 
 
public fun public_share_object<T: store, key>(obj: T)
@@ -258,6 +304,12 @@
 
 ## Function `receive`
 
+Given mutable (i.e., locked) access to the parent and a Receiving argument
+referencing an object of type T owned by parent use the to_receive
+argument to receive and return the referenced owned object of type T.
+This function has custom rules performed by the Sui Move bytecode verifier that ensures
+that T is an object defined in the module where receive is invoked. Use
+public_receive to receivne an object with store outside of its module.
 
 
 
public fun receive<T: key>(parent: &mut object::UID, to_receive: transfer::Receiving<T>): T
@@ -286,6 +338,10 @@
 
 ## Function `public_receive`
 
+Given mutable (i.e., locked) access to the parent and a Receiving argument
+referencing an object of type T owned by parent use the to_receive
+argument to receive and return the referenced owned object of type T.
+The object must have store to be received outside of its defining module.
 
 
 
public fun public_receive<T: store, key>(parent: &mut object::UID, to_receive: transfer::Receiving<T>): T
@@ -314,6 +370,7 @@
 
 ## Function `receiving_object_id`
 
+Return the object ID that the given Receiving argument references.
 
 
 
public fun receiving_object_id<T: key>(receiving: &transfer::Receiving<T>): object::ID
diff --git a/crates/sui-framework/docs/sui-system/dependencies/sui-framework/tx_context.md b/crates/sui-framework/docs/sui-system/dependencies/sui-framework/tx_context.md
index 979faf5df05a8..95cfb077de6e5 100644
--- a/crates/sui-framework/docs/sui-system/dependencies/sui-framework/tx_context.md
+++ b/crates/sui-framework/docs/sui-system/dependencies/sui-framework/tx_context.md
@@ -23,6 +23,9 @@
 
 ## Struct `TxContext`
 
+Information about the transaction currently being executed.
+This cannot be constructed by a transaction--it is a privileged object created by
+the VM and passed in to the entrypoint of the transaction as &mut TxContext.
 
 
 
struct TxContext has drop
@@ -39,31 +42,32 @@
 sender: address
 
 
- + The address of the user that signed the current transaction
tx_hash: vector<u8>
- + Hash of the current transaction
epoch: u64
- + The current epoch number
epoch_timestamp_ms: u64
- + Timestamp that the epoch started at
ids_created: u64
- + Counter recording the number of fresh id's created while executing + this transaction. Always 0 at the start of a transaction
@@ -74,6 +78,8 @@ ## Function `sender` +Return the address of the user that signed the current +transaction
public fun sender(self: &tx_context::TxContext): address
@@ -98,6 +104,8 @@
 
 ## Function `digest`
 
+Return the transaction digest (hash of transaction inputs).
+Please do not use as a source of randomness.
 
 
 
public fun digest(self: &tx_context::TxContext): &vector<u8>
@@ -122,6 +130,7 @@
 
 ## Function `epoch`
 
+Return the current epoch
 
 
 
public fun epoch(self: &tx_context::TxContext): u64
@@ -146,6 +155,7 @@
 
 ## Function `epoch_timestamp_ms`
 
+Return the epoch start time as a unix timestamp in milliseconds.
 
 
 
public fun epoch_timestamp_ms(self: &tx_context::TxContext): u64
@@ -170,6 +180,9 @@
 
 ## Function `fresh_object_address`
 
+Create an address that has not been used. As it is an object address, it will never
+occur as the address for a user.
+In other words, the generated address is a globally unique object ID.
 
 
 
public fun fresh_object_address(ctx: &mut tx_context::TxContext): address
@@ -197,6 +210,8 @@
 
 ## Function `ids_created`
 
+Return the number of id's created by the current transaction.
+Hidden for now, but may expose later
 
 
 
fun ids_created(self: &tx_context::TxContext): u64
@@ -221,6 +236,7 @@
 
 ## Function `derive_id`
 
+Native function for deriving an ID via hash(tx_hash || ids_created)
 
 
 
fun derive_id(tx_hash: vector<u8>, ids_created: u64): address
diff --git a/crates/sui-framework/docs/sui-system/dependencies/sui-framework/types.md b/crates/sui-framework/docs/sui-system/dependencies/sui-framework/types.md
index a02b917c70f53..6dbc998014433 100644
--- a/crates/sui-framework/docs/sui-system/dependencies/sui-framework/types.md
+++ b/crates/sui-framework/docs/sui-system/dependencies/sui-framework/types.md
@@ -3,6 +3,7 @@
 
 # Module `0x2::types`
 
+Sui types helpers and utilities
 
 
 -  [Function `is_one_time_witness`](#0x2_types_is_one_time_witness)
@@ -16,6 +17,8 @@
 
 ## Function `is_one_time_witness`
 
+Tests if the argument type is a one-time witness, that is a type with only one instantiation
+across the entire code base.
 
 
 
public fun is_one_time_witness<T: drop>(_: &T): bool
diff --git a/crates/sui-framework/docs/sui-system/dependencies/sui-framework/url.md b/crates/sui-framework/docs/sui-system/dependencies/sui-framework/url.md
index ec2e701d17370..d4957518c0d96 100644
--- a/crates/sui-framework/docs/sui-system/dependencies/sui-framework/url.md
+++ b/crates/sui-framework/docs/sui-system/dependencies/sui-framework/url.md
@@ -3,6 +3,7 @@
 
 # Module `0x2::url`
 
+URL: standard Uniform Resource Locator string
 
 
 -  [Struct `Url`](#0x2_url_Url)
@@ -21,6 +22,7 @@
 
 ## Struct `Url`
 
+Standard Uniform Resource Locator (URL) string.
 
 
 
struct Url has copy, drop, store
@@ -48,6 +50,7 @@
 
 ## Function `new_unsafe`
 
+Create a Url, with no validation
 
 
 
public fun new_unsafe(url: ascii::String): url::Url
@@ -72,6 +75,8 @@
 
 ## Function `new_unsafe_from_bytes`
 
+Create a Url with no validation from bytes
+Note: this will abort if bytes is not valid ASCII
 
 
 
public fun new_unsafe_from_bytes(bytes: vector<u8>): url::Url
@@ -97,6 +102,7 @@
 
 ## Function `inner_url`
 
+Get inner URL
 
 
 
public fun inner_url(self: &url::Url): ascii::String
@@ -121,6 +127,7 @@
 
 ## Function `update`
 
+Update the inner URL
 
 
 
public fun update(self: &mut url::Url, url: ascii::String)
diff --git a/crates/sui-framework/docs/sui-system/dependencies/sui-framework/vec_map.md b/crates/sui-framework/docs/sui-system/dependencies/sui-framework/vec_map.md
index 783d4c614d6c9..1f11a78e7d823 100644
--- a/crates/sui-framework/docs/sui-system/dependencies/sui-framework/vec_map.md
+++ b/crates/sui-framework/docs/sui-system/dependencies/sui-framework/vec_map.md
@@ -38,6 +38,12 @@
 
 ## Struct `VecMap`
 
+A map data structure backed by a vector. The map is guaranteed not to contain duplicate keys, but entries
+are *not* sorted by key--entries are included in insertion order.
+All operations are O(N) in the size of the map--the intention of this data structure is only to provide
+the convenience of programming against a map API.
+Large maps should use handwritten parent/child relationships instead.
+Maps that need sorted iteration rather than insertion order iteration should also be handwritten.
 
 
 
struct VecMap<K: copy, V> has copy, drop, store
@@ -65,6 +71,7 @@
 
 ## Struct `Entry`
 
+An entry in the map
 
 
 
struct Entry<K: copy, V> has copy, drop, store
@@ -101,6 +108,7 @@
 
 
 
+This key already exists in the map
 
 
 
const EKeyAlreadyExists: u64 = 0;
@@ -110,6 +118,7 @@
 
 
 
+This key does not exist in the map
 
 
 
const EKeyDoesNotExist: u64 = 1;
@@ -119,6 +128,7 @@
 
 
 
+Trying to access an element of the map at an invalid index
 
 
 
const EIndexOutOfBounds: u64 = 3;
@@ -128,6 +138,7 @@
 
 
 
+Trying to pop from a map that is empty
 
 
 
const EMapEmpty: u64 = 4;
@@ -137,6 +148,7 @@
 
 
 
+Trying to destroy a map that is not empty
 
 
 
const EMapNotEmpty: u64 = 2;
@@ -148,6 +160,7 @@
 
 ## Function `empty`
 
+Create an empty VecMap
 
 
 
public fun empty<K: copy, V>(): vec_map::VecMap<K, V>
@@ -172,6 +185,8 @@
 
 ## Function `insert`
 
+Insert the entry key |-> value into self.
+Aborts if key is already bound in self.
 
 
 
public fun insert<K: copy, V>(self: &mut vec_map::VecMap<K, V>, key: K, value: V)
@@ -197,6 +212,7 @@
 
 ## Function `remove`
 
+Remove the entry key |-> value from self. Aborts if key is not bound in self.
 
 
 
public fun remove<K: copy, V>(self: &mut vec_map::VecMap<K, V>, key: &K): (K, V)
@@ -223,6 +239,7 @@
 
 ## Function `pop`
 
+Pop the most recently inserted entry from the map. Aborts if the map is empty.
 
 
 
public fun pop<K: copy, V>(self: &mut vec_map::VecMap<K, V>): (K, V)
@@ -249,6 +266,8 @@
 
 ## Function `get_mut`
 
+Get a mutable reference to the value bound to key in self.
+Aborts if key is not bound in self.
 
 
 
public fun get_mut<K: copy, V>(self: &mut vec_map::VecMap<K, V>, key: &K): &mut V
@@ -275,6 +294,8 @@
 
 ## Function `get`
 
+Get a reference to the value bound to key in self.
+Aborts if key is not bound in self.
 
 
 
public fun get<K: copy, V>(self: &vec_map::VecMap<K, V>, key: &K): &V
@@ -301,6 +322,9 @@
 
 ## Function `try_get`
 
+Safely try borrow a value bound to key in self.
+Return Some(V) if the value exists, None otherwise.
+Only works for a "copyable" value as references cannot be stored in vector.
 
 
 
public fun try_get<K: copy, V: copy>(self: &vec_map::VecMap<K, V>, key: &K): option::Option<V>
@@ -329,6 +353,7 @@
 
 ## Function `contains`
 
+Return true if self contains an entry for key, false otherwise
 
 
 
public fun contains<K: copy, V>(self: &vec_map::VecMap<K, V>, key: &K): bool
@@ -353,6 +378,7 @@
 
 ## Function `size`
 
+Return the number of entries in self
 
 
 
public fun size<K: copy, V>(self: &vec_map::VecMap<K, V>): u64
@@ -377,6 +403,7 @@
 
 ## Function `is_empty`
 
+Return true if self has 0 elements, false otherwise
 
 
 
public fun is_empty<K: copy, V>(self: &vec_map::VecMap<K, V>): bool
@@ -401,6 +428,7 @@
 
 ## Function `destroy_empty`
 
+Destroy an empty map. Aborts if self is not empty
 
 
 
public fun destroy_empty<K: copy, V>(self: vec_map::VecMap<K, V>)
@@ -427,6 +455,8 @@
 
 ## Function `into_keys_values`
 
+Unpack self into vectors of its keys and values.
+The output keys and values are stored in insertion order, *not* sorted by key.
 
 
 
public fun into_keys_values<K: copy, V>(self: vec_map::VecMap<K, V>): (vector<K>, vector<V>)
@@ -465,6 +495,8 @@
 
 ## Function `keys`
 
+Returns a list of keys in the map.
+Do not assume any particular ordering.
 
 
 
public fun keys<K: copy, V>(self: &vec_map::VecMap<K, V>): vector<K>
@@ -497,6 +529,8 @@
 
 ## Function `get_idx_opt`
 
+Find the index of key in self. Return None if key is not in self.
+Note that map entries are stored in insertion order, *not* sorted by key.
 
 
 
public fun get_idx_opt<K: copy, V>(self: &vec_map::VecMap<K, V>, key: &K): option::Option<u64>
@@ -529,6 +563,8 @@
 
 ## Function `get_idx`
 
+Find the index of key in self. Aborts if key is not in self.
+Note that map entries are stored in insertion order, *not* sorted by key.
 
 
 
public fun get_idx<K: copy, V>(self: &vec_map::VecMap<K, V>, key: &K): u64
@@ -555,6 +591,9 @@
 
 ## Function `get_entry_by_idx`
 
+Return a reference to the idxth entry of self. This gives direct access into the backing array of the map--use with caution.
+Note that map entries are stored in insertion order, *not* sorted by key.
+Aborts if idx is greater than or equal to size(self)
 
 
 
public fun get_entry_by_idx<K: copy, V>(self: &vec_map::VecMap<K, V>, idx: u64): (&K, &V)
@@ -581,6 +620,9 @@
 
 ## Function `get_entry_by_idx_mut`
 
+Return a mutable reference to the idxth entry of self. This gives direct access into the backing array of the map--use with caution.
+Note that map entries are stored in insertion order, *not* sorted by key.
+Aborts if idx is greater than or equal to size(self)
 
 
 
public fun get_entry_by_idx_mut<K: copy, V>(self: &mut vec_map::VecMap<K, V>, idx: u64): (&K, &mut V)
@@ -607,6 +649,8 @@
 
 ## Function `remove_entry_by_idx`
 
+Remove the entry at index idx from self.
+Aborts if idx is greater than or equal to size(self)
 
 
 
public fun remove_entry_by_idx<K: copy, V>(self: &mut vec_map::VecMap<K, V>, idx: u64): (K, V)
diff --git a/crates/sui-framework/docs/sui-system/dependencies/sui-framework/vec_set.md b/crates/sui-framework/docs/sui-system/dependencies/sui-framework/vec_set.md
index 4c72c4c65801f..b1cfb3c10b816 100644
--- a/crates/sui-framework/docs/sui-system/dependencies/sui-framework/vec_set.md
+++ b/crates/sui-framework/docs/sui-system/dependencies/sui-framework/vec_set.md
@@ -30,6 +30,11 @@
 
 ## Struct `VecSet`
 
+A set data structure backed by a vector. The set is guaranteed not to
+contain duplicate keys. All operations are O(N) in the size of the set
+- the intention of this data structure is only to provide the convenience
+of programming against a set API. Sets that need sorted iteration rather
+than insertion order iteration should be handwritten.
 
 
 
struct VecSet<K: copy, drop> has copy, drop, store
@@ -60,6 +65,7 @@
 
 
 
+This key already exists in the map
 
 
 
const EKeyAlreadyExists: u64 = 0;
@@ -69,6 +75,7 @@
 
 
 
+This key does not exist in the map
 
 
 
const EKeyDoesNotExist: u64 = 1;
@@ -80,6 +87,7 @@
 
 ## Function `empty`
 
+Create an empty VecSet
 
 
 
public fun empty<K: copy, drop>(): vec_set::VecSet<K>
@@ -104,6 +112,7 @@
 
 ## Function `singleton`
 
+Create a singleton VecSet that only contains one element.
 
 
 
public fun singleton<K: copy, drop>(key: K): vec_set::VecSet<K>
@@ -128,6 +137,8 @@
 
 ## Function `insert`
 
+Insert a key into self.
+Aborts if key is already present in self.
 
 
 
public fun insert<K: copy, drop>(self: &mut vec_set::VecSet<K>, key: K)
@@ -153,6 +164,7 @@
 
 ## Function `remove`
 
+Remove the entry key from self. Aborts if key is not present in self.
 
 
 
public fun remove<K: copy, drop>(self: &mut vec_set::VecSet<K>, key: &K)
@@ -178,6 +190,7 @@
 
 ## Function `contains`
 
+Return true if self contains an entry for key, false otherwise
 
 
 
public fun contains<K: copy, drop>(self: &vec_set::VecSet<K>, key: &K): bool
@@ -202,6 +215,7 @@
 
 ## Function `size`
 
+Return the number of entries in self
 
 
 
public fun size<K: copy, drop>(self: &vec_set::VecSet<K>): u64
@@ -226,6 +240,7 @@
 
 ## Function `is_empty`
 
+Return true if self has 0 elements, false otherwise
 
 
 
public fun is_empty<K: copy, drop>(self: &vec_set::VecSet<K>): bool
@@ -250,6 +265,8 @@
 
 ## Function `into_keys`
 
+Unpack self into vectors of keys.
+The output keys are stored in insertion order, *not* sorted.
 
 
 
public fun into_keys<K: copy, drop>(self: vec_set::VecSet<K>): vector<K>
@@ -275,6 +292,9 @@
 
 ## Function `keys`
 
+Borrow the contents of the VecSet to access content by index
+without unpacking. The contents are stored in insertion order,
+*not* sorted.
 
 
 
public fun keys<K: copy, drop>(self: &vec_set::VecSet<K>): &vector<K>
@@ -299,6 +319,8 @@
 
 ## Function `get_idx_opt`
 
+Find the index of key in self. Return None if key is not in self.
+Note that keys are stored in insertion order, *not* sorted.
 
 
 
fun get_idx_opt<K: copy, drop>(self: &vec_set::VecSet<K>, key: &K): option::Option<u64>
@@ -331,6 +353,8 @@
 
 ## Function `get_idx`
 
+Find the index of key in self. Aborts if key is not in self.
+Note that map entries are stored in insertion order, *not* sorted.
 
 
 
fun get_idx<K: copy, drop>(self: &vec_set::VecSet<K>, key: &K): u64
diff --git a/crates/sui-framework/docs/sui-system/dependencies/sui-framework/versioned.md b/crates/sui-framework/docs/sui-system/dependencies/sui-framework/versioned.md
index 5bf9369c1781f..2bd638d5cc340 100644
--- a/crates/sui-framework/docs/sui-system/dependencies/sui-framework/versioned.md
+++ b/crates/sui-framework/docs/sui-system/dependencies/sui-framework/versioned.md
@@ -28,6 +28,12 @@
 
 ## Resource `Versioned`
 
+A wrapper type that supports versioning of the inner type.
+The inner type is a dynamic field of the Versioned object, and is keyed using version.
+User of this type could load the inner object using corresponding type based on the version.
+You can also upgrade the inner object to a new type version.
+If you want to support lazy upgrade of the inner type, one caveat is that all APIs would have
+to use mutable reference even if it's a read-only API.
 
 
 
struct Versioned has store, key
@@ -61,6 +67,8 @@
 
 ## Struct `VersionChangeCap`
 
+Represents a hot potato object generated when we take out the dynamic field.
+This is to make sure that we always put a new value back.
 
 
 
struct VersionChangeCap
@@ -97,6 +105,7 @@
 
 
 
+Failed to upgrade the inner object due to invalid capability or new version.
 
 
 
const EInvalidUpgrade: u64 = 0;
@@ -108,6 +117,7 @@
 
 ## Function `create`
 
+Create a new Versioned object that contains a initial value of type T with an initial version.
 
 
 
public fun create<T: store>(init_version: u64, init_value: T, ctx: &mut tx_context::TxContext): versioned::Versioned
@@ -137,6 +147,7 @@
 
 ## Function `version`
 
+Get the current version of the inner type.
 
 
 
public fun version(self: &versioned::Versioned): u64
@@ -161,6 +172,8 @@
 
 ## Function `load_value`
 
+Load the inner value based on the current version. Caller specifies an expected type T.
+If the type mismatch, the load will fail.
 
 
 
public fun load_value<T: store>(self: &versioned::Versioned): &T
@@ -185,6 +198,7 @@
 
 ## Function `load_value_mut`
 
+Similar to load_value, but return a mutable reference.
 
 
 
public fun load_value_mut<T: store>(self: &mut versioned::Versioned): &mut T
@@ -209,6 +223,8 @@
 
 ## Function `remove_value_for_upgrade`
 
+Take the inner object out for upgrade. To ensure we always upgrade properly, a capability object is returned
+and must be used when we upgrade.
 
 
 
public fun remove_value_for_upgrade<T: store>(self: &mut versioned::Versioned): (T, versioned::VersionChangeCap)
@@ -239,6 +255,8 @@
 
 ## Function `upgrade`
 
+Upgrade the inner object with a new version and new value. Must use the capability returned
+by calling remove_value_for_upgrade.
 
 
 
public fun upgrade<T: store>(self: &mut versioned::Versioned, new_version: u64, new_value: T, cap: versioned::VersionChangeCap)
@@ -267,6 +285,7 @@
 
 ## Function `destroy`
 
+Destroy this Versioned container, and return the inner object.
 
 
 
public fun destroy<T: store>(self: versioned::Versioned): T