Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
113 commits
Select commit Hold shift + click to select a range
f1c10fe
implement basename option 1
0x70b1a5 Aug 14, 2025
bad63a6
change multicall to initialize first
nick1udwig Aug 22, 2025
c0b74a0
notifications: remove old endpoints
nick1udwig Sep 9, 2025
cc5ad39
Format Rust code using rustfmt
github-actions[bot] Sep 9, 2025
4400b44
bump to v1.7.1
nick1udwig Sep 9, 2025
8c392bb
spider: add initial phase 2 work
nick1udwig Sep 9, 2025
fdeff55
Format Rust code using rustfmt
github-actions[bot] Sep 9, 2025
cf1eb30
remove accidental build artifact
nick1udwig Sep 10, 2025
9abc289
Merge branch 'develop' into hf/change-multicall-to-initialize-first
nick1udwig Sep 10, 2025
88724c6
Merge branch 'develop' into tm/public-appstore-clean-path
nick1udwig Sep 11, 2025
d276140
Merge pull request #820 from hyperware-ai/tm/public-appstore-clean-path
nick1udwig Sep 11, 2025
808ca6b
fixed computeProxyAddress
Sep 11, 2025
dfd63f9
restored original var names
Sep 11, 2025
b6e57b3
fixed predict tba address
Sep 11, 2025
cbf77b7
spider: get phase 2 working well enough for demo: https://files.yael.…
nick1udwig Sep 13, 2025
7616438
spider: fix build-from-scratch
nick1udwig Sep 13, 2025
a81b9ee
spider: fix build-from-scratch 2
nick1udwig Sep 13, 2025
44a830d
bay-width
0x70b1a5 Sep 16, 2025
4ec3167
fix README
nick1udwig Sep 17, 2025
f23cacc
Merge pull request #850 from hyperware-ai/pax/change-multicall-to-ini…
nick1udwig Sep 17, 2025
049cc87
Merge branch 'develop' into hf/change-multicall-to-initialize-first
nick1udwig Sep 17, 2025
f5a8370
state: make code a little cleaner (let else instead of if let else)
nick1udwig Sep 18, 2025
a81a797
Merge branch 'develop' into hf/notifications-remove-old-endpoints
nick1udwig Sep 19, 2025
5654c68
Merge pull request #847 from hyperware-ai/hf/notifications-remove-old…
nick1udwig Sep 19, 2025
0930da3
spider: wait until hypermap-cacher is ready to allow successful fetch…
nick1udwig Sep 19, 2025
9956cc7
spider: wait a little longer
nick1udwig Sep 19, 2025
c1d2c2a
Format Rust code using rustfmt
github-actions[bot] Sep 19, 2025
81a0b9a
Merge branch 'develop' into hf/spider-phase-2
nick1udwig Sep 19, 2025
d800d05
Merge pull request #849 from hyperware-ai/hf/spider-phase-2
nick1udwig Sep 19, 2025
9879ff7
Merge branch 'develop' into hf/spider-wait-till-cacher-ready
nick1udwig Sep 19, 2025
5e59dd6
Merge pull request #859 from hyperware-ai/hf/spider-wait-till-cacher-…
nick1udwig Sep 19, 2025
4d2a164
spider: add hyperware search, get, and call tools
nick1udwig Sep 20, 2025
21c341f
spider: get it working
nick1udwig Sep 23, 2025
7c47ba9
Format Rust code using rustfmt
github-actions[bot] Sep 23, 2025
f495c0a
fix #852
0x70b1a5 Sep 24, 2025
74d38ce
no-prevent-default
0x70b1a5 Sep 24, 2025
75cc42d
852
0x70b1a5 Sep 24, 2025
819973d
touches
0x70b1a5 Sep 26, 2025
c463409
maximillian-width
0x70b1a5 Sep 29, 2025
a9f90d2
styling
0x70b1a5 Sep 29, 2025
4e6d8d0
Merge branch 'develop' into tm/appstore-notifsbay-width
0x70b1a5 Sep 29, 2025
2b00f94
http-server: allow header to specify timeout
nick1udwig Sep 30, 2025
e00c23b
kernel: dont crash on bad wasm file
nick1udwig Sep 30, 2025
6904e07
Merge pull request #863 from hyperware-ai/hf/kernel-dont-crash-on-bad…
nick1udwig Sep 30, 2025
c6a52c3
fixed gas caps for bundler's gas response
Hallmane Sep 30, 2025
ac90f3f
added minting upgradable custom accounts + multicall initialization
Sep 30, 2025
9162e41
fix #855
0x70b1a5 Oct 1, 2025
c1a1a8d
fixed unexpected submit bug on clicking back button
Oct 3, 2025
0056227
kernel: dont crash on overfull stderr
nick1udwig Oct 7, 2025
3a5df12
Format Rust code using rustfmt
github-actions[bot] Oct 7, 2025
d3b3470
Merge pull request #868 from hyperware-ai/hf/dont-crash-on-overfull-s…
nick1udwig Oct 7, 2025
3702368
Merge branch 'develop' into hf/spider-phase-3
nick1udwig Oct 7, 2025
0499c61
Merge pull request #860 from hyperware-ai/hf/spider-phase-3
nick1udwig Oct 7, 2025
c6181b3
Merge branch 'develop' into tm/852
nick1udwig Oct 8, 2025
d42b9c0
Merge pull request #861 from hyperware-ai/tm/852
nick1udwig Oct 8, 2025
a6c87f9
Merge branch 'develop' into tm/appstore-notifsbay-width
nick1udwig Oct 8, 2025
f4ec279
Merge pull request #862 from hyperware-ai/tm/appstore-notifsbay-width
nick1udwig Oct 8, 2025
3de76c4
Merge branch 'develop' into tm/855
nick1udwig Oct 8, 2025
08bc5fc
Merge pull request #865 from hyperware-ai/tm/855
nick1udwig Oct 8, 2025
adbfdcb
Merge branch 'develop' into pax/back-btn-submit-fix
nick1udwig Oct 8, 2025
2dd7a5b
Merge pull request #867 from hyperware-ai/pax/back-btn-submit-fix
nick1udwig Oct 8, 2025
74674f8
add forgotten deps
nick1udwig Oct 8, 2025
d242e36
Custom router set selection for indirect nodes, cache sources, and Ba…
dolled-possum Oct 8, 2025
2557aba
remove .eth_providers
nick1udwig Oct 8, 2025
b771efe
Merge branch 'develop' into hyperwallet_gas_fix
nick1udwig Oct 8, 2025
a213a00
Merge pull request #864 from hyperware-ai/hyperwallet_gas_fix
nick1udwig Oct 8, 2025
df5f4df
fix lto, add spider changes
nick1udwig Oct 9, 2025
4702fd5
Format Rust code using rustfmt
github-actions[bot] Oct 9, 2025
8473921
update README
nick1udwig Oct 9, 2025
b1dc2ea
update README
nick1udwig Oct 9, 2025
ed2bd3a
Merge pull request #870 from hyperware-ai/hf/fix-lto
nick1udwig Oct 10, 2025
f72b111
eth: rewrite some possible deadlocks
nick1udwig Oct 10, 2025
b43481e
Format Rust code using rustfmt
github-actions[bot] Oct 10, 2025
25dbd0e
eth: remove possible deadlock
nick1udwig Oct 10, 2025
cd7a89c
eth: add minor nit cleanup
nick1udwig Oct 10, 2025
be7d8b8
eth: fix some more potential deadlocks
nick1udwig Oct 10, 2025
e7e2fea
eth: remove some more potential deadlocks
nick1udwig Oct 10, 2025
5238ebf
eth: fix another potential deadlock
nick1udwig Oct 10, 2025
67bdd37
eth: dont change provider order on sub
nick1udwig Oct 13, 2025
d08bd7e
eth: simplify modifying provider node state
nick1udwig Oct 13, 2025
2d4fd47
eth: notify on more sub errors
nick1udwig Oct 13, 2025
a4ca4d8
added support for building core packages in parallel with ryon
Gohlub Oct 14, 2025
46764fd
Format Rust code using rustfmt
github-actions[bot] Oct 14, 2025
1c68ac3
kernel: remove temp_dir
nick1udwig Oct 15, 2025
64d716d
Format Rust code using rustfmt
github-actions[bot] Oct 15, 2025
35f16a1
Merge pull request #876 from hyperware-ai/hf/remove-temp-dir
nick1udwig Oct 15, 2025
6bfb99f
kernel: improve Restart exp backoff
nick1udwig Oct 16, 2025
636c115
register-ui: fix "Enter" behavior
nick1udwig Oct 17, 2025
230f3d1
build-packages: always use rayon parallelism
nick1udwig Oct 17, 2025
1440ff5
Format Rust code using rustfmt
github-actions[bot] Oct 17, 2025
b723950
Merge pull request #874 from hyperware-ai/fix/parallel-build-packages
nick1udwig Oct 17, 2025
8f44626
Merge branch 'develop' into hf/dont-deadlock
nick1udwig Oct 17, 2025
da2c240
Merge pull request #871 from hyperware-ai/hf/dont-deadlock
nick1udwig Oct 17, 2025
e3a65ff
Merge branch 'develop' into hf/eth-dont-change-provider-order
nick1udwig Oct 17, 2025
481e044
Merge pull request #872 from hyperware-ai/hf/eth-dont-change-provider…
nick1udwig Oct 17, 2025
ae864bd
Merge branch 'develop' into hf/eth-sub-notify-on-more-errors
nick1udwig Oct 17, 2025
f2d7226
Merge pull request #873 from hyperware-ai/hf/eth-sub-notify-on-more-e…
nick1udwig Oct 17, 2025
ad885a6
build-packages: use kit with improved build freshness detection (stil…
nick1udwig Oct 23, 2025
0f88588
app-store: fix public refresh & app links
nick1udwig Oct 23, 2025
af747cb
Merge pull request #878 from hyperware-ai/hf/app-store-fix-public-ref…
nick1udwig Oct 23, 2025
d1d0729
app-store: fix autodownload
nick1udwig Oct 23, 2025
f6e65a5
terminal: add new "event loop (no logging)" verbosity level
nick1udwig Oct 24, 2025
834b249
Merge pull request #880 from hyperware-ai/hf/add-event-loop-no-logging
nick1udwig Oct 24, 2025
2d42915
Merge pull request #879 from hyperware-ai/hf/app-store-fix-autodownload
nick1udwig Oct 24, 2025
4515487
Merge pull request #877 from hyperware-ai/hf/kernel-fix-restart-backoff
nick1udwig Oct 24, 2025
ff855cb
Merge branch 'develop' into hf/change-multicall-to-initialize-first
nick1udwig Oct 27, 2025
c861a3f
register-ui: fix some ui bugs
nick1udwig Oct 28, 2025
7e29d4f
improve public app store; improve notifs; fix file-explorer
nick1udwig Oct 28, 2025
816aaa2
Merge pull request #826 from hyperware-ai/hf/change-multicall-to-init…
nick1udwig Oct 28, 2025
7fa70d8
bump version to 1.8.0
nick1udwig Oct 28, 2025
6156ee6
Merge pull request #848 from hyperware-ai/develop
nick1udwig Oct 28, 2025
9c96507
fix simulation-mode building
nick1udwig Oct 29, 2025
b875743
Merge pull request #882 from hyperware-ai/develop
nick1udwig Nov 3, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
367 changes: 98 additions & 269 deletions Cargo.lock

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[package]
name = "hyperdrive_lib"
authors = ["Sybil Technologies AG"]
version = "1.7.0"
version = "1.8.0"
edition = "2021"
description = "A general-purpose sovereign cloud computing platform"
homepage = "https://hyperware.ai"
Expand Down
7 changes: 5 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,12 @@ On certain operating systems, you may need to install these dependencies if they
- openssl-sys: https://docs.rs/crate/openssl-sys/0.9.19
- libclang 5.0: https://rust-lang.github.io/rust-bindgen/requirements.html

Rust must be between versions 1.81 and 1.85.1.
Rust must be version 1.85.1.

```bash
# Clone the repo.

git clone --recurse-submodules git@github.com:hyperware-ai/hyperware.git
git clone --recurse-submodules https://github.com/hyperware-ai/hyperdrive

# Install Rust and some `cargo` tools so we can build the runtime and Wasm.

Expand All @@ -51,9 +51,12 @@ rustup target add wasm32-wasip1
# The compiled packages will be at `hyperdrive/target/packages.zip`.
# The compiled binary will be at `hyperdrive/target/debug/hyperdrive`.
# OPTIONAL: --release flag (slower build; faster runtime; binary at `hyperdrive/target/release/hyperdrive`).
# OPTIONAL: --parallel flag to build packages in parallel (faster but uses more resources).

cd hyperdrive
cargo run -p build-packages
# OR for parallel builds:
# cargo run -p build-packages -- --parallel
# OPTIONAL: --release flag
cargo build -p hyperdrive
```
Expand Down
5 changes: 4 additions & 1 deletion hyperdrive/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[package]
name = "hyperdrive"
authors = ["Sybil Technologies AG"]
version = "1.7.0"
version = "1.8.0"
edition = "2021"
description = "A general-purpose sovereign cloud computing platform"
homepage = "https://hyperware.ai"
Expand Down Expand Up @@ -44,10 +44,12 @@ anyhow = "1.0.71"
argon2 = "0.5.3"
base64 = "0.22.0"
bincode = "1.3.3"
bytes = "1.10.1"
chrono = "0.4.31"
clap = { version = "4.4", features = ["derive"] }
crossterm = { version = "0.27.0", features = ["event-stream", "bracketed-paste"] }
dashmap = "5.5.3"
dirs = "5.0"
futures = "0.3"
generic-array = "0.14.7"
hex = "0.4.3"
Expand Down Expand Up @@ -86,5 +88,6 @@ url = "2.4.1"
warp = "0.3.5"
wasmtime = "33.0.0"
wasmtime-wasi = "33.0.0"
wasmtime-wasi-io = "33.0.0"
web-push = "0.10"
zip = "1.1.1"
6 changes: 3 additions & 3 deletions hyperdrive/packages/app-store/app-store/src/http_api.rs
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@ fn make_widget() -> String {
<h3>Top Apps</h3>
<div id="latest-apps"></div>
<script>

class HWProtocolWatcher {
constructor() {
this.isListening = false;
Expand Down Expand Up @@ -245,7 +245,7 @@ if (typeof document !== 'undefined') {
}
}




</script>
Expand Down Expand Up @@ -394,7 +394,7 @@ fn serve_public_ui(http_server: &mut server::HttpServer) {
http_server
.serve_ui(
"public-ui",
vec!["/public"],
vec!["/public", "/public/app", "/public/app/:id"],
server::HttpBindingConfig::default().authenticated(false),
)
.expect("failed to serve static public UI");
Expand Down
40 changes: 32 additions & 8 deletions hyperdrive/packages/app-store/downloads/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -459,14 +459,33 @@ fn handle_message(
return Ok(());
};

let download_from = metadata.properties.mirrors
let mut mirror_candidates: Vec<String> = Vec::new();
let mut seen = HashSet::new();

if !metadata.properties.publisher.is_empty()
&& seen.insert(metadata.properties.publisher.clone())
{
mirror_candidates.push(metadata.properties.publisher.clone());
}

for mirror in &metadata.properties.mirrors {
if mirror.is_empty() {
continue;
}
if seen.insert(mirror.clone()) {
mirror_candidates.push(mirror.clone());
}
}

let download_from = mirror_candidates
.first()
.ok_or_else(||
.ok_or_else(|| {
anyhow::anyhow!(
"auto_update: error for package_id: {}, current_version: {}, no mirrors found",
process_lib_package_id.to_string(), current_version
process_lib_package_id.to_string(),
current_version
)
)?
})?
.to_string();

print_to_terminal(
Expand All @@ -479,10 +498,15 @@ fn handle_message(

// Initialize auto-update status with mirrors
let key = (process_lib_package_id.clone(), version_hash.clone());
let mirrors_left = if mirror_candidates.len() > 1 {
mirror_candidates[1..].to_vec()
} else {
Vec::new()
};
auto_updates.insert(
key,
AutoUpdateStatus {
mirrors_left: metadata.properties.mirrors[1..].to_vec(),
mirrors_left,
mirrors_failed: Vec::new(),
active_mirror: download_from.clone(),
},
Expand Down Expand Up @@ -642,21 +666,21 @@ fn try_next_mirror(
metadata
.mirrors_failed
.push((metadata.active_mirror.clone(), error));
metadata.mirrors_left = metadata.mirrors_left[1..].to_vec();

let (package_id, version_hash) = key.clone();

match metadata.mirrors_left.iter().next().cloned() {
match metadata.mirrors_left.first().cloned() {
Some(next_mirror) => {
metadata.active_mirror = next_mirror.clone();
metadata.mirrors_left.remove(0);
auto_updates.insert(key, metadata);
Request::to(("our", "downloads", "app-store", "sys"))
.body(
serde_json::to_vec(&DownloadRequest::LocalDownload(LocalDownloadRequest {
package_id: crate::hyperware::process::main::PackageId::from_process_lib(
package_id,
),
download_from: next_mirror,
download_from: next_mirror.clone(),
desired_version_hash: version_hash.clone(),
}))
.unwrap(),
Expand Down
26 changes: 25 additions & 1 deletion hyperdrive/packages/app-store/public-ui/src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,33 @@ const BASE_URL = import.meta.env.BASE_URL;
if (window.our) window.our.process = BASE_URL?.replace("/", "");

function App() {
const trimmedBase =
!BASE_URL || BASE_URL === "/"
? ""
: BASE_URL.endsWith("/")
? BASE_URL.slice(0, -1)
: BASE_URL;
const normalizedBase =
trimmedBase.length === 0
? "/"
: trimmedBase.startsWith("/")
? trimmedBase
: `/${trimmedBase}`;

const getBasename = () => {
const path = window.location.pathname;
if (
normalizedBase !== "/" &&
path.startsWith(normalizedBase)
) {
return normalizedBase;
}
return "/";
};

return (
<div className="bg-white dark:bg-stone grow self-stretch min-h-screen px-4 pb-32 md:pb-0 md:px-0 overflow-y-auto">
<Router basename={BASE_URL}>
<Router basename={getBasename()}>
<NavBar />
<Routes>
<Route path={STORE_PATH} element={<Home />} />
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import React, { useEffect, useState } from "react";
import { useParams } from "react-router-dom";
import type { AppListing } from "../types/app";
import { FaChevronDown, FaChevronRight } from "react-icons/fa6";
import { FaChevronDown, FaChevronRight, FaXmark } from "react-icons/fa6";
import classNames from "classnames";

const mockApp: AppListing = {
Expand Down Expand Up @@ -33,10 +33,11 @@ export default function AppDetail() {
const [app, setApp] = useState<AppListing | null>(null);
const [isLoading, setIsLoading] = useState(true);
const [error, setError] = useState<string | null>(null);
const [showScreenshots, setShowScreenshots] = useState(false);
const [showScreenshots, setShowScreenshots] = useState(true);
const [isDevMode, setIsDevMode] = useState(false);
const [backtickPressCount, setBacktickPressCount] = useState(0);
const [detailExpanded, setDetailExpanded] = useState(false);
const [activeScreenshot, setActiveScreenshot] = useState<string | null>(null);
useEffect(() => {
const backTickCounter = (e: KeyboardEvent) => {
if (e.key === '`') {
Expand All @@ -54,17 +55,30 @@ export default function AppDetail() {
}
}, [backtickPressCount]);

const derivedId = React.useMemo(() => {
if (id) return id;
const match = window.location.pathname.match(/\/app\/([^/?#]+)/);
if (match && match[1]) {
return decodeURIComponent(match[1]);
}
return undefined;
}, [id]);

useEffect(() => {
const loadApp = async () => {
if (!id) return;
if (!derivedId) {
setIsLoading(false);
return;
}
setIsLoading(true);
setError(null);

try {
if (isDevMode) {
setApp(mockApp);
} else {
const response = await fetch(`/main:app-store:sys/apps-public/${id}`);
const encodedId = encodeURIComponent(derivedId).replace(/%3A/g, ":");
const response = await fetch(`/main:app-store:sys/apps-public/${encodedId}`);
if (!response.ok) {
throw new Error('Failed to fetch app details');
}
Expand All @@ -81,7 +95,7 @@ export default function AppDetail() {

loadApp();
window.scrollTo(0, 0);
}, [id, isDevMode]);
}, [derivedId, isDevMode]);

if (isLoading) {
return (
Expand All @@ -102,7 +116,7 @@ export default function AppDetail() {
if (!app) {
return (
<div className="max-w-screen md:max-w-screen-md mx-auto flex flex-col items-center justify-center min-h-96">
<div>App details not found for {id}</div>
<div>App details not found for {derivedId ?? "unknown app"}</div>
</div>
);
}
Expand All @@ -113,6 +127,9 @@ export default function AppDetail() {

const hasScreenshots = (app.metadata?.properties?.screenshots &&
app.metadata.properties.screenshots.length > 0) || isDevMode;
const screenshots = isDevMode
? mockApp.metadata!.properties!.screenshots!
: (app.metadata?.properties?.screenshots ?? []);

return (
<div className="max-w-screen md:max-w-screen-md mx-auto flex flex-col items-stretch gap-4">
Expand Down Expand Up @@ -201,20 +218,45 @@ export default function AppDetail() {

{showScreenshots && (
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
{(isDevMode ? mockApp.metadata!.properties!.screenshots! : app.metadata?.properties?.screenshots || []).map((screenshot: string, index: number) => (
{screenshots.map((screenshot: string, index: number) => (
<img
key={index}
src={screenshot}
alt={`Screenshot ${index + 1}`}
className="rounded-lg w-full h-auto object-cover aspect-video max-h-64 hover:scale-105 transition-transform cursor-pointer"
loading="lazy"
onClick={() => window.open(screenshot, '_blank')}
onClick={() => setActiveScreenshot(screenshot)}
/>
))}
</div>
)}
</div>
)}
{activeScreenshot && (
<div
className="fixed inset-0 z-50 flex items-center justify-center bg-black/80 p-4"
onClick={() => setActiveScreenshot(null)}
>
<div
className="relative max-w-5xl max-h-[90vh] flex items-center justify-center"
onClick={event => event.stopPropagation()}
>
<button
type="button"
className="absolute top-2 right-2 bg-black/60 text-white rounded-full p-2 hover:bg-black/80 transition-colors"
onClick={() => setActiveScreenshot(null)}
aria-label="Close screenshot preview"
>
<FaXmark size={18} />
</button>
<img
src={activeScreenshot}
alt="Selected app screenshot"
className="max-h-[85vh] w-auto max-w-full rounded-lg shadow-2xl"
/>
</div>
</div>
)}

<div className={classNames("bg-black/10 dark:bg-white/10 rounded-lg p-4 flex flex-col transition-all duration-300", {
'gap-4': detailExpanded,
Expand Down
15 changes: 13 additions & 2 deletions hyperdrive/packages/app-store/ui/src/abis/helpers.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { multicallAbi, hypermapAbi, mechAbi, HYPERMAP, MULTICALL, HYPER_ACCOUNT_UPGRADABLE_IMPL } from "./";
import { encodeFunctionData, encodePacked, stringToHex } from "viem";

export function encodeMulticalls(metadataUri: string, metadataHash: string) {
export function encodeMulticalls(metadataUri: string, metadataHash: string, tbaAddress?: `0x${string}`) {
const metadataHashCall = encodeFunctionData({
abi: hypermapAbi,
functionName: 'note',
Expand All @@ -20,11 +20,22 @@ export function encodeMulticalls(metadataUri: string, metadataHash: string) {
]
})

const calls = [
// Add initialize call if TBA address is provided
const initializeCall = tbaAddress ? encodeFunctionData({
abi: [{"inputs":[],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"}],
functionName: 'initialize',
args: []
}) : null;

const baseCalls = [
{ target: HYPERMAP, callData: metadataHashCall },
{ target: HYPERMAP, callData: metadataUriCall },
];

const calls = initializeCall && tbaAddress ?
[{ target: tbaAddress, callData: initializeCall }, ...baseCalls] :
baseCalls;

const multicall = encodeFunctionData({
abi: multicallAbi,
functionName: 'aggregate',
Expand Down
4 changes: 4 additions & 0 deletions hyperdrive/packages/app-store/ui/src/abis/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,10 @@ export const HYPERMAP: `0x${string}` = "0x000000000044C6B8Cb4d8f0F889a3E47664EAe
export const MULTICALL: `0x${string}` = "0xcA11bde05977b3631167028862bE2a173976CA11";
export const HYPER_ACCOUNT_IMPL: `0x${string}` = "0x0000000000EDAd72076CBe7b9Cfa3751D5a85C97";
export const HYPER_ACCOUNT_UPGRADABLE_IMPL: `0x${string}` = "0x0000000000691b70A051CFAF82F9622E150369f3";
export const ERC6551_REGISTRY = '0x000000006551c19487814612e58FE06813775758';

// HyperAccountProxy creation code
export const PROXY_CREATION_CODE = '0x60a0604052348015600e575f5ffd5b50604051610506380380610506833981016040819052602b916044565b6001600160a01b03166080525f805460ff19169055606f565b5f602082840312156053575f5ffd5b81516001600160a01b03811681146068575f5ffd5b9392505050565b6080516104806100865f395f606201526104805ff3fe608060405260043610610021575f3560e01c8063d1f578941461003257610028565b3661002857005b610030610045565b005b610030610040366004610363565b610057565b610055610050610111565b610148565b565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146100be575f5460ff161561009e57610099610045565b6100be565b60405163572190d160e01b81523360048201526024015b60405180910390fd5b5f5460ff16156100e05760405162dc149f60e41b815260040160405180910390fd5b5f6100e9610111565b6001600160a01b03160361010d575f805460ff1916600117905561010d8282610166565b5050565b5f6101437f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e808015610162573d5ff35b3d5ffd5b61016f826101c0565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156101b8576101b38282610236565b505050565b61010d6102a8565b806001600160a01b03163b5f036101f557604051634c9c8ce360e01b81526001600160a01b03821660048201526024016100b5565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b0316846040516102529190610434565b5f60405180830381855af49150503d805f811461028a576040519150601f19603f3d011682016040523d82523d5f602084013e61028f565b606091505b509150915061029f8583836102c7565b95945050505050565b34156100555760405163b398979f60e01b815260040160405180910390fd5b6060826102dc576102d782610326565b61031f565b81511580156102f357506001600160a01b0384163b155b1561031c57604051639996b31560e01b81526001600160a01b03851660048201526024016100b5565b50805b9392505050565b8051156103365780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b634e487b7160e01b5f52604160045260245ffd5b5f5f60408385031215610374575f5ffd5b82356001600160a01b038116811461038a575f5ffd5b9150602083013567ffffffffffffffff8111156103a5575f5ffd5b8301601f810185136103b5575f5ffd5b803567ffffffffffffffff8111156103cf576103cf61034f565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156103fe576103fe61034f565b604052818152828201602001871015610415575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f92019182525091905056fea2646970667358221220117e3d359e3a2bb948f5bdb70d5aeec72a9db4978309bed659036d34fc5d4f6c64736f6c634300081b0033';


export const multicallAbi = parseAbi([
Expand Down
Loading
Loading