basic-storage

Contract interface

This page shows the spec for the wasm built from this repo (stellar contract info interface --output json-formatted). TypeScript bindings live in frontend/lib/basic-storage-bindings/ (stellar contract bindings typescript). Refresh both with make contract-bindings. Testnet txs use whatever contract id is in NEXT_PUBLIC_CONTRACT_ID after you run make deploy.

Spec captured

May 14, 2026, 4:32 PM

From basic-storage-interface.meta.json (written by make contract-interface-json).

Full interface JSON

[
  {
    "event_v0": {
      "doc": "",
      "lib": "",
      "name": "I64Set",
      "prefix_topics": [
        "i64_set"
      ],
      "params": [
        {
          "doc": "",
          "name": "v",
          "type_": "i64",
          "location": "data"
        }
      ],
      "data_format": "single_value"
    }
  },
  {
    "event_v0": {
      "doc": "",
      "lib": "",
      "name": "TagSet",
      "prefix_topics": [
        "tag_set"
      ],
      "params": [
        {
          "doc": "",
          "name": "label",
          "type_": "string",
          "location": "data"
        }
      ],
      "data_format": "single_value"
    }
  },
  {
    "udt_union_v0": {
      "doc": "",
      "lib": "",
      "name": "DataKey",
      "cases": [
        {
          "void_v0": {
            "doc": "",
            "name": "Value"
          }
        },
        {
          "void_v0": {
            "doc": "",
            "name": "Signed"
          }
        },
        {
          "void_v0": {
            "doc": "",
            "name": "Tag"
          }
        },
        {
          "void_v0": {
            "doc": "",
            "name": "Counter"
          }
        },
        {
          "void_v0": {
            "doc": "Boolean toggle (e.g. feature flag).",
            "name": "Flag"
          }
        },
        {
          "void_v0": {
            "doc": "64-bit signed integer.",
            "name": "WideI"
          }
        },
        {
          "void_v0": {
            "doc": "Small opaque blob (capped length).",
            "name": "Blob"
          }
        },
        {
          "void_v0": {
            "doc": "128-bit unsigned integer.",
            "name": "WideU"
          }
        },
        {
          "void_v0": {
            "doc": "Short interned label (Stellar `Symbol`, max 32 chars).",
            "name": "Code"
          }
        },
        {
          "void_v0": {
            "doc": "Optional Stellar account / contract address.",
            "name": "Pointer"
          }
        },
        {
          "void_v0": {
            "doc": "128-bit signed integer.",
            "name": "WideI128"
          }
        },
        {
          "void_v0": {
            "doc": "Bounded `Vec<u32>` (coverage for `Vec`).",
            "name": "U32List"
          }
        },
        {
          "void_v0": {
            "doc": "Bounded `Map<String, u32>` (coverage for `Map`).",
            "name": "Scores"
          }
        },
        {
          "void_v0": {
            "doc": "Non-optional `Address` (distinct from `Option<Address>` on the pointer slot).",
            "name": "PlainAddr"
          }
        },
        {
          "void_v0": {
            "doc": "Nested struct slot.",
            "name": "Nested"
          }
        },
        {
          "void_v0": {
            "doc": "Enum slot.",
            "name": "Widget"
          }
        }
      ]
    }
  },
  {
    "event_v0": {
      "doc": "Emits the same `Bytes` passed to `set_blob` (capped by `MAX_BLOB_LEN`) for indexer / EVM-style parity.",
      "lib": "",
      "name": "BlobSet",
      "prefix_topics": [
        "blob_set"
      ],
      "params": [
        {
          "doc": "",
          "name": "data",
          "type_": "bytes",
          "location": "data"
        }
      ],
      "data_format": "single_value"
    }
  },
  {
    "event_v0": {
      "doc": "Same UTF-8 string input as `set_symbol` (before interning as `Symbol` in storage).",
      "lib": "",
      "name": "CodeSet",
      "prefix_topics": [
        "code_set"
      ],
      "params": [
        {
          "doc": "",
          "name": "label",
          "type_": "string",
          "location": "data"
        }
      ],
      "data_format": "single_value"
    }
  },
  {
    "event_v0": {
      "doc": "",
      "lib": "",
      "name": "FlagSet",
      "prefix_topics": [
        "flag_set"
      ],
      "params": [
        {
          "doc": "",
          "name": "on",
          "type_": "bool",
          "location": "data"
        }
      ],
      "data_format": "single_value"
    }
  },
  {
    "event_v0": {
      "doc": "",
      "lib": "",
      "name": "ValueSet",
      "prefix_topics": [
        "value_set"
      ],
      "params": [
        {
          "doc": "",
          "name": "value",
          "type_": "u32",
          "location": "data"
        }
      ],
      "data_format": "single_value"
    }
  },
  {
    "udt_struct_v0": {
      "doc": "",
      "lib": "",
      "name": "InnerBits",
      "fields": [
        {
          "doc": "",
          "name": "x",
          "type_": "u32"
        }
      ]
    }
  },
  {
    "udt_struct_v0": {
      "doc": "Nested `#[contracttype]` struct (coverage for composite UDT graphs).",
      "lib": "",
      "name": "OuterBits",
      "fields": [
        {
          "doc": "",
          "name": "inner",
          "type_": {
            "udt": {
              "name": "InnerBits"
            }
          }
        },
        {
          "doc": "",
          "name": "stamp",
          "type_": "u64"
        }
      ]
    }
  },
  {
    "event_v0": {
      "doc": "Same `OuterBits` as `set_nested`.",
      "lib": "",
      "name": "NestedSet",
      "prefix_topics": [
        "nested_set"
      ],
      "params": [
        {
          "doc": "",
          "name": "outer",
          "type_": {
            "udt": {
              "name": "OuterBits"
            }
          },
          "location": "data"
        }
      ],
      "data_format": "single_value"
    }
  },
  {
    "event_v0": {
      "doc": "Same `Map<String, u32>` as `set_scores`.",
      "lib": "",
      "name": "ScoresSet",
      "prefix_topics": [
        "scores_set"
      ],
      "params": [
        {
          "doc": "",
          "name": "scores",
          "type_": {
            "map": {
              "key_type": "string",
              "value_type": "u32"
            }
          },
          "location": "data"
        }
      ],
      "data_format": "single_value"
    }
  },
  {
    "event_v0": {
      "doc": "",
      "lib": "",
      "name": "SignedSet",
      "prefix_topics": [
        "signed_set"
      ],
      "params": [
        {
          "doc": "",
          "name": "v",
          "type_": "i32",
          "location": "data"
        }
      ],
      "data_format": "single_value"
    }
  },
  {
    "event_v0": {
      "doc": "Same `Vec<u32>` as `set_vec_u32`.",
      "lib": "",
      "name": "VecU32Set",
      "prefix_topics": [
        "vec_u32_set"
      ],
      "params": [
        {
          "doc": "",
          "name": "items",
          "type_": {
            "vec": {
              "element_type": "u32"
            }
          },
          "location": "data"
        }
      ],
      "data_format": "single_value"
    }
  },
  {
    "event_v0": {
      "doc": "Same `DemoWidget` as `set_widget`.",
      "lib": "",
      "name": "WidgetSet",
      "prefix_topics": [
        "widget_set"
      ],
      "params": [
        {
          "doc": "",
          "name": "w",
          "type_": {
            "udt": {
              "name": "DemoWidget"
            }
          },
          "location": "data"
        }
      ],
      "data_format": "single_value"
    }
  },
  {
    "udt_union_v0": {
      "doc": "Small user enum stored on-chain (coverage for `#[contracttype]` enums).",
      "lib": "",
      "name": "DemoWidget",
      "cases": [
        {
          "void_v0": {
            "doc": "",
            "name": "Off"
          }
        },
        {
          "void_v0": {
            "doc": "",
            "name": "On"
          }
        },
        {
          "tuple_v0": {
            "doc": "",
            "name": "Pair",
            "type_": [
              "u32",
              "u32"
            ]
          }
        }
      ]
    }
  },
  {
    "event_v0": {
      "doc": "",
      "lib": "",
      "name": "CounterSet",
      "prefix_topics": [
        "counter_set"
      ],
      "params": [
        {
          "doc": "",
          "name": "n",
          "type_": "u64",
          "location": "data"
        }
      ],
      "data_format": "single_value"
    }
  },
  {
    "event_v0": {
      "doc": "Same `Option<Address>` as `set_pointer` so event payload matches invocation.",
      "lib": "",
      "name": "PointerSet",
      "prefix_topics": [
        "pointer_set"
      ],
      "params": [
        {
          "doc": "",
          "name": "who",
          "type_": {
            "option": {
              "value_type": "address"
            }
          },
          "location": "data"
        }
      ],
      "data_format": "single_value"
    }
  },
  {
    "event_v0": {
      "doc": "",
      "lib": "",
      "name": "WideI128Set",
      "prefix_topics": [
        "wide_i128_set"
      ],
      "params": [
        {
          "doc": "",
          "name": "v",
          "type_": "i128",
          "location": "data"
        }
      ],
      "data_format": "single_value"
    }
  },
  {
    "event_v0": {
      "doc": "",
      "lib": "",
      "name": "WideU128Set",
      "prefix_topics": [
        "wide_u128_set"
      ],
      "params": [
        {
          "doc": "",
          "name": "v",
          "type_": "u128",
          "location": "data"
        }
      ],
      "data_format": "single_value"
    }
  },
  {
    "event_v0": {
      "doc": "Same `Address` as `set_plain_addr`.",
      "lib": "",
      "name": "PlainAddrSet",
      "prefix_topics": [
        "plain_addr_set"
      ],
      "params": [
        {
          "doc": "",
          "name": "who",
          "type_": "address",
          "location": "data"
        }
      ],
      "data_format": "single_value"
    }
  },
  {
    "function_v0": {
      "doc": "",
      "name": "get",
      "inputs": [],
      "outputs": [
        "u32"
      ]
    }
  },
  {
    "function_v0": {
      "doc": "",
      "name": "set",
      "inputs": [
        {
          "doc": "",
          "name": "value",
          "type_": "u32"
        }
      ],
      "outputs": []
    }
  },
  {
    "function_v0": {
      "doc": "",
      "name": "get_i64",
      "inputs": [],
      "outputs": [
        "i64"
      ]
    }
  },
  {
    "function_v0": {
      "doc": "",
      "name": "get_tag",
      "inputs": [],
      "outputs": [
        "string"
      ]
    }
  },
  {
    "function_v0": {
      "doc": "",
      "name": "set_i64",
      "inputs": [
        {
          "doc": "",
          "name": "v",
          "type_": "i64"
        }
      ],
      "outputs": []
    }
  },
  {
    "function_v0": {
      "doc": "Stores a short text label and emits `TagSet` (string payload for indexers).",
      "name": "set_tag",
      "inputs": [
        {
          "doc": "",
          "name": "label",
          "type_": "string"
        }
      ],
      "outputs": []
    }
  },
  {
    "function_v0": {
      "doc": "",
      "name": "get_blob",
      "inputs": [],
      "outputs": [
        "bytes"
      ]
    }
  },
  {
    "function_v0": {
      "doc": "",
      "name": "get_flag",
      "inputs": [],
      "outputs": [
        "bool"
      ]
    }
  },
  {
    "function_v0": {
      "doc": "",
      "name": "get_i128",
      "inputs": [],
      "outputs": [
        "i128"
      ]
    }
  },
  {
    "function_v0": {
      "doc": "",
      "name": "get_u128",
      "inputs": [],
      "outputs": [
        "u128"
      ]
    }
  },
  {
    "function_v0": {
      "doc": "",
      "name": "set_blob",
      "inputs": [
        {
          "doc": "",
          "name": "data",
          "type_": "bytes"
        }
      ],
      "outputs": []
    }
  },
  {
    "function_v0": {
      "doc": "",
      "name": "set_flag",
      "inputs": [
        {
          "doc": "",
          "name": "on",
          "type_": "bool"
        }
      ],
      "outputs": []
    }
  },
  {
    "function_v0": {
      "doc": "",
      "name": "set_i128",
      "inputs": [
        {
          "doc": "",
          "name": "v",
          "type_": "i128"
        }
      ],
      "outputs": []
    }
  },
  {
    "function_v0": {
      "doc": "",
      "name": "set_u128",
      "inputs": [
        {
          "doc": "",
          "name": "v",
          "type_": "u128"
        }
      ],
      "outputs": []
    }
  },
  {
    "function_v0": {
      "doc": "",
      "name": "get_nested",
      "inputs": [],
      "outputs": [
        {
          "udt": {
            "name": "OuterBits"
          }
        }
      ]
    }
  },
  {
    "function_v0": {
      "doc": "",
      "name": "get_scores",
      "inputs": [],
      "outputs": [
        {
          "map": {
            "key_type": "string",
            "value_type": "u32"
          }
        }
      ]
    }
  },
  {
    "function_v0": {
      "doc": "",
      "name": "get_signed",
      "inputs": [],
      "outputs": [
        "i32"
      ]
    }
  },
  {
    "function_v0": {
      "doc": "",
      "name": "get_symbol",
      "inputs": [],
      "outputs": [
        "symbol"
      ]
    }
  },
  {
    "function_v0": {
      "doc": "",
      "name": "get_widget",
      "inputs": [],
      "outputs": [
        {
          "udt": {
            "name": "DemoWidget"
          }
        }
      ]
    }
  },
  {
    "function_v0": {
      "doc": "",
      "name": "set_nested",
      "inputs": [
        {
          "doc": "",
          "name": "outer",
          "type_": {
            "udt": {
              "name": "OuterBits"
            }
          }
        }
      ],
      "outputs": []
    }
  },
  {
    "function_v0": {
      "doc": "Stores a bounded string-keyed map (coverage for `Map` + `String` keys).",
      "name": "set_scores",
      "inputs": [
        {
          "doc": "",
          "name": "scores",
          "type_": {
            "map": {
              "key_type": "string",
              "value_type": "u32"
            }
          }
        }
      ],
      "outputs": []
    }
  },
  {
    "function_v0": {
      "doc": "Stores a signed integer and emits `SignedSet`.",
      "name": "set_signed",
      "inputs": [
        {
          "doc": "",
          "name": "v",
          "type_": "i32"
        }
      ],
      "outputs": []
    }
  },
  {
    "function_v0": {
      "doc": "Stores a short `Symbol` (interned id; pass UTF-8 bytes that match Symbol rules: `a-zA-Z0-9_`, 1\\xe2\\x80\\x9332 chars).",
      "name": "set_symbol",
      "inputs": [
        {
          "doc": "",
          "name": "label",
          "type_": "string"
        }
      ],
      "outputs": []
    }
  },
  {
    "function_v0": {
      "doc": "",
      "name": "set_widget",
      "inputs": [
        {
          "doc": "",
          "name": "w",
          "type_": {
            "udt": {
              "name": "DemoWidget"
            }
          }
        }
      ],
      "outputs": []
    }
  },
  {
    "function_v0": {
      "doc": "",
      "name": "get_counter",
      "inputs": [],
      "outputs": [
        "u64"
      ]
    }
  },
  {
    "function_v0": {
      "doc": "",
      "name": "get_pointer",
      "inputs": [],
      "outputs": [
        {
          "option": {
            "value_type": "address"
          }
        }
      ]
    }
  },
  {
    "function_v0": {
      "doc": "",
      "name": "get_vec_u32",
      "inputs": [],
      "outputs": [
        {
          "vec": {
            "element_type": "u32"
          }
        }
      ]
    }
  },
  {
    "function_v0": {
      "doc": "Stores a u64 counter and emits `CounterSet`.",
      "name": "set_counter",
      "inputs": [
        {
          "doc": "",
          "name": "n",
          "type_": "u64"
        }
      ],
      "outputs": []
    }
  },
  {
    "function_v0": {
      "doc": "Stores an optional Stellar address (account or contract).",
      "name": "set_pointer",
      "inputs": [
        {
          "doc": "",
          "name": "who",
          "type_": {
            "option": {
              "value_type": "address"
            }
          }
        }
      ],
      "outputs": []
    }
  },
  {
    "function_v0": {
      "doc": "Stores a bounded `Vec<u32>` (empty allowed).",
      "name": "set_vec_u32",
      "inputs": [
        {
          "doc": "",
          "name": "items",
          "type_": {
            "vec": {
              "element_type": "u32"
            }
          }
        }
      ],
      "outputs": []
    }
  },
  {
    "function_v0": {
      "doc": "",
      "name": "get_plain_addr",
      "inputs": [],
      "outputs": [
        "address"
      ]
    }
  },
  {
    "function_v0": {
      "doc": "Non-optional `Address` (default read is the burned account when unset).",
      "name": "set_plain_addr",
      "inputs": [
        {
          "doc": "",
          "name": "who",
          "type_": "address"
        }
      ],
      "outputs": []
    }
  }
]

