load
def load(
    target_contract_address: int,
    variable_name: str,
    variable_type: str,
    key: list[int] | None = None
) -> list[int]:
Loads storage variable with name variable_name and given key and variable_type from a contract with target_contract_address.
variable_type is provided as a string representation of type name.
Example:
./src/contract.cairo
%lang starknet
from starkware.cairo.common.cairo_builtins import HashBuiltin
struct Value {
    a: felt,
    b: felt,
}
@storage_var
func store_val(a: felt, b: felt) -> (res: Value) {
}
@storage_var
func store_felt() -> (res: felt) {
}
./test/test_store.cairo
%lang starknet
from starkware.cairo.common.cairo_builtins import HashBuiltin
@external
func test_store{syscall_ptr: felt*, pedersen_ptr: HashBuiltin*, range_check_ptr}() {
    alloc_locals;
    local contract_address;
    %{
        ids.contract_address = deploy_contract("./src/contract.cairo").contract_address
        felt_val = load(ids.contract_address, "store_felt", "felt")
        assert felt_val == [0]
        value_val = load(ids.contract_address, "store_val", "Value", key=[1,2])
        assert value_val == [0, 0]
    %}
    return ();
}
danger
You have to provide key as a list of ints. In the future, Data Transformer will be supported.
danger
There is no type checking for variable_name, key, variable_type make sure you provided values correctly.
tip
key is a list of arguments because Cairo @storage_var maps any number of felt arguments to any number of felt values.