diff --git a/explorer/.prettierignore b/explorer/.prettierignore
index dc71b51cba..6a5e22c95c 100644
--- a/explorer/.prettierignore
+++ b/explorer/.prettierignore
@@ -1,3 +1,2 @@
build
-wasm
src/serumMarketRegistry.ts
diff --git a/explorer/config-overrides.js b/explorer/config-overrides.js
deleted file mode 100644
index 3ec37c8916..0000000000
--- a/explorer/config-overrides.js
+++ /dev/null
@@ -1,25 +0,0 @@
-const path = require("path");
-
-module.exports = function override(config, env) {
- const wasmExtensionRegExp = /\.wasm$/;
-
- config.resolve.extensions.push(".wasm");
-
- config.module.rules.forEach((rule) => {
- (rule.oneOf || []).forEach((oneOf) => {
- if (oneOf.loader && oneOf.loader.indexOf("file-loader") >= 0) {
- // Make file-loader ignore WASM files
- oneOf.exclude.push(wasmExtensionRegExp);
- }
- });
- });
-
- // Add a dedicated loader for WASM
- config.module.rules.push({
- test: wasmExtensionRegExp,
- include: path.resolve(__dirname, "src"),
- use: [{ loader: require.resolve("wasm-loader"), options: {} }],
- });
-
- return config;
-};
diff --git a/explorer/package-lock.json b/explorer/package-lock.json
index 63fd7461f7..38cd279818 100644
--- a/explorer/package-lock.json
+++ b/explorer/package-lock.json
@@ -13107,11 +13107,6 @@
"resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.0.tgz",
"integrity": "sha512-i2sY04nal5jDcagM3FMfG++T69GEEM8CYuOfeOIvmXzOIcwE9a/CJPR0MFM97pYMj/u10lzz7/zd7+qwhrBTqQ=="
},
- "long": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz",
- "integrity": "sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s="
- },
"loose-envify": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
@@ -16020,14 +16015,6 @@
}
}
},
- "react-app-rewired": {
- "version": "2.1.6",
- "resolved": "https://registry.npmjs.org/react-app-rewired/-/react-app-rewired-2.1.6.tgz",
- "integrity": "sha512-06flj0kK5tf/RN4naRv/sn6j3sQd7rsURoRLKLpffXDzJeNiAaTNic+0I8Basojy5WDwREkTqrMLewSAjcb13w==",
- "requires": {
- "semver": "^5.6.0"
- }
- },
"react-chartjs-2": {
"version": "2.10.0",
"resolved": "https://registry.npmjs.org/react-chartjs-2/-/react-chartjs-2-2.10.0.tgz",
@@ -17927,9 +17914,6 @@
}
}
},
- "solana-sdk-wasm": {
- "version": "file:wasm/pkg"
- },
"sort-keys": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz",
@@ -19446,34 +19430,6 @@
"loose-envify": "^1.0.0"
}
},
- "wasm-dce": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wasm-dce/-/wasm-dce-1.0.2.tgz",
- "integrity": "sha512-Fq1+nu43ybsjSnBquLrW/cULmKs61qbv9k8ep13QUe0nABBezMoNAA+j6QY66MW0/eoDVDp1rjXDqQ2VKyS/Xg==",
- "requires": {
- "@babel/core": "^7.0.0-beta.39",
- "@babel/traverse": "^7.0.0-beta.39",
- "@babel/types": "^7.0.0-beta.39",
- "babylon": "^7.0.0-beta.39",
- "webassembly-interpreter": "0.0.30"
- },
- "dependencies": {
- "babylon": {
- "version": "7.0.0-beta.47",
- "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.47.tgz",
- "integrity": "sha512-+rq2cr4GDhtToEzKFD6KZZMDBXhjFAr9JjPw9pAppZACeEWqNM294j+NdBzkSHYXwzzBmVjZ3nEVJlOhbR2gOQ=="
- }
- }
- },
- "wasm-loader": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/wasm-loader/-/wasm-loader-1.3.0.tgz",
- "integrity": "sha512-R4s75XH+o8qM+WaRrAU9S2rbAMDzob18/S3V8R9ZoFpZkPWLAohWWlzWAp1ybeTkOuuku/X1zJtxiV0pBYxZww==",
- "requires": {
- "loader-utils": "^1.1.0",
- "wasm-dce": "^1.0.0"
- }
- },
"watchpack": {
"version": "1.7.4",
"resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.4.tgz",
@@ -19711,21 +19667,6 @@
"minimalistic-assert": "^1.0.0"
}
},
- "webassembly-floating-point-hex-parser": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/webassembly-floating-point-hex-parser/-/webassembly-floating-point-hex-parser-0.1.2.tgz",
- "integrity": "sha512-TUf1H++8U10+stJbFydnvrpG5Sznz5Rilez/oZlV5zI0C/e4cSxd8rALAJ8VpTvjVWxLmL3SVSJUK6Ap9AoiNg=="
- },
- "webassembly-interpreter": {
- "version": "0.0.30",
- "resolved": "https://registry.npmjs.org/webassembly-interpreter/-/webassembly-interpreter-0.0.30.tgz",
- "integrity": "sha512-+Jdy2piEvz9T5j751mOE8+rBO12p+nNW6Fg4kJZ+zP1oUfsm+151sbAbM8AFxWTURmWCGP+r8Lxwfv3pzN1bCQ==",
- "requires": {
- "@babel/code-frame": "^7.0.0-beta.36",
- "long": "^3.2.0",
- "webassembly-floating-point-hex-parser": "0.1.2"
- }
- },
"webidl-conversions": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz",
diff --git a/explorer/package.json b/explorer/package.json
index a9c3474a65..853a665e45 100644
--- a/explorer/package.json
+++ b/explorer/package.json
@@ -31,22 +31,19 @@
"node-sass": "^4.14.1",
"prettier": "^2.1.2",
"react": "^16.14.0",
- "react-app-rewired": "^2.1.6",
"react-chartjs-2": "^2.10.0",
"react-countup": "^4.3.3",
"react-dom": "^16.14.0",
"react-router-dom": "^5.2.0",
"react-scripts": "^4.0.0",
"react-select": "^3.1.0",
- "solana-sdk-wasm": "file:wasm/pkg",
"superstruct": "github:solana-labs/superstruct",
- "typescript": "^4.0.5",
- "wasm-loader": "^1.3.0"
+ "typescript": "^4.0.5"
},
"scripts": {
- "start": "react-app-rewired start",
- "build": "react-app-rewired build",
- "test": "react-app-rewired test",
+ "start": "react-scripts start",
+ "build": "react-scripts build",
+ "test": "react-scripts test",
"format": "prettier -c \"**/*.+(js|jsx|ts|tsx|json|css|md)\"",
"format:fix": "prettier --write \"**/*.+(js|jsx|ts|tsx|json|css|md)\""
},
diff --git a/explorer/src/components/account/StakeAccountSection.tsx b/explorer/src/components/account/StakeAccountSection.tsx
index 1c911c40f5..fe524eba3c 100644
--- a/explorer/src/components/account/StakeAccountSection.tsx
+++ b/explorer/src/components/account/StakeAccountSection.tsx
@@ -1,5 +1,4 @@
import React from "react";
-import { StakeAccount as StakeAccountWasm, Meta } from "solana-sdk-wasm";
import { TableCardBody } from "components/common/TableCardBody";
import { lamportsToSolString } from "utils";
import { displayTimestamp } from "utils/date";
@@ -22,7 +21,7 @@ export function StakeAccountSection({
stakeAccountType,
}: {
account: Account;
- stakeAccount: StakeAccountInfo | StakeAccountWasm;
+ stakeAccount: StakeAccountInfo;
stakeAccountType: StakeAccountType;
activation?: StakeActivationData;
}) {
@@ -48,11 +47,7 @@ export function StakeAccountSection({
);
}
-function LockupCard({
- stakeAccount,
-}: {
- stakeAccount: StakeAccountInfo | StakeAccountWasm;
-}) {
+function LockupCard({ stakeAccount }: { stakeAccount: StakeAccountInfo }) {
const unixTimestamp = stakeAccount.meta?.lockup.unixTimestamp;
if (unixTimestamp && unixTimestamp > 0) {
const prettyTimestamp = displayTimestamp(unixTimestamp * 1000);
@@ -79,7 +74,7 @@ function OverviewCard({
stakeAccountType,
}: {
account: Account;
- stakeAccount: StakeAccountInfo | StakeAccountWasm;
+ stakeAccount: StakeAccountInfo;
stakeAccountType: StakeAccountType;
}) {
const refresh = useFetchAccountInfo();
@@ -135,7 +130,7 @@ function DelegationCard({
stakeAccountType,
activation,
}: {
- stakeAccount: StakeAccountInfo | StakeAccountWasm;
+ stakeAccount: StakeAccountInfo;
stakeAccountType: StakeAccountType;
activation?: StakeActivationData;
}) {
@@ -152,28 +147,15 @@ function DelegationCard({
};
let voterPubkey, activationEpoch, deactivationEpoch;
- if ("accountType" in stakeAccount) {
- const delegation = stakeAccount?.stake?.delegation;
- if (delegation) {
- voterPubkey = delegation.voterPubkey;
- activationEpoch = delegation.isBootstrapStake()
- ? "-"
- : delegation.activationEpoch;
- deactivationEpoch = delegation.isDeactivated()
- ? delegation.deactivationEpoch
- : "-";
- }
- } else {
- const delegation = stakeAccount?.stake?.delegation;
- if (delegation) {
- voterPubkey = delegation.voter;
- activationEpoch = delegation.activationEpoch.eq(MAX_EPOCH)
- ? "-"
- : delegation.activationEpoch.toString();
- deactivationEpoch = delegation.deactivationEpoch.eq(MAX_EPOCH)
- ? "-"
- : delegation.deactivationEpoch.toString();
- }
+ const delegation = stakeAccount?.stake?.delegation;
+ if (delegation) {
+ voterPubkey = delegation.voter;
+ activationEpoch = delegation.activationEpoch.eq(MAX_EPOCH)
+ ? "-"
+ : delegation.activationEpoch.toString();
+ deactivationEpoch = delegation.deactivationEpoch.eq(MAX_EPOCH)
+ ? "-"
+ : delegation.deactivationEpoch.toString();
}
const { stake } = stakeAccount;
@@ -242,7 +224,7 @@ function DelegationCard({
);
}
-function AuthoritiesCard({ meta }: { meta: Meta | StakeMeta }) {
+function AuthoritiesCard({ meta }: { meta: StakeMeta }) {
const hasLockup = meta && meta.lockup.unixTimestamp > 0;
return (
diff --git a/explorer/src/components/common/Address.tsx b/explorer/src/components/common/Address.tsx
index 4728328c13..60c2d16bdf 100644
--- a/explorer/src/components/common/Address.tsx
+++ b/explorer/src/components/common/Address.tsx
@@ -3,12 +3,11 @@ import { Link } from "react-router-dom";
import { PublicKey } from "@solana/web3.js";
import { clusterPath } from "utils/url";
import { displayAddress } from "utils/tx";
-import { Pubkey } from "solana-sdk-wasm";
import { useCluster } from "providers/cluster";
type CopyState = "copy" | "copied";
type Props = {
- pubkey: PublicKey | Pubkey;
+ pubkey: PublicKey;
alignRight?: boolean;
link?: boolean;
raw?: boolean;
diff --git a/explorer/src/pages/AccountDetailsPage.tsx b/explorer/src/pages/AccountDetailsPage.tsx
index 2573e3be7e..23aff1cb51 100644
--- a/explorer/src/pages/AccountDetailsPage.tsx
+++ b/explorer/src/pages/AccountDetailsPage.tsx
@@ -167,21 +167,12 @@ function InfoSection({ account }: { account: Account }) {
const data = account?.details?.data;
if (data && data.program === "stake") {
- let stakeAccountType, stakeAccount;
- if ("accountType" in data.parsed) {
- stakeAccount = data.parsed;
- stakeAccountType = data.parsed.accountType as any;
- } else {
- stakeAccount = data.parsed.info;
- stakeAccountType = data.parsed.type;
- }
-
return (
);
} else if (data && data.program === "spl-token") {
diff --git a/explorer/src/providers/accounts/index.tsx b/explorer/src/providers/accounts/index.tsx
index e15af3a24d..2e61d504f3 100644
--- a/explorer/src/providers/accounts/index.tsx
+++ b/explorer/src/providers/accounts/index.tsx
@@ -1,14 +1,8 @@
import React from "react";
-import { StakeAccount as StakeAccountWasm } from "solana-sdk-wasm";
-import {
- PublicKey,
- Connection,
- StakeProgram,
- StakeActivationData,
-} from "@solana/web3.js";
+import { PublicKey, Connection, StakeActivationData } from "@solana/web3.js";
import { useCluster, Cluster } from "../cluster";
import { HistoryProvider } from "./history";
-import { TokensProvider, TOKEN_PROGRAM_ID } from "./tokens";
+import { TokensProvider } from "./tokens";
import { coerce } from "superstruct";
import { ParsedInfo } from "validators";
import { StakeAccount } from "validators/accounts/stake";
@@ -28,7 +22,7 @@ export { useAccountHistory } from "./history";
export type StakeProgramData = {
program: "stake";
- parsed: StakeAccount | StakeAccountWasm;
+ parsed: StakeAccount;
activation?: StakeActivationData;
};
@@ -137,52 +131,24 @@ async function fetchAccountInfo(
}
let data: ProgramData | undefined;
- if (result.owner.equals(StakeProgram.programId)) {
- try {
- let parsed: StakeAccount | StakeAccountWasm;
- let isDelegated: boolean = false;
- if ("parsed" in result.data) {
- const info = coerce(result.data.parsed, ParsedInfo);
- parsed = coerce(info, StakeAccount);
- isDelegated = parsed.type === "delegated";
- } else {
- const wasm = await import("solana-sdk-wasm");
- parsed = wasm.StakeAccount.fromAccountData(result.data);
- isDelegated = (parsed.accountType as any) === "delegated";
- }
-
- const activation = isDelegated
- ? await connection.getStakeActivation(pubkey)
- : undefined;
-
- data = {
- program: "stake",
- parsed,
- activation,
- };
- } catch (err) {
- reportError(err, { url, address: pubkey.toBase58() });
- // TODO store error state in Account info
- }
- } else if (
- "parsed" in result.data &&
- result.owner.equals(TOKEN_PROGRAM_ID)
- ) {
- try {
- const info = coerce(result.data.parsed, ParsedInfo);
- const parsed = coerce(info, TokenAccount);
- data = {
- program: "spl-token",
- parsed,
- };
- } catch (err) {
- reportError(err, { url, address: pubkey.toBase58() });
- // TODO store error state in Account info
- }
- } else if ("parsed" in result.data) {
+ if ("parsed" in result.data) {
try {
const info = coerce(result.data.parsed, ParsedInfo);
switch (result.data.program) {
+ case "stake": {
+ const parsed = coerce(info, StakeAccount);
+ const isDelegated = parsed.type === "delegated";
+ const activation = isDelegated
+ ? await connection.getStakeActivation(pubkey)
+ : undefined;
+
+ data = {
+ program: result.data.program,
+ parsed,
+ activation,
+ };
+ break;
+ }
case "vote":
data = {
program: result.data.program,
@@ -207,6 +173,13 @@ async function fetchAccountInfo(
parsed: coerce(info, ConfigAccount),
};
break;
+
+ case "spl-token":
+ data = {
+ program: result.data.program,
+ parsed: coerce(info, TokenAccount),
+ };
+ break;
default:
data = undefined;
}
diff --git a/explorer/wasm/.gitignore b/explorer/wasm/.gitignore
deleted file mode 100644
index 7f384f961b..0000000000
--- a/explorer/wasm/.gitignore
+++ /dev/null
@@ -1,16 +0,0 @@
-/target/
-
-**/*.rs.bk
-.cargo
-
-/config/
-
-# log files
-*.log
-log-*.txt
-log-*/
-
-# intellij files
-/.idea/
-/solana.iml
-/.vscode/
diff --git a/explorer/wasm/Cargo.lock b/explorer/wasm/Cargo.lock
deleted file mode 100644
index 5034ec3dae..0000000000
--- a/explorer/wasm/Cargo.lock
+++ /dev/null
@@ -1,179 +0,0 @@
-# This file is automatically @generated by Cargo.
-# It is not intended for manual editing.
-[[package]]
-name = "bincode"
-version = "1.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f30d3a39baa26f9651f17b375061f3233dde33424a8b72b0dbe93a68a0bc896d"
-dependencies = [
- "byteorder",
- "serde",
-]
-
-[[package]]
-name = "bs58"
-version = "0.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "476e9cd489f9e121e02ffa6014a8ef220ecb15c05ed23fc34cca13925dc283fb"
-
-[[package]]
-name = "bumpalo"
-version = "3.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "12ae9db68ad7fac5fe51304d20f016c911539251075a214f8e663babefa35187"
-
-[[package]]
-name = "byteorder"
-version = "1.3.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de"
-
-[[package]]
-name = "cfg-if"
-version = "0.1.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822"
-
-[[package]]
-name = "js-sys"
-version = "0.3.39"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fa5a448de267e7358beaf4a5d849518fe9a0c13fce7afd44b06e68550e5562a7"
-dependencies = [
- "wasm-bindgen",
-]
-
-[[package]]
-name = "lazy_static"
-version = "1.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
-
-[[package]]
-name = "log"
-version = "0.4.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7"
-dependencies = [
- "cfg-if",
-]
-
-[[package]]
-name = "proc-macro2"
-version = "1.0.12"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8872cf6f48eee44265156c111456a700ab3483686b3f96df4cf5481c89157319"
-dependencies = [
- "unicode-xid",
-]
-
-[[package]]
-name = "quote"
-version = "1.0.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "42934bc9c8ab0d3b273a16d8551c8f0fcff46be73276ca083ec2414c15c4ba5e"
-dependencies = [
- "proc-macro2",
-]
-
-[[package]]
-name = "serde"
-version = "1.0.112"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "736aac72d1eafe8e5962d1d1c3d99b0df526015ba40915cb3c49d042e92ec243"
-dependencies = [
- "serde_derive",
-]
-
-[[package]]
-name = "serde_derive"
-version = "1.0.112"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bf0343ce212ac0d3d6afd9391ac8e9c9efe06b533c8d33f660f6390cc4093f57"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
-name = "solana-sdk-wasm"
-version = "1.5.0"
-dependencies = [
- "bincode",
- "bs58",
- "js-sys",
- "serde",
- "wasm-bindgen",
-]
-
-[[package]]
-name = "syn"
-version = "1.0.21"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4696caa4048ac7ce2bcd2e484b3cef88c1004e41b8e945a277e2c25dc0b72060"
-dependencies = [
- "proc-macro2",
- "quote",
- "unicode-xid",
-]
-
-[[package]]
-name = "unicode-xid"
-version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c"
-
-[[package]]
-name = "wasm-bindgen"
-version = "0.2.62"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e3c7d40d09cdbf0f4895ae58cf57d92e1e57a9dd8ed2e8390514b54a47cc5551"
-dependencies = [
- "cfg-if",
- "wasm-bindgen-macro",
-]
-
-[[package]]
-name = "wasm-bindgen-backend"
-version = "0.2.62"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c3972e137ebf830900db522d6c8fd74d1900dcfc733462e9a12e942b00b4ac94"
-dependencies = [
- "bumpalo",
- "lazy_static",
- "log",
- "proc-macro2",
- "quote",
- "syn",
- "wasm-bindgen-shared",
-]
-
-[[package]]
-name = "wasm-bindgen-macro"
-version = "0.2.62"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2cd85aa2c579e8892442954685f0d801f9129de24fa2136b2c6a539c76b65776"
-dependencies = [
- "quote",
- "wasm-bindgen-macro-support",
-]
-
-[[package]]
-name = "wasm-bindgen-macro-support"
-version = "0.2.62"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8eb197bd3a47553334907ffd2f16507b4f4f01bbec3ac921a7719e0decdfe72a"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
- "wasm-bindgen-backend",
- "wasm-bindgen-shared",
-]
-
-[[package]]
-name = "wasm-bindgen-shared"
-version = "0.2.62"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a91c2916119c17a8e316507afaaa2dd94b47646048014bbdf6bef098c1bb58ad"
diff --git a/explorer/wasm/Cargo.toml b/explorer/wasm/Cargo.toml
deleted file mode 100644
index 6b47dd43ba..0000000000
--- a/explorer/wasm/Cargo.toml
+++ /dev/null
@@ -1,29 +0,0 @@
-[package]
-name = "solana-sdk-wasm"
-version = "1.5.0"
-description = "Solana SDK Wasm"
-authors = ["Solana Maintainers "]
-repository = "https://github.com/solana-labs/solana"
-homepage = "https://solana.com/"
-license = "Apache-2.0"
-edition = "2018"
-
-[lib]
-name = "solana_sdk_wasm"
-crate-type = ["cdylib", "rlib"]
-
-[dependencies]
-bincode = "1.2.1"
-bs58 = "0.3.1"
-serde = { version = "1.0", features = ["derive"] }
-wasm-bindgen = "0.2"
-js-sys = "0.3"
-
-[package.metadata.docs.rs]
-targets = ["x86_64-unknown-linux-gnu"]
-
-[profile.release]
-# Tell `rustc` to optimize for small code size.
-opt-level = "s"
-
-[workspace]
diff --git a/explorer/wasm/README.md b/explorer/wasm/README.md
deleted file mode 100644
index 7074e7fe6e..0000000000
--- a/explorer/wasm/README.md
+++ /dev/null
@@ -1,15 +0,0 @@
-# solana-sdk-wasm
-
-Temporary location for a Solana SDK for decoding account data in WebAssembly
-
-### Install
-
-cargo install wasm-pack
-
-### Build
-
-wasm-pack build
-
-### Release
-
-Add built files in `./pkg` to source control
\ No newline at end of file
diff --git a/explorer/wasm/pkg/package.json b/explorer/wasm/pkg/package.json
deleted file mode 100644
index be4838bad3..0000000000
--- a/explorer/wasm/pkg/package.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "name": "solana-sdk-wasm",
- "collaborators": [
- "Solana Maintainers "
- ],
- "description": "Solana SDK Wasm",
- "version": "1.4.0",
- "license": "Apache-2.0",
- "repository": {
- "type": "git",
- "url": "https://github.com/solana-labs/solana"
- },
- "files": [
- "solana_sdk_wasm_bg.wasm",
- "solana_sdk_wasm.js",
- "solana_sdk_wasm.d.ts"
- ],
- "module": "solana_sdk_wasm.js",
- "homepage": "https://solana.com/",
- "types": "solana_sdk_wasm.d.ts",
- "sideEffects": false
-}
\ No newline at end of file
diff --git a/explorer/wasm/pkg/solana_sdk_wasm.d.ts b/explorer/wasm/pkg/solana_sdk_wasm.d.ts
deleted file mode 100644
index 510281750e..0000000000
--- a/explorer/wasm/pkg/solana_sdk_wasm.d.ts
+++ /dev/null
@@ -1,140 +0,0 @@
-/* tslint:disable */
-/* eslint-disable */
-/**
-*/
-export enum StakeState {
- Uninitialized,
- Initialized,
- Delegated,
- RewardsPool,
-}
-/**
-*/
-export class Authorized {
- free(): void;
-/**
-* @returns {Pubkey}
-*/
- staker: Pubkey;
-/**
-* @returns {Pubkey}
-*/
- withdrawer: Pubkey;
-}
-/**
-*/
-export class Delegation {
- free(): void;
-/**
-* @returns {boolean}
-*/
- isBootstrapStake(): boolean;
-/**
-* @returns {boolean}
-*/
- isDeactivated(): boolean;
-/**
-* @returns {number}
-*/
- readonly activationEpoch: number;
-/**
-* @returns {number}
-*/
- readonly deactivationEpoch: number;
-/**
-* @returns {number}
-*/
- readonly stake: number;
-/**
-* @returns {Pubkey}
-*/
- readonly voterPubkey: Pubkey;
-/**
-* @returns {number}
-*/
- readonly warmupCooldownRate: number;
-}
-/**
-*/
-export class Lockup {
- free(): void;
-/**
-* custodian signature on a transaction exempts the operation from
-* lockup constraints
-* @returns {Pubkey}
-*/
- custodian: Pubkey;
-/**
-* @returns {number}
-*/
- readonly epoch: number;
-/**
-* @returns {number}
-*/
- readonly unixTimestamp: number;
-}
-/**
-*/
-export class Meta {
- free(): void;
-/**
-* @returns {Authorized}
-*/
- authorized: Authorized;
-/**
-* @returns {Lockup}
-*/
- lockup: Lockup;
-/**
-* @returns {number}
-*/
- readonly rentExemptReserve: number;
-}
-/**
-*/
-export class Pubkey {
- free(): void;
-/**
-* @returns {string}
-*/
- toBase58(): string;
-}
-/**
-*/
-export class Stake {
- free(): void;
-/**
-* @returns {number}
-*/
- readonly creditsObserved: number;
-/**
-* @returns {Delegation}
-*/
- delegation: Delegation;
-}
-/**
-*/
-export class StakeAccount {
- free(): void;
-/**
-* @param {Uint8Array} data
-* @returns {StakeAccount}
-*/
- static fromAccountData(data: Uint8Array): StakeAccount;
-/**
-* @returns {string}
-*/
- accountType(): string;
-/**
-* @returns {Meta | undefined}
-*/
- meta?: Meta;
-/**
-* @returns {Stake | undefined}
-*/
- stake?: Stake;
-/**
-* @returns {number}
-*/
- state: number;
-}
diff --git a/explorer/wasm/pkg/solana_sdk_wasm.js b/explorer/wasm/pkg/solana_sdk_wasm.js
deleted file mode 100644
index b51a09e8e7..0000000000
--- a/explorer/wasm/pkg/solana_sdk_wasm.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import * as wasm from "./solana_sdk_wasm_bg.wasm";
-export * from "./solana_sdk_wasm_bg.js";
\ No newline at end of file
diff --git a/explorer/wasm/pkg/solana_sdk_wasm_bg.d.ts b/explorer/wasm/pkg/solana_sdk_wasm_bg.d.ts
deleted file mode 100644
index a646f9608a..0000000000
--- a/explorer/wasm/pkg/solana_sdk_wasm_bg.d.ts
+++ /dev/null
@@ -1,44 +0,0 @@
-/* tslint:disable */
-/* eslint-disable */
-export const memory: WebAssembly.Memory;
-export function __wbg_stakeaccount_free(a: number): void;
-export function __wbg_get_stakeaccount_meta(a: number): number;
-export function __wbg_set_stakeaccount_meta(a: number, b: number): void;
-export function __wbg_get_stakeaccount_stake(a: number): number;
-export function __wbg_set_stakeaccount_stake(a: number, b: number): void;
-export function __wbg_get_stakeaccount_state(a: number): number;
-export function __wbg_set_stakeaccount_state(a: number, b: number): void;
-export function stakeaccount_fromAccountData(a: number, b: number): number;
-export function stakeaccount_accountType(a: number, b: number): void;
-export function __wbg_lockup_free(a: number): void;
-export function __wbg_get_lockup_custodian(a: number): number;
-export function __wbg_set_lockup_custodian(a: number, b: number): void;
-export function lockup_unix_timestamp(a: number): number;
-export function lockup_epoch(a: number): number;
-export function __wbg_pubkey_free(a: number): void;
-export function pubkey_toBase58(a: number, b: number): void;
-export function __wbg_authorized_free(a: number): void;
-export function __wbg_get_authorized_staker(a: number): number;
-export function __wbg_set_authorized_staker(a: number, b: number): void;
-export function __wbg_get_authorized_withdrawer(a: number): number;
-export function __wbg_set_authorized_withdrawer(a: number, b: number): void;
-export function __wbg_meta_free(a: number): void;
-export function __wbg_get_meta_authorized(a: number): number;
-export function __wbg_set_meta_authorized(a: number, b: number): void;
-export function __wbg_get_meta_lockup(a: number): number;
-export function __wbg_set_meta_lockup(a: number, b: number): void;
-export function meta_rent_exempt_reserve(a: number): number;
-export function __wbg_stake_free(a: number): void;
-export function __wbg_get_stake_delegation(a: number): number;
-export function __wbg_set_stake_delegation(a: number, b: number): void;
-export function stake_credits_observed(a: number): number;
-export function __wbg_delegation_free(a: number): void;
-export function delegation_voter_pubkey(a: number): number;
-export function delegation_stake(a: number): number;
-export function delegation_isBootstrapStake(a: number): number;
-export function delegation_isDeactivated(a: number): number;
-export function delegation_activation_epoch(a: number): number;
-export function delegation_deactivation_epoch(a: number): number;
-export function delegation_warmup_cooldown_rate(a: number): number;
-export function __wbindgen_malloc(a: number): number;
-export function __wbindgen_free(a: number, b: number): void;
diff --git a/explorer/wasm/pkg/solana_sdk_wasm_bg.js b/explorer/wasm/pkg/solana_sdk_wasm_bg.js
deleted file mode 100644
index 27ed5fbdbc..0000000000
--- a/explorer/wasm/pkg/solana_sdk_wasm_bg.js
+++ /dev/null
@@ -1,483 +0,0 @@
-import * as wasm from './solana_sdk_wasm_bg.wasm';
-
-const lTextDecoder = typeof TextDecoder === 'undefined' ? (0, module.require)('util').TextDecoder : TextDecoder;
-
-let cachedTextDecoder = new lTextDecoder('utf-8', { ignoreBOM: true, fatal: true });
-
-cachedTextDecoder.decode();
-
-let cachegetUint8Memory0 = null;
-function getUint8Memory0() {
- if (cachegetUint8Memory0 === null || cachegetUint8Memory0.buffer !== wasm.memory.buffer) {
- cachegetUint8Memory0 = new Uint8Array(wasm.memory.buffer);
- }
- return cachegetUint8Memory0;
-}
-
-function getStringFromWasm0(ptr, len) {
- return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len));
-}
-
-const heap = new Array(32).fill(undefined);
-
-heap.push(undefined, null, true, false);
-
-let heap_next = heap.length;
-
-function addHeapObject(obj) {
- if (heap_next === heap.length) heap.push(heap.length + 1);
- const idx = heap_next;
- heap_next = heap[idx];
-
- heap[idx] = obj;
- return idx;
-}
-
-function getObject(idx) { return heap[idx]; }
-
-function dropObject(idx) {
- if (idx < 36) return;
- heap[idx] = heap_next;
- heap_next = idx;
-}
-
-function takeObject(idx) {
- const ret = getObject(idx);
- dropObject(idx);
- return ret;
-}
-
-function isLikeNone(x) {
- return x === undefined || x === null;
-}
-
-function _assertClass(instance, klass) {
- if (!(instance instanceof klass)) {
- throw new Error(`expected instance of ${klass.name}`);
- }
- return instance.ptr;
-}
-
-let WASM_VECTOR_LEN = 0;
-
-function passArray8ToWasm0(arg, malloc) {
- const ptr = malloc(arg.length * 1);
- getUint8Memory0().set(arg, ptr / 1);
- WASM_VECTOR_LEN = arg.length;
- return ptr;
-}
-
-let cachegetInt32Memory0 = null;
-function getInt32Memory0() {
- if (cachegetInt32Memory0 === null || cachegetInt32Memory0.buffer !== wasm.memory.buffer) {
- cachegetInt32Memory0 = new Int32Array(wasm.memory.buffer);
- }
- return cachegetInt32Memory0;
-}
-/**
-*/
-export const StakeState = Object.freeze({ Uninitialized:0,Initialized:1,Delegated:2,RewardsPool:3, });
-/**
-*/
-export class Authorized {
-
- static __wrap(ptr) {
- const obj = Object.create(Authorized.prototype);
- obj.ptr = ptr;
-
- return obj;
- }
-
- free() {
- const ptr = this.ptr;
- this.ptr = 0;
-
- wasm.__wbg_authorized_free(ptr);
- }
- /**
- * @returns {Pubkey}
- */
- get staker() {
- var ret = wasm.__wbg_get_authorized_staker(this.ptr);
- return Pubkey.__wrap(ret);
- }
- /**
- * @param {Pubkey} arg0
- */
- set staker(arg0) {
- _assertClass(arg0, Pubkey);
- var ptr0 = arg0.ptr;
- arg0.ptr = 0;
- wasm.__wbg_set_authorized_staker(this.ptr, ptr0);
- }
- /**
- * @returns {Pubkey}
- */
- get withdrawer() {
- var ret = wasm.__wbg_get_authorized_withdrawer(this.ptr);
- return Pubkey.__wrap(ret);
- }
- /**
- * @param {Pubkey} arg0
- */
- set withdrawer(arg0) {
- _assertClass(arg0, Pubkey);
- var ptr0 = arg0.ptr;
- arg0.ptr = 0;
- wasm.__wbg_set_authorized_withdrawer(this.ptr, ptr0);
- }
-}
-/**
-*/
-export class Delegation {
-
- static __wrap(ptr) {
- const obj = Object.create(Delegation.prototype);
- obj.ptr = ptr;
-
- return obj;
- }
-
- free() {
- const ptr = this.ptr;
- this.ptr = 0;
-
- wasm.__wbg_delegation_free(ptr);
- }
- /**
- * @returns {Pubkey}
- */
- get voterPubkey() {
- var ret = wasm.delegation_voter_pubkey(this.ptr);
- return Pubkey.__wrap(ret);
- }
- /**
- * @returns {number}
- */
- get stake() {
- var ret = wasm.delegation_stake(this.ptr);
- return ret;
- }
- /**
- * @returns {boolean}
- */
- isBootstrapStake() {
- var ret = wasm.delegation_isBootstrapStake(this.ptr);
- return ret !== 0;
- }
- /**
- * @returns {boolean}
- */
- isDeactivated() {
- var ret = wasm.delegation_isDeactivated(this.ptr);
- return ret !== 0;
- }
- /**
- * @returns {number}
- */
- get activationEpoch() {
- var ret = wasm.delegation_activation_epoch(this.ptr);
- return ret;
- }
- /**
- * @returns {number}
- */
- get deactivationEpoch() {
- var ret = wasm.delegation_deactivation_epoch(this.ptr);
- return ret;
- }
- /**
- * @returns {number}
- */
- get warmupCooldownRate() {
- var ret = wasm.delegation_warmup_cooldown_rate(this.ptr);
- return ret;
- }
-}
-/**
-*/
-export class Lockup {
-
- static __wrap(ptr) {
- const obj = Object.create(Lockup.prototype);
- obj.ptr = ptr;
-
- return obj;
- }
-
- free() {
- const ptr = this.ptr;
- this.ptr = 0;
-
- wasm.__wbg_lockup_free(ptr);
- }
- /**
- * custodian signature on a transaction exempts the operation from
- * lockup constraints
- * @returns {Pubkey}
- */
- get custodian() {
- var ret = wasm.__wbg_get_lockup_custodian(this.ptr);
- return Pubkey.__wrap(ret);
- }
- /**
- * custodian signature on a transaction exempts the operation from
- * lockup constraints
- * @param {Pubkey} arg0
- */
- set custodian(arg0) {
- _assertClass(arg0, Pubkey);
- var ptr0 = arg0.ptr;
- arg0.ptr = 0;
- wasm.__wbg_set_lockup_custodian(this.ptr, ptr0);
- }
- /**
- * @returns {number}
- */
- get unixTimestamp() {
- var ret = wasm.lockup_unix_timestamp(this.ptr);
- return ret;
- }
- /**
- * @returns {number}
- */
- get epoch() {
- var ret = wasm.lockup_epoch(this.ptr);
- return ret;
- }
-}
-/**
-*/
-export class Meta {
-
- static __wrap(ptr) {
- const obj = Object.create(Meta.prototype);
- obj.ptr = ptr;
-
- return obj;
- }
-
- free() {
- const ptr = this.ptr;
- this.ptr = 0;
-
- wasm.__wbg_meta_free(ptr);
- }
- /**
- * @returns {Authorized}
- */
- get authorized() {
- var ret = wasm.__wbg_get_meta_authorized(this.ptr);
- return Authorized.__wrap(ret);
- }
- /**
- * @param {Authorized} arg0
- */
- set authorized(arg0) {
- _assertClass(arg0, Authorized);
- var ptr0 = arg0.ptr;
- arg0.ptr = 0;
- wasm.__wbg_set_meta_authorized(this.ptr, ptr0);
- }
- /**
- * @returns {Lockup}
- */
- get lockup() {
- var ret = wasm.__wbg_get_meta_lockup(this.ptr);
- return Lockup.__wrap(ret);
- }
- /**
- * @param {Lockup} arg0
- */
- set lockup(arg0) {
- _assertClass(arg0, Lockup);
- var ptr0 = arg0.ptr;
- arg0.ptr = 0;
- wasm.__wbg_set_meta_lockup(this.ptr, ptr0);
- }
- /**
- * @returns {number}
- */
- get rentExemptReserve() {
- var ret = wasm.meta_rent_exempt_reserve(this.ptr);
- return ret;
- }
-}
-/**
-*/
-export class Pubkey {
-
- static __wrap(ptr) {
- const obj = Object.create(Pubkey.prototype);
- obj.ptr = ptr;
-
- return obj;
- }
-
- free() {
- const ptr = this.ptr;
- this.ptr = 0;
-
- wasm.__wbg_pubkey_free(ptr);
- }
- /**
- * @returns {string}
- */
- toBase58() {
- try {
- wasm.pubkey_toBase58(8, this.ptr);
- var r0 = getInt32Memory0()[8 / 4 + 0];
- var r1 = getInt32Memory0()[8 / 4 + 1];
- return getStringFromWasm0(r0, r1);
- } finally {
- wasm.__wbindgen_free(r0, r1);
- }
- }
-}
-/**
-*/
-export class Stake {
-
- static __wrap(ptr) {
- const obj = Object.create(Stake.prototype);
- obj.ptr = ptr;
-
- return obj;
- }
-
- free() {
- const ptr = this.ptr;
- this.ptr = 0;
-
- wasm.__wbg_stake_free(ptr);
- }
- /**
- * @returns {Delegation}
- */
- get delegation() {
- var ret = wasm.__wbg_get_stake_delegation(this.ptr);
- return Delegation.__wrap(ret);
- }
- /**
- * @param {Delegation} arg0
- */
- set delegation(arg0) {
- _assertClass(arg0, Delegation);
- var ptr0 = arg0.ptr;
- arg0.ptr = 0;
- wasm.__wbg_set_stake_delegation(this.ptr, ptr0);
- }
- /**
- * @returns {number}
- */
- get creditsObserved() {
- var ret = wasm.stake_credits_observed(this.ptr);
- return ret;
- }
-}
-/**
-*/
-export class StakeAccount {
-
- static __wrap(ptr) {
- const obj = Object.create(StakeAccount.prototype);
- obj.ptr = ptr;
-
- return obj;
- }
-
- free() {
- const ptr = this.ptr;
- this.ptr = 0;
-
- wasm.__wbg_stakeaccount_free(ptr);
- }
- /**
- * @returns {Meta | undefined}
- */
- get meta() {
- var ret = wasm.__wbg_get_stakeaccount_meta(this.ptr);
- return ret === 0 ? undefined : Meta.__wrap(ret);
- }
- /**
- * @param {Meta | undefined} arg0
- */
- set meta(arg0) {
- let ptr0 = 0;
- if (!isLikeNone(arg0)) {
- _assertClass(arg0, Meta);
- ptr0 = arg0.ptr;
- arg0.ptr = 0;
- }
- wasm.__wbg_set_stakeaccount_meta(this.ptr, ptr0);
- }
- /**
- * @returns {Stake | undefined}
- */
- get stake() {
- var ret = wasm.__wbg_get_stakeaccount_stake(this.ptr);
- return ret === 0 ? undefined : Stake.__wrap(ret);
- }
- /**
- * @param {Stake | undefined} arg0
- */
- set stake(arg0) {
- let ptr0 = 0;
- if (!isLikeNone(arg0)) {
- _assertClass(arg0, Stake);
- ptr0 = arg0.ptr;
- arg0.ptr = 0;
- }
- wasm.__wbg_set_stakeaccount_stake(this.ptr, ptr0);
- }
- /**
- * @returns {number}
- */
- get state() {
- var ret = wasm.__wbg_get_stakeaccount_state(this.ptr);
- return ret >>> 0;
- }
- /**
- * @param {number} arg0
- */
- set state(arg0) {
- wasm.__wbg_set_stakeaccount_state(this.ptr, arg0);
- }
- /**
- * @param {Uint8Array} data
- * @returns {StakeAccount}
- */
- static fromAccountData(data) {
- var ptr0 = passArray8ToWasm0(data, wasm.__wbindgen_malloc);
- var len0 = WASM_VECTOR_LEN;
- var ret = wasm.stakeaccount_fromAccountData(ptr0, len0);
- return StakeAccount.__wrap(ret);
- }
- /**
- * @returns {string}
- */
- accountType() {
- try {
- wasm.stakeaccount_accountType(8, this.ptr);
- var r0 = getInt32Memory0()[8 / 4 + 0];
- var r1 = getInt32Memory0()[8 / 4 + 1];
- return getStringFromWasm0(r0, r1);
- } finally {
- wasm.__wbindgen_free(r0, r1);
- }
- }
-}
-
-export const __wbindgen_string_new = function(arg0, arg1) {
- var ret = getStringFromWasm0(arg0, arg1);
- return addHeapObject(ret);
-};
-
-export const __wbindgen_throw = function(arg0, arg1) {
- throw new Error(getStringFromWasm0(arg0, arg1));
-};
-
-export const __wbindgen_rethrow = function(arg0) {
- throw takeObject(arg0);
-};
-
diff --git a/explorer/wasm/pkg/solana_sdk_wasm_bg.wasm b/explorer/wasm/pkg/solana_sdk_wasm_bg.wasm
deleted file mode 100644
index 7f2e361953..0000000000
Binary files a/explorer/wasm/pkg/solana_sdk_wasm_bg.wasm and /dev/null differ
diff --git a/explorer/wasm/src/lib.rs b/explorer/wasm/src/lib.rs
deleted file mode 100644
index 9363333a88..0000000000
--- a/explorer/wasm/src/lib.rs
+++ /dev/null
@@ -1,3 +0,0 @@
-mod stake_account;
-
-pub use stake_account::*;
diff --git a/explorer/wasm/src/stake_account.rs b/explorer/wasm/src/stake_account.rs
deleted file mode 100644
index 5c6a299274..0000000000
--- a/explorer/wasm/src/stake_account.rs
+++ /dev/null
@@ -1,217 +0,0 @@
-use serde::{Deserialize, Serialize};
-use wasm_bindgen::prelude::*;
-
-#[derive(Serialize, Deserialize, PartialEq, Clone, Copy)]
-#[allow(clippy::large_enum_variant)]
-pub enum StakeState {
- Uninitialized,
- Initialized(Meta),
- Stake(Meta, Stake),
- RewardsPool,
-}
-
-#[wasm_bindgen(js_name = StakeState)]
-#[derive(Copy, Clone)]
-pub enum State {
- Uninitialized,
- Initialized,
- Delegated,
- RewardsPool,
-}
-
-#[wasm_bindgen]
-pub struct StakeAccount {
- pub meta: Option,
- pub stake: Option,
- pub state: State,
-}
-
-impl From for StakeAccount {
- fn from(state: StakeState) -> Self {
- match state {
- StakeState::Uninitialized => StakeAccount {
- state: State::Uninitialized,
- meta: None,
- stake: None,
- },
- StakeState::Initialized(meta) => StakeAccount {
- state: State::Initialized,
- meta: Some(meta),
- stake: None,
- },
- StakeState::Stake(meta, stake) => StakeAccount {
- state: State::Delegated,
- meta: Some(meta),
- stake: Some(stake),
- },
- StakeState::RewardsPool => StakeAccount {
- state: State::RewardsPool,
- meta: None,
- stake: None,
- },
- }
- }
-}
-
-#[wasm_bindgen]
-impl StakeAccount {
- #[wasm_bindgen(js_name = fromAccountData)]
- pub fn from_account_data(data: &[u8]) -> Result {
- let stake_state: StakeState = bincode::deserialize(data)
- .map_err(|_| JsValue::from_str("invalid stake account data"))?;
- return Ok(stake_state.into());
- }
-
- #[wasm_bindgen(js_name = accountType)]
- pub fn account_type(&self) -> String {
- match self.state {
- State::Uninitialized => "uninitialized".to_string(),
- State::Initialized => "initialized".to_string(),
- State::Delegated => "delegated".to_string(),
- State::RewardsPool => "rewardsPool".to_string(),
- }
- }
-}
-
-/// UnixTimestamp is an approximate measure of real-world time,
-/// expressed as Unix time (ie. seconds since the Unix epoch)
-pub type UnixTimestamp = i64;
-
-#[wasm_bindgen]
-#[derive(Serialize, Deserialize, PartialEq, Clone, Copy)]
-pub struct Lockup {
- /// UnixTimestamp at which this stake will allow withdrawal, or
- /// changes to authorized staker or withdrawer, unless the
- /// transaction is signed by the custodian
- unix_timestamp: UnixTimestamp,
- /// epoch height at which this stake will allow withdrawal, or
- /// changes to authorized staker or withdrawer, unless the
- /// transaction is signed by the custodian
- /// to the custodian
- epoch: Epoch,
- /// custodian signature on a transaction exempts the operation from
- /// lockup constraints
- pub custodian: Pubkey,
-}
-
-#[wasm_bindgen]
-impl Lockup {
- #[wasm_bindgen(getter = unixTimestamp)]
- pub fn unix_timestamp(&self) -> f64 {
- self.unix_timestamp as f64
- }
-
- #[wasm_bindgen(getter)]
- pub fn epoch(&self) -> f64 {
- self.epoch as f64
- }
-}
-
-/// Epoch is a unit of time a given leader schedule is honored,
-/// some number of Slots.
-pub type Epoch = u64;
-
-#[wasm_bindgen]
-#[repr(transparent)]
-#[derive(Serialize, Debug, Deserialize, Clone, Copy, Eq, PartialEq, Ord, PartialOrd, Hash)]
-pub struct Pubkey([u8; 32]);
-
-#[wasm_bindgen]
-impl Pubkey {
- #[wasm_bindgen(js_name = toBase58)]
- pub fn to_base_58(&self) -> String {
- bs58::encode(&self.0).into_string()
- }
-}
-
-#[wasm_bindgen]
-#[derive(Serialize, Deserialize, PartialEq, Clone, Copy)]
-pub struct Authorized {
- pub staker: Pubkey,
- pub withdrawer: Pubkey,
-}
-
-#[wasm_bindgen]
-#[derive(Serialize, Deserialize, PartialEq, Clone, Copy)]
-pub struct Meta {
- rent_exempt_reserve: u64,
- pub authorized: Authorized,
- pub lockup: Lockup,
-}
-
-#[wasm_bindgen]
-impl Meta {
- #[wasm_bindgen(getter = rentExemptReserve)]
- pub fn rent_exempt_reserve(&self) -> f64 {
- self.rent_exempt_reserve as f64
- }
-}
-
-#[wasm_bindgen]
-#[derive(Serialize, Deserialize, PartialEq, Clone, Copy)]
-pub struct Stake {
- pub delegation: Delegation,
- /// credits observed is credits from vote account state when delegated or redeemed
- credits_observed: u64,
-}
-
-#[wasm_bindgen]
-impl Stake {
- #[wasm_bindgen(getter = creditsObserved)]
- pub fn credits_observed(&self) -> f64 {
- self.credits_observed as f64
- }
-}
-
-#[wasm_bindgen]
-#[derive(Serialize, Debug, Deserialize, PartialEq, Clone, Copy)]
-pub struct Delegation {
- /// to whom the stake is delegated
- voter_pubkey: Pubkey,
- /// activated stake amount, set at delegate() time
- stake: u64,
- /// epoch at which this stake was activated, std::Epoch::MAX if is a bootstrap stake
- activation_epoch: Epoch,
- /// epoch the stake was deactivated, std::Epoch::MAX if not deactivated
- deactivation_epoch: Epoch,
- /// how much stake we can activate per-epoch as a fraction of currently effective stake
- warmup_cooldown_rate: f64,
-}
-
-#[wasm_bindgen]
-impl Delegation {
- #[wasm_bindgen(getter = voterPubkey)]
- pub fn voter_pubkey(&self) -> Pubkey {
- self.voter_pubkey
- }
-
- #[wasm_bindgen(getter)]
- pub fn stake(&self) -> f64 {
- self.stake as f64
- }
-
- #[wasm_bindgen(js_name = isBootstrapStake)]
- pub fn is_bootstrap_stake(&self) -> bool {
- self.activation_epoch == Epoch::MAX
- }
-
- #[wasm_bindgen(js_name = isDeactivated)]
- pub fn is_deactivated(&self) -> bool {
- self.deactivation_epoch != Epoch::MAX
- }
-
- #[wasm_bindgen(getter = activationEpoch)]
- pub fn activation_epoch(&self) -> f64 {
- self.activation_epoch as f64
- }
-
- #[wasm_bindgen(getter = deactivationEpoch)]
- pub fn deactivation_epoch(&self) -> f64 {
- self.deactivation_epoch as f64
- }
-
- #[wasm_bindgen(getter = warmupCooldownRate)]
- pub fn warmup_cooldown_rate(&self) -> f64 {
- self.warmup_cooldown_rate
- }
-}