get()

Inputs
(none)
Returns
u32

get_blob()

Inputs
(none)
Returns
bytes

get_counter()

Inputs
(none)
Returns
u64

get_flag()

Inputs
(none)
Returns
bool

get_i128()

Inputs
(none)
Returns
i128

get_i64()

Inputs
(none)
Returns
i64

get_nested()

Inputs
(none)
Returns
{"udt":{"name":"OuterBits"}}

get_plain_addr()

Inputs
(none)
Returns
address

get_pointer()

Inputs
(none)
Returns
Option<address>

get_scores()

Inputs
(none)
Returns
Map<string, u32>

get_signed()

Inputs
(none)
Returns
i32

get_symbol()

Inputs
(none)
Returns
symbol

get_tag()

Inputs
(none)
Returns
string

get_u128()

Inputs
(none)
Returns
u128

get_vec_u32()

Inputs
(none)
Returns
Vec<u32>

get_widget()

Inputs
(none)
Returns
{"udt":{"name":"DemoWidget"}}

set()

Inputs
  • value: u32
Returns
()

set_blob()

Inputs
  • data: bytes
Returns
()

set_counter()

Stores a u64 counter and emits `CounterSet`.

Inputs
  • n: u64
Returns
()

set_flag()

Inputs
  • on: bool
Returns
()

set_i128()

Inputs
  • v: i128
Returns
()

set_i64()

Inputs
  • v: i64
Returns
()

set_nested()

Inputs
  • outer: {"udt":{"name":"OuterBits"}}
Returns
()

set_plain_addr()

Non-optional `Address` (default read is the burned account when unset).

Inputs
  • who: address
Returns
()

set_pointer()

Stores an optional Stellar address (account or contract).

Inputs
  • who: Option<address>
Returns
()

set_scores()

Stores a bounded string-keyed map (coverage for `Map` + `String` keys).

Inputs
  • scores: Map<string, u32>
Returns
()

set_signed()

Stores a signed integer and emits `SignedSet`.

Inputs
  • v: i32
Returns
()

set_symbol()

Stores a short `Symbol` (interned id; pass UTF-8 bytes that match Symbol rules: `a-zA-Z0-9_`, 1\xe2\x80\x9332 chars).

Inputs
  • label: string
Returns
()

set_tag()

Stores a short text label and emits `TagSet` (string payload for indexers).

Inputs
  • label: string
Returns
()

set_u128()

Inputs
  • v: u128
Returns
()

set_vec_u32()

Stores a bounded `Vec<u32>` (empty allowed).

Inputs
  • items: Vec<u32>
Returns
()

set_widget()

Inputs
  • w: {"udt":{"name":"DemoWidget"}}
Returns
()

BlobSet

topics: "blob_set"

Payload
  • data (data): bytes
Data format
single_value

CodeSet

topics: "code_set"

Payload
  • label (data): string
Data format
single_value

CounterSet

topics: "counter_set"

Payload
  • n (data): u64
Data format
single_value

FlagSet

topics: "flag_set"

Payload
  • on (data): bool
Data format
single_value

I64Set

topics: "i64_set"

Payload
  • v (data): i64
Data format
single_value

NestedSet

topics: "nested_set"

Payload
  • outer (data): {"udt":{"name":"OuterBits"}}
Data format
single_value

PlainAddrSet

topics: "plain_addr_set"

Payload
  • who (data): address
Data format
single_value

PointerSet

topics: "pointer_set"

Payload
  • who (data): Option<address>
Data format
single_value

ScoresSet

topics: "scores_set"

Payload
  • scores (data): Map<string, u32>
Data format
single_value

SignedSet

topics: "signed_set"

Payload
  • v (data): i32
Data format
single_value

TagSet

topics: "tag_set"

Payload
  • label (data): string
Data format
single_value

ValueSet

topics: "value_set"

Payload
  • value (data): u32
Data format
single_value

VecU32Set

topics: "vec_u32_set"

Payload
  • items (data): Vec<u32>
Data format
single_value

WideI128Set

topics: "wide_i128_set"

Payload
  • v (data): i128
Data format
single_value

WideU128Set

topics: "wide_u128_set"

Payload
  • v (data): u128
Data format
single_value

WidgetSet

topics: "widget_set"

Payload
  • w (data): {"udt":{"name":"DemoWidget"}}
Data format
single_value