From bc3c574bd8fb96f7f5f7e3829d0d630daef8a365 Mon Sep 17 00:00:00 2001 From: Perelyn <64838956+Perelyn-sama@users.noreply.github.com> Date: Tue, 23 Sep 2025 20:30:58 +0100 Subject: [PATCH] remove steel examples --- basics/account-data/steel/Cargo.toml | 21 - basics/account-data/steel/README.md | 25 - basics/account-data/steel/api/Cargo.toml | 11 - basics/account-data/steel/api/src/consts.rs | 2 - .../account-data/steel/api/src/instruction.rs | 19 - basics/account-data/steel/api/src/lib.rs | 16 - basics/account-data/steel/api/src/sdk.rs | 14 - basics/account-data/steel/api/src/state.rs | 55 - basics/account-data/steel/package.json | 28 - basics/account-data/steel/pnpm-lock.yaml | 1268 --------- basics/account-data/steel/program/Cargo.toml | 19 - .../steel/program/src/create_address_info.rs | 106 - .../account-data/steel/program/src/error.rs | 21 - basics/account-data/steel/program/src/lib.rs | 33 - .../steel/tests/addressInfo.test.ts | 149 - basics/account-data/steel/tsconfig.json | 10 - basics/checking-accounts/steel/.gitignore | 2 - basics/checking-accounts/steel/Cargo.toml | 21 - basics/checking-accounts/steel/README.md | 22 - basics/checking-accounts/steel/api/Cargo.toml | 11 - .../checking-accounts/steel/api/src/consts.rs | 2 - .../steel/api/src/instruction.rs | 13 - basics/checking-accounts/steel/api/src/lib.rs | 16 - basics/checking-accounts/steel/api/src/sdk.rs | 20 - .../steel/api/src/state/account_to_change.rs | 9 - .../steel/api/src/state/mod.rs | 18 - .../steel/program/Cargo.toml | 19 - .../steel/program/src/check_accounts.rs | 49 - .../steel/program/src/lib.rs | 22 - .../steel/program/tests/test.rs | 51 - basics/close-account/steel/.gitignore | 2 - basics/close-account/steel/Cargo.toml | 21 - basics/close-account/steel/README.md | 22 - basics/close-account/steel/api/Cargo.toml | 12 - basics/close-account/steel/api/src/error.rs | 18 - .../steel/api/src/instruction.rs | 25 - basics/close-account/steel/api/src/lib.rs | 18 - basics/close-account/steel/api/src/sdk.rs | 31 - .../close-account/steel/api/src/state/mod.rs | 2 - .../close-account/steel/api/src/state/user.rs | 75 - basics/close-account/steel/cicd.sh | 8 - basics/close-account/steel/package.json | 18 - basics/close-account/steel/pnpm-lock.yaml | 1249 -------- basics/close-account/steel/program/Cargo.toml | 19 - .../steel/program/src/close_user.rs | 12 - .../steel/program/src/create_user.rs | 33 - basics/close-account/steel/program/src/lib.rs | 25 - .../close-account/steel/program/tests/test.rs | 48 - .../steel/tests/close-account.test.ts | 35 - .../steel/tests/tsconfig.test.json | 10 - basics/close-account/steel/ts/index.ts | 1 - .../steel/ts/instructions/close.ts | 42 - .../steel/ts/instructions/create.ts | 55 - .../steel/ts/instructions/index.ts | 11 - basics/counter/seahorse/.gitignore | 7 - basics/counter/seahorse/.prettierignore | 8 - basics/counter/seahorse/Anchor.toml | 15 - basics/counter/seahorse/Cargo.toml | 14 - basics/counter/seahorse/README.md | 5 - basics/counter/seahorse/migrations/deploy.ts | 12 - basics/counter/seahorse/package.json | 19 - .../programs/counter_seahorse/Cargo.toml | 21 - .../programs/counter_seahorse/Xargo.toml | 2 - .../programs/counter_seahorse/src/lib.rs | 63 - .../seahorse/programs_py/counter_seahorse.py | 23 - .../seahorse/programs_py/seahorse/__init__.py | 0 .../seahorse/programs_py/seahorse/prelude.py | 330 --- .../seahorse/tests/counter_seahorse.ts | 36 - basics/counter/seahorse/tsconfig.json | 10 - basics/counter/steel/.gitignore | 2 - basics/counter/steel/Cargo.toml | 21 - basics/counter/steel/README.md | 25 - basics/counter/steel/api/Cargo.toml | 11 - basics/counter/steel/api/src/consts.rs | 2 - basics/counter/steel/api/src/instruction.rs | 21 - basics/counter/steel/api/src/lib.rs | 16 - basics/counter/steel/api/src/sdk.rs | 29 - basics/counter/steel/api/src/state.rs | 22 - basics/counter/steel/package.json | 28 - basics/counter/steel/pnpm-lock.yaml | 1268 --------- basics/counter/steel/program/Cargo.toml | 19 - basics/counter/steel/program/src/increment.rs | 28 - .../counter/steel/program/src/initialize.rs | 30 - basics/counter/steel/program/src/lib.rs | 25 - basics/counter/steel/program/tests/test.rs | 45 - basics/counter/steel/tests/main.test.ts | 103 - basics/counter/steel/tsconfig.json | 10 - basics/create-account/steel/.gitignore | 3 - basics/create-account/steel/Cargo.toml | 21 - basics/create-account/steel/README.md | 31 - basics/create-account/steel/api/Cargo.toml | 18 - basics/create-account/steel/api/src/error.rs | 12 - .../steel/api/src/instruction.rs | 18 - basics/create-account/steel/api/src/lib.rs | 15 - basics/create-account/steel/api/src/sdk.rs | 15 - basics/create-account/steel/api/src/state.rs | 17 - basics/create-account/steel/cicd.sh | 26 - basics/create-account/steel/package.json | 29 - basics/create-account/steel/pnpm-lock.yaml | 1260 --------- .../create-account/steel/program/Cargo.toml | 19 - .../steel/program/src/initialize.rs | 45 - .../create-account/steel/program/src/lib.rs | 24 - .../create-account/steel/tests/main.test.ts | 46 - basics/create-account/steel/tsconfig.json | 15 - .../cross-program-invocation/steel/README.md | 6 - .../steel/hand/.gitignore | 2 - .../steel/hand/Cargo.toml | 25 - .../steel/hand/README.md | 21 - .../steel/hand/api/Cargo.toml | 19 - .../steel/hand/api/src/instruction.rs | 15 - .../steel/hand/api/src/lib.rs | 12 - .../steel/hand/api/src/sdk.rs | 20 - .../steel/hand/program/Cargo.toml | 28 - .../steel/hand/program/src/lib.rs | 22 - .../steel/hand/program/src/pull_lever.rs | 22 - .../steel/hand/program/tests/test.rs | 51 - .../steel/lever/.gitignore | 2 - .../steel/lever/Cargo.toml | 21 - .../steel/lever/README.md | 28 - .../steel/lever/api/Cargo.toml | 18 - .../steel/lever/api/src/consts.rs | 2 - .../steel/lever/api/src/error.rs | 10 - .../steel/lever/api/src/instruction.rs | 21 - .../steel/lever/api/src/lib.rs | 20 - .../steel/lever/api/src/sdk.rs | 26 - .../steel/lever/api/src/state/mod.rs | 16 - .../steel/lever/api/src/state/power_status.rs | 11 - .../steel/lever/api/src/utils.rs | 13 - .../steel/lever/program/Cargo.toml | 30 - .../steel/lever/program/src/initialize.rs | 17 - .../steel/lever/program/src/lib.rs | 25 - .../steel/lever/program/src/switch_power.rs | 36 - .../steel/lever/program/tests/test.rs | 52 - basics/favorites/steel/.gitignore | 2 - basics/favorites/steel/Cargo.toml | 21 - basics/favorites/steel/README.md | 22 - basics/favorites/steel/api/Cargo.toml | 11 - basics/favorites/steel/api/src/consts.rs | 2 - basics/favorites/steel/api/src/error.rs | 10 - basics/favorites/steel/api/src/instruction.rs | 19 - basics/favorites/steel/api/src/lib.rs | 20 - basics/favorites/steel/api/src/sdk.rs | 24 - .../steel/api/src/state/favorites.rs | 15 - basics/favorites/steel/api/src/state/mod.rs | 18 - basics/favorites/steel/api/src/utils.rs | 85 - basics/favorites/steel/program/Cargo.toml | 19 - basics/favorites/steel/program/src/lib.rs | 22 - .../steel/program/src/set_favorites.rs | 49 - basics/favorites/steel/program/src/utils.rs | 137 - basics/favorites/steel/program/tests/test.rs | 53 - .../seahorse/hello_solana/.gitignore | 7 - .../seahorse/hello_solana/.prettierignore | 8 - .../seahorse/hello_solana/Anchor.toml | 14 - .../seahorse/hello_solana/Cargo.toml | 5 - .../seahorse/hello_solana/README.md | 5 - .../hello_solana/migrations/deploy.ts | 12 - .../seahorse/hello_solana/package.json | 19 - .../programs/hello_solana/Cargo.toml | 24 - .../programs/hello_solana/Xargo.toml | 2 - .../programs/hello_solana/src/lib.rs | 72 - .../hello_solana/programs_py/hello_solana.py | 32 - .../programs_py/seahorse/__init__.py | 0 .../programs_py/seahorse/prelude.py | 330 --- .../hello_solana/tests/hello_solana.ts | 22 - .../seahorse/hello_solana/tsconfig.json | 10 - basics/hello-solana/steel/Cargo.toml | 22 - basics/hello-solana/steel/package.json | 28 - basics/hello-solana/steel/pnpm-lock.yaml | 1336 --------- basics/hello-solana/steel/program/Cargo.toml | 11 - basics/hello-solana/steel/program/src/lib.rs | 16 - basics/hello-solana/steel/tests/index.test.ts | 36 - basics/hello-solana/steel/tsconfig.json | 10 - basics/pda-rent-payer/steel/.gitignore | 3 - basics/pda-rent-payer/steel/Cargo.toml | 22 - basics/pda-rent-payer/steel/README.md | 28 - basics/pda-rent-payer/steel/api/Cargo.toml | 19 - basics/pda-rent-payer/steel/api/src/consts.rs | 5 - basics/pda-rent-payer/steel/api/src/error.rs | 10 - .../steel/api/src/instruction.rs | 22 - basics/pda-rent-payer/steel/api/src/lib.rs | 18 - basics/pda-rent-payer/steel/api/src/sdk.rs | 26 - .../steel/api/src/state/accounts.rs | 16 - .../pda-rent-payer/steel/api/src/state/mod.rs | 19 - basics/pda-rent-payer/steel/cicd.sh | 26 - basics/pda-rent-payer/steel/package.json | 29 - basics/pda-rent-payer/steel/pnpm-lock.yaml | 1268 --------- .../pda-rent-payer/steel/program/Cargo.toml | 26 - .../steel/program/src/create_new_account.rs | 38 - .../steel/program/src/init_rent_vault.rs | 61 - .../pda-rent-payer/steel/program/src/lib.rs | 27 - .../pda-rent-payer/steel/tests/main.test.ts | 122 - basics/pda-rent-payer/steel/tsconfig.json | 15 - .../processing-instructions/steel/.gitignore | 2 - .../processing-instructions/steel/Cargo.toml | 21 - .../processing-instructions/steel/README.md | 25 - .../steel/api/Cargo.toml | 11 - .../steel/api/src/instruction.rs | 55 - .../steel/api/src/lib.rs | 12 - .../steel/api/src/sdk.rs | 11 - .../steel/package.json | 27 - .../steel/pnpm-lock.yaml | 1260 --------- .../steel/program/Cargo.toml | 19 - .../steel/program/src/go_to_the_park.rs | 27 - .../steel/program/src/lib.rs | 28 - .../steel/program/tests/test.rs | 59 - .../steel/tests/main.test.ts | 112 - .../steel/tsconfig.json | 10 - .../steel/.gitignore | 2 - .../steel/Cargo.toml | 21 - .../program-derived-addresses/steel/README.md | 25 - .../steel/api/Cargo.toml | 11 - .../steel/api/src/consts.rs | 2 - .../steel/api/src/instruction.rs | 23 - .../steel/api/src/lib.rs | 16 - .../steel/api/src/sdk.rs | 25 - .../steel/api/src/state.rs | 34 - .../steel/package.json | 28 - .../steel/pnpm-lock.yaml | 1268 --------- .../steel/program/Cargo.toml | 19 - .../steel/program/src/create.rs | 41 - .../steel/program/src/increment.rs | 19 - .../steel/program/src/lib.rs | 29 - .../steel/program/tests/test.rs | 56 - .../steel/tests/main.test.ts | 154 - .../steel/tsconfig.json | 10 - basics/realloc/steel/.gitignore | 2 - basics/realloc/steel/Cargo.toml | 21 - basics/realloc/steel/README.md | 28 - basics/realloc/steel/api/Cargo.toml | 18 - basics/realloc/steel/api/src/consts.rs | 4 - basics/realloc/steel/api/src/error.rs | 10 - basics/realloc/steel/api/src/instruction.rs | 21 - basics/realloc/steel/api/src/lib.rs | 20 - basics/realloc/steel/api/src/sdk.rs | 29 - .../steel/api/src/state/address_info.rs | 27 - .../api/src/state/enchanced_address_info.rs | 43 - basics/realloc/steel/api/src/state/mod.rs | 25 - .../realloc/steel/api/src/state/work_info.rs | 27 - basics/realloc/steel/api/src/utils.rs | 5 - basics/realloc/steel/program/Cargo.toml | 26 - basics/realloc/steel/program/src/add.rs | 22 - .../realloc/steel/program/src/initialize.rs | 28 - basics/realloc/steel/program/src/lib.rs | 25 - basics/realloc/steel/program/tests/test.rs | 46 - basics/rent/steel/.gitignore | 2 - basics/rent/steel/Cargo.toml | 21 - basics/rent/steel/README.md | 28 - basics/rent/steel/api/Cargo.toml | 18 - basics/rent/steel/api/src/error.rs | 10 - basics/rent/steel/api/src/instruction.rs | 16 - basics/rent/steel/api/src/lib.rs | 21 - basics/rent/steel/api/src/sdk.rs | 29 - basics/rent/steel/api/src/state/address.rs | 11 - basics/rent/steel/api/src/state/mod.rs | 11 - basics/rent/steel/package.json | 14 - basics/rent/steel/program/Cargo.toml | 26 - .../rent/steel/program/src/create_account.rs | 36 - basics/rent/steel/program/src/lib.rs | 21 - basics/rent/steel/program/tests/test.rs | 95 - basics/transfer-sol/seahorse/.gitignore | 7 - basics/transfer-sol/seahorse/.prettierignore | 8 - basics/transfer-sol/seahorse/Anchor.toml | 15 - basics/transfer-sol/seahorse/Cargo.toml | 14 - basics/transfer-sol/seahorse/README.md | 3 - .../seahorse/migrations/deploy.ts | 12 - basics/transfer-sol/seahorse/package.json | 19 - .../seahorse/programs/seahorse/Cargo.toml | 22 - .../seahorse/programs/seahorse/Xargo.toml | 2 - .../seahorse/programs/seahorse/src/dot/mod.rs | 1 - .../programs/seahorse/src/dot/program.rs | 74 - .../seahorse/programs/seahorse/src/lib.rs | 239 -- .../seahorse/programs_py/seahorse.py | 26 - .../seahorse/programs_py/seahorse/__init__.py | 0 .../seahorse/programs_py/seahorse/prelude.py | 1062 ------- .../transfer-sol/seahorse/tests/seahorse.ts | 35 - basics/transfer-sol/seahorse/tsconfig.json | 10 - basics/transfer-sol/steel/Cargo.toml | 21 - basics/transfer-sol/steel/README.md | 22 - basics/transfer-sol/steel/api/Cargo.toml | 11 - .../transfer-sol/steel/api/src/instruction.rs | 24 - basics/transfer-sol/steel/api/src/lib.rs | 12 - basics/transfer-sol/steel/api/src/sdk.rs | 32 - basics/transfer-sol/steel/cicd.sh | 8 - basics/transfer-sol/steel/package.json | 26 - basics/transfer-sol/steel/pnpm-lock.yaml | 1375 --------- basics/transfer-sol/steel/program/Cargo.toml | 19 - basics/transfer-sol/steel/program/src/lib.rs | 25 - .../program/src/transfer_sol_with_cpi.rs | 28 - .../program/src/transfer_sol_with_program.rs | 20 - .../transfer-sol/steel/program/tests/test.rs | 72 - .../transfer-sol/steel/tests/instruction.ts | 74 - basics/transfer-sol/steel/tests/test.ts | 96 - basics/transfer-sol/steel/tsconfig.json | 10 - oracles/pyth/seahorse/.gitignore | 7 - oracles/pyth/seahorse/.prettierignore | 8 - oracles/pyth/seahorse/Anchor.toml | 21 - oracles/pyth/seahorse/Cargo.toml | 14 - oracles/pyth/seahorse/README.md | 13 - oracles/pyth/seahorse/migrations/deploy.ts | 12 - oracles/pyth/seahorse/package.json | 19 - .../seahorse/programs/seahorse/Cargo.toml | 22 - .../seahorse/programs/seahorse/Xargo.toml | 2 - .../seahorse/programs/seahorse/src/dot/mod.rs | 1 - .../programs/seahorse/src/dot/program.rs | 52 - .../seahorse/programs/seahorse/src/lib.rs | 193 -- oracles/pyth/seahorse/programs_py/seahorse.py | 32 - .../seahorse/programs_py/seahorse/__init__.py | 0 .../seahorse/programs_py/seahorse/prelude.py | 1062 ------- .../seahorse/programs_py/seahorse/pyth.py | 56 - oracles/pyth/seahorse/tests/seahorse.ts | 23 - oracles/pyth/seahorse/tsconfig.json | 10 - tokens/create-token/steel/Cargo.toml | 24 - tokens/create-token/steel/README.md | 32 - tokens/create-token/steel/api/Cargo.toml | 20 - tokens/create-token/steel/api/src/consts.rs | 2 - tokens/create-token/steel/api/src/error.rs | 10 - .../create-token/steel/api/src/instruction.rs | 18 - tokens/create-token/steel/api/src/lib.rs | 16 - tokens/create-token/steel/api/src/sdk.rs | 39 - tokens/create-token/steel/cicd.sh | 8 - tokens/create-token/steel/package.json | 28 - tokens/create-token/steel/pnpm-lock.yaml | 1915 ------------- tokens/create-token/steel/pnpm.lock.yaml | 2520 ----------------- tokens/create-token/steel/prepare.mjs | 34 - tokens/create-token/steel/program/Cargo.toml | 30 - tokens/create-token/steel/program/build.rs | 24 - .../steel/program/src/create_token.rs | 112 - tokens/create-token/steel/program/src/lib.rs | 24 - .../create-token/steel/program/tests/test.rs | 152 - .../create-token/steel/tests/bankrun.test.ts | 123 - .../create-token/steel/tests/instructions.ts | 61 - tokens/create-token/steel/tsconfig.json | 10 - tokens/escrow/steel/Cargo.toml | 22 - tokens/escrow/steel/README.md | 40 - tokens/escrow/steel/api/Cargo.toml | 19 - tokens/escrow/steel/api/src/consts.rs | 8 - tokens/escrow/steel/api/src/instruction.rs | 23 - tokens/escrow/steel/api/src/lib.rs | 16 - tokens/escrow/steel/api/src/sdk.rs | 86 - tokens/escrow/steel/api/src/state/mod.rs | 11 - tokens/escrow/steel/api/src/state/offer.rs | 26 - tokens/escrow/steel/package.json | 31 - tokens/escrow/steel/pnpm-lock.yaml | 1463 ---------- tokens/escrow/steel/program/Cargo.toml | 27 - tokens/escrow/steel/program/src/lib.rs | 25 - tokens/escrow/steel/program/src/make_offer.rs | 80 - tokens/escrow/steel/program/src/take_offer.rs | 110 - tokens/escrow/steel/tests/bankrun.test.ts | 184 -- tokens/escrow/steel/tests/utils.ts | 116 - tokens/escrow/steel/tsconfig.json | 10 - tokens/pda-mint-authority/steel/.gitignore | 2 - tokens/pda-mint-authority/steel/Cargo.toml | 27 - tokens/pda-mint-authority/steel/README.md | 22 - .../pda-mint-authority/steel/api/Cargo.toml | 15 - .../steel/api/src/consts.rs | 5 - .../steel/api/src/instruction.rs | 31 - .../pda-mint-authority/steel/api/src/lib.rs | 16 - .../pda-mint-authority/steel/api/src/sdk.rs | 76 - .../steel/api/src/state/mint_authority.rs | 11 - .../steel/api/src/state/mod.rs | 18 - tokens/pda-mint-authority/steel/cicd.sh | 8 - tokens/pda-mint-authority/steel/package.json | 28 - .../pda-mint-authority/steel/pnpm-lock.yaml | 1860 ------------ tokens/pda-mint-authority/steel/prepare.mjs | 34 - .../steel/program/Cargo.toml | 22 - .../pda-mint-authority/steel/program/build.rs | 43 - .../steel/program/src/create.rs | 107 - .../steel/program/src/init.rs | 35 - .../steel/program/src/lib.rs | 28 - .../steel/program/src/mint.rs | 74 - .../steel/program/tests/test.rs | 69 - .../steel/tests/instructions.ts | 91 - .../pda-mint-authority/steel/tests/tests.ts | 142 - tokens/pda-mint-authority/steel/tsconfig.json | 10 - tokens/spl-token-minter/steel/.gitignore | 2 - tokens/spl-token-minter/steel/Cargo.toml | 27 - tokens/spl-token-minter/steel/README.md | 22 - tokens/spl-token-minter/steel/api/Cargo.toml | 15 - .../spl-token-minter/steel/api/src/consts.rs | 2 - .../steel/api/src/instruction.rs | 26 - tokens/spl-token-minter/steel/api/src/lib.rs | 16 - tokens/spl-token-minter/steel/api/src/sdk.rs | 59 - .../spl-token-minter/steel/api/src/utils.rs | 6 - tokens/spl-token-minter/steel/cicd.sh | 8 - tokens/spl-token-minter/steel/package.json | 28 - tokens/spl-token-minter/steel/pnpm-lock.yaml | 1860 ------------ tokens/spl-token-minter/steel/prepare.mjs | 34 - .../spl-token-minter/steel/program/Cargo.toml | 23 - .../steel/program/src/create.rs | 100 - .../spl-token-minter/steel/program/src/lib.rs | 25 - .../steel/program/src/mint.rs | 61 - .../steel/program/tests/test.rs | 58 - .../steel/tests/bankrun.test.ts | 108 - .../steel/tests/instructions.ts | 76 - tokens/spl-token-minter/steel/tsconfig.json | 10 - tokens/transfer-tokens/seahorse/.gitignore | 7 - .../transfer-tokens/seahorse/.prettierignore | 8 - tokens/transfer-tokens/seahorse/Anchor.toml | 15 - tokens/transfer-tokens/seahorse/Cargo.toml | 14 - tokens/transfer-tokens/seahorse/README.md | 5 - .../seahorse/migrations/deploy.ts | 12 - tokens/transfer-tokens/seahorse/package.json | 19 - .../seahorse/programs/seahorse/Cargo.toml | 22 - .../seahorse/programs/seahorse/Xargo.toml | 2 - .../seahorse/programs/seahorse/src/dot/mod.rs | 1 - .../programs/seahorse/src/dot/program.rs | 73 - .../seahorse/programs/seahorse/src/lib.rs | 370 --- .../seahorse/programs_py/seahorse.py | 59 - .../seahorse/programs_py/seahorse/__init__.py | 0 .../seahorse/programs_py/seahorse/prelude.py | 1062 ------- .../seahorse/tests/pyproject.toml | 2 - tokens/transfer-tokens/seahorse/tests/test.py | 79 - tokens/transfer-tokens/seahorse/tsconfig.json | 10 - tokens/transfer-tokens/steel/.gitignore | 2 - tokens/transfer-tokens/steel/Cargo.toml | 26 - tokens/transfer-tokens/steel/README.md | 22 - tokens/transfer-tokens/steel/api/Cargo.toml | 14 - .../transfer-tokens/steel/api/src/consts.rs | 2 - .../steel/api/src/instruction.rs | 35 - tokens/transfer-tokens/steel/api/src/lib.rs | 16 - tokens/transfer-tokens/steel/api/src/sdk.rs | 89 - tokens/transfer-tokens/steel/api/src/utils.rs | 6 - tokens/transfer-tokens/steel/cicd.sh | 8 - tokens/transfer-tokens/steel/package.json | 28 - tokens/transfer-tokens/steel/pnpm-lock.yaml | 2520 ----------------- tokens/transfer-tokens/steel/prepare.mjs | 34 - .../transfer-tokens/steel/program/Cargo.toml | 23 - .../steel/program/src/create.rs | 101 - .../transfer-tokens/steel/program/src/lib.rs | 28 - .../transfer-tokens/steel/program/src/mint.rs | 61 - .../steel/program/src/transfer.rs | 65 - .../steel/program/tests/test.rs | 89 - .../steel/tests/instructions.ts | 113 - tokens/transfer-tokens/steel/tests/tests.ts | 211 -- tokens/transfer-tokens/steel/tsconfig.json | 10 - 435 files changed, 40010 deletions(-) delete mode 100644 basics/account-data/steel/Cargo.toml delete mode 100644 basics/account-data/steel/README.md delete mode 100644 basics/account-data/steel/api/Cargo.toml delete mode 100644 basics/account-data/steel/api/src/consts.rs delete mode 100644 basics/account-data/steel/api/src/instruction.rs delete mode 100644 basics/account-data/steel/api/src/lib.rs delete mode 100644 basics/account-data/steel/api/src/sdk.rs delete mode 100644 basics/account-data/steel/api/src/state.rs delete mode 100644 basics/account-data/steel/package.json delete mode 100644 basics/account-data/steel/pnpm-lock.yaml delete mode 100644 basics/account-data/steel/program/Cargo.toml delete mode 100644 basics/account-data/steel/program/src/create_address_info.rs delete mode 100644 basics/account-data/steel/program/src/error.rs delete mode 100644 basics/account-data/steel/program/src/lib.rs delete mode 100644 basics/account-data/steel/tests/addressInfo.test.ts delete mode 100644 basics/account-data/steel/tsconfig.json delete mode 100644 basics/checking-accounts/steel/.gitignore delete mode 100644 basics/checking-accounts/steel/Cargo.toml delete mode 100644 basics/checking-accounts/steel/README.md delete mode 100644 basics/checking-accounts/steel/api/Cargo.toml delete mode 100644 basics/checking-accounts/steel/api/src/consts.rs delete mode 100644 basics/checking-accounts/steel/api/src/instruction.rs delete mode 100644 basics/checking-accounts/steel/api/src/lib.rs delete mode 100644 basics/checking-accounts/steel/api/src/sdk.rs delete mode 100644 basics/checking-accounts/steel/api/src/state/account_to_change.rs delete mode 100644 basics/checking-accounts/steel/api/src/state/mod.rs delete mode 100644 basics/checking-accounts/steel/program/Cargo.toml delete mode 100644 basics/checking-accounts/steel/program/src/check_accounts.rs delete mode 100644 basics/checking-accounts/steel/program/src/lib.rs delete mode 100644 basics/checking-accounts/steel/program/tests/test.rs delete mode 100644 basics/close-account/steel/.gitignore delete mode 100644 basics/close-account/steel/Cargo.toml delete mode 100644 basics/close-account/steel/README.md delete mode 100644 basics/close-account/steel/api/Cargo.toml delete mode 100644 basics/close-account/steel/api/src/error.rs delete mode 100644 basics/close-account/steel/api/src/instruction.rs delete mode 100644 basics/close-account/steel/api/src/lib.rs delete mode 100644 basics/close-account/steel/api/src/sdk.rs delete mode 100644 basics/close-account/steel/api/src/state/mod.rs delete mode 100644 basics/close-account/steel/api/src/state/user.rs delete mode 100644 basics/close-account/steel/cicd.sh delete mode 100644 basics/close-account/steel/package.json delete mode 100644 basics/close-account/steel/pnpm-lock.yaml delete mode 100644 basics/close-account/steel/program/Cargo.toml delete mode 100644 basics/close-account/steel/program/src/close_user.rs delete mode 100644 basics/close-account/steel/program/src/create_user.rs delete mode 100644 basics/close-account/steel/program/src/lib.rs delete mode 100644 basics/close-account/steel/program/tests/test.rs delete mode 100644 basics/close-account/steel/tests/close-account.test.ts delete mode 100644 basics/close-account/steel/tests/tsconfig.test.json delete mode 100644 basics/close-account/steel/ts/index.ts delete mode 100644 basics/close-account/steel/ts/instructions/close.ts delete mode 100644 basics/close-account/steel/ts/instructions/create.ts delete mode 100644 basics/close-account/steel/ts/instructions/index.ts delete mode 100644 basics/counter/seahorse/.gitignore delete mode 100644 basics/counter/seahorse/.prettierignore delete mode 100644 basics/counter/seahorse/Anchor.toml delete mode 100644 basics/counter/seahorse/Cargo.toml delete mode 100644 basics/counter/seahorse/README.md delete mode 100644 basics/counter/seahorse/migrations/deploy.ts delete mode 100644 basics/counter/seahorse/package.json delete mode 100644 basics/counter/seahorse/programs/counter_seahorse/Cargo.toml delete mode 100644 basics/counter/seahorse/programs/counter_seahorse/Xargo.toml delete mode 100644 basics/counter/seahorse/programs/counter_seahorse/src/lib.rs delete mode 100644 basics/counter/seahorse/programs_py/counter_seahorse.py delete mode 100644 basics/counter/seahorse/programs_py/seahorse/__init__.py delete mode 100644 basics/counter/seahorse/programs_py/seahorse/prelude.py delete mode 100644 basics/counter/seahorse/tests/counter_seahorse.ts delete mode 100644 basics/counter/seahorse/tsconfig.json delete mode 100644 basics/counter/steel/.gitignore delete mode 100644 basics/counter/steel/Cargo.toml delete mode 100644 basics/counter/steel/README.md delete mode 100644 basics/counter/steel/api/Cargo.toml delete mode 100644 basics/counter/steel/api/src/consts.rs delete mode 100644 basics/counter/steel/api/src/instruction.rs delete mode 100644 basics/counter/steel/api/src/lib.rs delete mode 100644 basics/counter/steel/api/src/sdk.rs delete mode 100644 basics/counter/steel/api/src/state.rs delete mode 100644 basics/counter/steel/package.json delete mode 100644 basics/counter/steel/pnpm-lock.yaml delete mode 100644 basics/counter/steel/program/Cargo.toml delete mode 100644 basics/counter/steel/program/src/increment.rs delete mode 100644 basics/counter/steel/program/src/initialize.rs delete mode 100644 basics/counter/steel/program/src/lib.rs delete mode 100644 basics/counter/steel/program/tests/test.rs delete mode 100644 basics/counter/steel/tests/main.test.ts delete mode 100644 basics/counter/steel/tsconfig.json delete mode 100644 basics/create-account/steel/.gitignore delete mode 100644 basics/create-account/steel/Cargo.toml delete mode 100644 basics/create-account/steel/README.md delete mode 100644 basics/create-account/steel/api/Cargo.toml delete mode 100644 basics/create-account/steel/api/src/error.rs delete mode 100644 basics/create-account/steel/api/src/instruction.rs delete mode 100644 basics/create-account/steel/api/src/lib.rs delete mode 100644 basics/create-account/steel/api/src/sdk.rs delete mode 100644 basics/create-account/steel/api/src/state.rs delete mode 100755 basics/create-account/steel/cicd.sh delete mode 100644 basics/create-account/steel/package.json delete mode 100644 basics/create-account/steel/pnpm-lock.yaml delete mode 100644 basics/create-account/steel/program/Cargo.toml delete mode 100644 basics/create-account/steel/program/src/initialize.rs delete mode 100644 basics/create-account/steel/program/src/lib.rs delete mode 100644 basics/create-account/steel/tests/main.test.ts delete mode 100644 basics/create-account/steel/tsconfig.json delete mode 100644 basics/cross-program-invocation/steel/README.md delete mode 100644 basics/cross-program-invocation/steel/hand/.gitignore delete mode 100644 basics/cross-program-invocation/steel/hand/Cargo.toml delete mode 100644 basics/cross-program-invocation/steel/hand/README.md delete mode 100644 basics/cross-program-invocation/steel/hand/api/Cargo.toml delete mode 100644 basics/cross-program-invocation/steel/hand/api/src/instruction.rs delete mode 100644 basics/cross-program-invocation/steel/hand/api/src/lib.rs delete mode 100644 basics/cross-program-invocation/steel/hand/api/src/sdk.rs delete mode 100644 basics/cross-program-invocation/steel/hand/program/Cargo.toml delete mode 100644 basics/cross-program-invocation/steel/hand/program/src/lib.rs delete mode 100644 basics/cross-program-invocation/steel/hand/program/src/pull_lever.rs delete mode 100644 basics/cross-program-invocation/steel/hand/program/tests/test.rs delete mode 100644 basics/cross-program-invocation/steel/lever/.gitignore delete mode 100644 basics/cross-program-invocation/steel/lever/Cargo.toml delete mode 100644 basics/cross-program-invocation/steel/lever/README.md delete mode 100644 basics/cross-program-invocation/steel/lever/api/Cargo.toml delete mode 100644 basics/cross-program-invocation/steel/lever/api/src/consts.rs delete mode 100644 basics/cross-program-invocation/steel/lever/api/src/error.rs delete mode 100644 basics/cross-program-invocation/steel/lever/api/src/instruction.rs delete mode 100644 basics/cross-program-invocation/steel/lever/api/src/lib.rs delete mode 100644 basics/cross-program-invocation/steel/lever/api/src/sdk.rs delete mode 100644 basics/cross-program-invocation/steel/lever/api/src/state/mod.rs delete mode 100644 basics/cross-program-invocation/steel/lever/api/src/state/power_status.rs delete mode 100644 basics/cross-program-invocation/steel/lever/api/src/utils.rs delete mode 100644 basics/cross-program-invocation/steel/lever/program/Cargo.toml delete mode 100644 basics/cross-program-invocation/steel/lever/program/src/initialize.rs delete mode 100644 basics/cross-program-invocation/steel/lever/program/src/lib.rs delete mode 100644 basics/cross-program-invocation/steel/lever/program/src/switch_power.rs delete mode 100644 basics/cross-program-invocation/steel/lever/program/tests/test.rs delete mode 100644 basics/favorites/steel/.gitignore delete mode 100644 basics/favorites/steel/Cargo.toml delete mode 100644 basics/favorites/steel/README.md delete mode 100644 basics/favorites/steel/api/Cargo.toml delete mode 100644 basics/favorites/steel/api/src/consts.rs delete mode 100644 basics/favorites/steel/api/src/error.rs delete mode 100644 basics/favorites/steel/api/src/instruction.rs delete mode 100644 basics/favorites/steel/api/src/lib.rs delete mode 100644 basics/favorites/steel/api/src/sdk.rs delete mode 100644 basics/favorites/steel/api/src/state/favorites.rs delete mode 100644 basics/favorites/steel/api/src/state/mod.rs delete mode 100644 basics/favorites/steel/api/src/utils.rs delete mode 100644 basics/favorites/steel/program/Cargo.toml delete mode 100644 basics/favorites/steel/program/src/lib.rs delete mode 100644 basics/favorites/steel/program/src/set_favorites.rs delete mode 100644 basics/favorites/steel/program/src/utils.rs delete mode 100644 basics/favorites/steel/program/tests/test.rs delete mode 100644 basics/hello-solana/seahorse/hello_solana/.gitignore delete mode 100644 basics/hello-solana/seahorse/hello_solana/.prettierignore delete mode 100644 basics/hello-solana/seahorse/hello_solana/Anchor.toml delete mode 100644 basics/hello-solana/seahorse/hello_solana/Cargo.toml delete mode 100644 basics/hello-solana/seahorse/hello_solana/README.md delete mode 100644 basics/hello-solana/seahorse/hello_solana/migrations/deploy.ts delete mode 100644 basics/hello-solana/seahorse/hello_solana/package.json delete mode 100644 basics/hello-solana/seahorse/hello_solana/programs/hello_solana/Cargo.toml delete mode 100644 basics/hello-solana/seahorse/hello_solana/programs/hello_solana/Xargo.toml delete mode 100644 basics/hello-solana/seahorse/hello_solana/programs/hello_solana/src/lib.rs delete mode 100644 basics/hello-solana/seahorse/hello_solana/programs_py/hello_solana.py delete mode 100644 basics/hello-solana/seahorse/hello_solana/programs_py/seahorse/__init__.py delete mode 100644 basics/hello-solana/seahorse/hello_solana/programs_py/seahorse/prelude.py delete mode 100644 basics/hello-solana/seahorse/hello_solana/tests/hello_solana.ts delete mode 100644 basics/hello-solana/seahorse/hello_solana/tsconfig.json delete mode 100644 basics/hello-solana/steel/Cargo.toml delete mode 100644 basics/hello-solana/steel/package.json delete mode 100644 basics/hello-solana/steel/pnpm-lock.yaml delete mode 100644 basics/hello-solana/steel/program/Cargo.toml delete mode 100644 basics/hello-solana/steel/program/src/lib.rs delete mode 100644 basics/hello-solana/steel/tests/index.test.ts delete mode 100644 basics/hello-solana/steel/tsconfig.json delete mode 100644 basics/pda-rent-payer/steel/.gitignore delete mode 100644 basics/pda-rent-payer/steel/Cargo.toml delete mode 100644 basics/pda-rent-payer/steel/README.md delete mode 100644 basics/pda-rent-payer/steel/api/Cargo.toml delete mode 100644 basics/pda-rent-payer/steel/api/src/consts.rs delete mode 100644 basics/pda-rent-payer/steel/api/src/error.rs delete mode 100644 basics/pda-rent-payer/steel/api/src/instruction.rs delete mode 100644 basics/pda-rent-payer/steel/api/src/lib.rs delete mode 100644 basics/pda-rent-payer/steel/api/src/sdk.rs delete mode 100644 basics/pda-rent-payer/steel/api/src/state/accounts.rs delete mode 100644 basics/pda-rent-payer/steel/api/src/state/mod.rs delete mode 100644 basics/pda-rent-payer/steel/cicd.sh delete mode 100644 basics/pda-rent-payer/steel/package.json delete mode 100644 basics/pda-rent-payer/steel/pnpm-lock.yaml delete mode 100644 basics/pda-rent-payer/steel/program/Cargo.toml delete mode 100644 basics/pda-rent-payer/steel/program/src/create_new_account.rs delete mode 100644 basics/pda-rent-payer/steel/program/src/init_rent_vault.rs delete mode 100644 basics/pda-rent-payer/steel/program/src/lib.rs delete mode 100644 basics/pda-rent-payer/steel/tests/main.test.ts delete mode 100644 basics/pda-rent-payer/steel/tsconfig.json delete mode 100644 basics/processing-instructions/steel/.gitignore delete mode 100644 basics/processing-instructions/steel/Cargo.toml delete mode 100644 basics/processing-instructions/steel/README.md delete mode 100644 basics/processing-instructions/steel/api/Cargo.toml delete mode 100644 basics/processing-instructions/steel/api/src/instruction.rs delete mode 100644 basics/processing-instructions/steel/api/src/lib.rs delete mode 100644 basics/processing-instructions/steel/api/src/sdk.rs delete mode 100644 basics/processing-instructions/steel/package.json delete mode 100644 basics/processing-instructions/steel/pnpm-lock.yaml delete mode 100644 basics/processing-instructions/steel/program/Cargo.toml delete mode 100644 basics/processing-instructions/steel/program/src/go_to_the_park.rs delete mode 100644 basics/processing-instructions/steel/program/src/lib.rs delete mode 100644 basics/processing-instructions/steel/program/tests/test.rs delete mode 100644 basics/processing-instructions/steel/tests/main.test.ts delete mode 100644 basics/processing-instructions/steel/tsconfig.json delete mode 100644 basics/program-derived-addresses/steel/.gitignore delete mode 100644 basics/program-derived-addresses/steel/Cargo.toml delete mode 100644 basics/program-derived-addresses/steel/README.md delete mode 100644 basics/program-derived-addresses/steel/api/Cargo.toml delete mode 100644 basics/program-derived-addresses/steel/api/src/consts.rs delete mode 100644 basics/program-derived-addresses/steel/api/src/instruction.rs delete mode 100644 basics/program-derived-addresses/steel/api/src/lib.rs delete mode 100644 basics/program-derived-addresses/steel/api/src/sdk.rs delete mode 100644 basics/program-derived-addresses/steel/api/src/state.rs delete mode 100644 basics/program-derived-addresses/steel/package.json delete mode 100644 basics/program-derived-addresses/steel/pnpm-lock.yaml delete mode 100644 basics/program-derived-addresses/steel/program/Cargo.toml delete mode 100644 basics/program-derived-addresses/steel/program/src/create.rs delete mode 100644 basics/program-derived-addresses/steel/program/src/increment.rs delete mode 100644 basics/program-derived-addresses/steel/program/src/lib.rs delete mode 100644 basics/program-derived-addresses/steel/program/tests/test.rs delete mode 100644 basics/program-derived-addresses/steel/tests/main.test.ts delete mode 100644 basics/program-derived-addresses/steel/tsconfig.json delete mode 100644 basics/realloc/steel/.gitignore delete mode 100644 basics/realloc/steel/Cargo.toml delete mode 100644 basics/realloc/steel/README.md delete mode 100644 basics/realloc/steel/api/Cargo.toml delete mode 100644 basics/realloc/steel/api/src/consts.rs delete mode 100644 basics/realloc/steel/api/src/error.rs delete mode 100644 basics/realloc/steel/api/src/instruction.rs delete mode 100644 basics/realloc/steel/api/src/lib.rs delete mode 100644 basics/realloc/steel/api/src/sdk.rs delete mode 100644 basics/realloc/steel/api/src/state/address_info.rs delete mode 100644 basics/realloc/steel/api/src/state/enchanced_address_info.rs delete mode 100644 basics/realloc/steel/api/src/state/mod.rs delete mode 100644 basics/realloc/steel/api/src/state/work_info.rs delete mode 100644 basics/realloc/steel/api/src/utils.rs delete mode 100644 basics/realloc/steel/program/Cargo.toml delete mode 100644 basics/realloc/steel/program/src/add.rs delete mode 100644 basics/realloc/steel/program/src/initialize.rs delete mode 100644 basics/realloc/steel/program/src/lib.rs delete mode 100644 basics/realloc/steel/program/tests/test.rs delete mode 100644 basics/rent/steel/.gitignore delete mode 100644 basics/rent/steel/Cargo.toml delete mode 100644 basics/rent/steel/README.md delete mode 100644 basics/rent/steel/api/Cargo.toml delete mode 100644 basics/rent/steel/api/src/error.rs delete mode 100644 basics/rent/steel/api/src/instruction.rs delete mode 100644 basics/rent/steel/api/src/lib.rs delete mode 100644 basics/rent/steel/api/src/sdk.rs delete mode 100644 basics/rent/steel/api/src/state/address.rs delete mode 100644 basics/rent/steel/api/src/state/mod.rs delete mode 100644 basics/rent/steel/package.json delete mode 100644 basics/rent/steel/program/Cargo.toml delete mode 100644 basics/rent/steel/program/src/create_account.rs delete mode 100644 basics/rent/steel/program/src/lib.rs delete mode 100644 basics/rent/steel/program/tests/test.rs delete mode 100644 basics/transfer-sol/seahorse/.gitignore delete mode 100644 basics/transfer-sol/seahorse/.prettierignore delete mode 100644 basics/transfer-sol/seahorse/Anchor.toml delete mode 100644 basics/transfer-sol/seahorse/Cargo.toml delete mode 100644 basics/transfer-sol/seahorse/README.md delete mode 100644 basics/transfer-sol/seahorse/migrations/deploy.ts delete mode 100644 basics/transfer-sol/seahorse/package.json delete mode 100644 basics/transfer-sol/seahorse/programs/seahorse/Cargo.toml delete mode 100644 basics/transfer-sol/seahorse/programs/seahorse/Xargo.toml delete mode 100644 basics/transfer-sol/seahorse/programs/seahorse/src/dot/mod.rs delete mode 100644 basics/transfer-sol/seahorse/programs/seahorse/src/dot/program.rs delete mode 100644 basics/transfer-sol/seahorse/programs/seahorse/src/lib.rs delete mode 100644 basics/transfer-sol/seahorse/programs_py/seahorse.py delete mode 100644 basics/transfer-sol/seahorse/programs_py/seahorse/__init__.py delete mode 100644 basics/transfer-sol/seahorse/programs_py/seahorse/prelude.py delete mode 100644 basics/transfer-sol/seahorse/tests/seahorse.ts delete mode 100644 basics/transfer-sol/seahorse/tsconfig.json delete mode 100644 basics/transfer-sol/steel/Cargo.toml delete mode 100644 basics/transfer-sol/steel/README.md delete mode 100644 basics/transfer-sol/steel/api/Cargo.toml delete mode 100644 basics/transfer-sol/steel/api/src/instruction.rs delete mode 100644 basics/transfer-sol/steel/api/src/lib.rs delete mode 100644 basics/transfer-sol/steel/api/src/sdk.rs delete mode 100644 basics/transfer-sol/steel/cicd.sh delete mode 100644 basics/transfer-sol/steel/package.json delete mode 100644 basics/transfer-sol/steel/pnpm-lock.yaml delete mode 100644 basics/transfer-sol/steel/program/Cargo.toml delete mode 100644 basics/transfer-sol/steel/program/src/lib.rs delete mode 100644 basics/transfer-sol/steel/program/src/transfer_sol_with_cpi.rs delete mode 100644 basics/transfer-sol/steel/program/src/transfer_sol_with_program.rs delete mode 100644 basics/transfer-sol/steel/program/tests/test.rs delete mode 100644 basics/transfer-sol/steel/tests/instruction.ts delete mode 100644 basics/transfer-sol/steel/tests/test.ts delete mode 100644 basics/transfer-sol/steel/tsconfig.json delete mode 100644 oracles/pyth/seahorse/.gitignore delete mode 100644 oracles/pyth/seahorse/.prettierignore delete mode 100644 oracles/pyth/seahorse/Anchor.toml delete mode 100644 oracles/pyth/seahorse/Cargo.toml delete mode 100644 oracles/pyth/seahorse/README.md delete mode 100644 oracles/pyth/seahorse/migrations/deploy.ts delete mode 100644 oracles/pyth/seahorse/package.json delete mode 100644 oracles/pyth/seahorse/programs/seahorse/Cargo.toml delete mode 100644 oracles/pyth/seahorse/programs/seahorse/Xargo.toml delete mode 100644 oracles/pyth/seahorse/programs/seahorse/src/dot/mod.rs delete mode 100644 oracles/pyth/seahorse/programs/seahorse/src/dot/program.rs delete mode 100644 oracles/pyth/seahorse/programs/seahorse/src/lib.rs delete mode 100644 oracles/pyth/seahorse/programs_py/seahorse.py delete mode 100644 oracles/pyth/seahorse/programs_py/seahorse/__init__.py delete mode 100644 oracles/pyth/seahorse/programs_py/seahorse/prelude.py delete mode 100644 oracles/pyth/seahorse/programs_py/seahorse/pyth.py delete mode 100644 oracles/pyth/seahorse/tests/seahorse.ts delete mode 100644 oracles/pyth/seahorse/tsconfig.json delete mode 100644 tokens/create-token/steel/Cargo.toml delete mode 100644 tokens/create-token/steel/README.md delete mode 100644 tokens/create-token/steel/api/Cargo.toml delete mode 100644 tokens/create-token/steel/api/src/consts.rs delete mode 100644 tokens/create-token/steel/api/src/error.rs delete mode 100644 tokens/create-token/steel/api/src/instruction.rs delete mode 100644 tokens/create-token/steel/api/src/lib.rs delete mode 100644 tokens/create-token/steel/api/src/sdk.rs delete mode 100644 tokens/create-token/steel/cicd.sh delete mode 100644 tokens/create-token/steel/package.json delete mode 100644 tokens/create-token/steel/pnpm-lock.yaml delete mode 100644 tokens/create-token/steel/pnpm.lock.yaml delete mode 100644 tokens/create-token/steel/prepare.mjs delete mode 100644 tokens/create-token/steel/program/Cargo.toml delete mode 100644 tokens/create-token/steel/program/build.rs delete mode 100644 tokens/create-token/steel/program/src/create_token.rs delete mode 100644 tokens/create-token/steel/program/src/lib.rs delete mode 100644 tokens/create-token/steel/program/tests/test.rs delete mode 100644 tokens/create-token/steel/tests/bankrun.test.ts delete mode 100644 tokens/create-token/steel/tests/instructions.ts delete mode 100644 tokens/create-token/steel/tsconfig.json delete mode 100644 tokens/escrow/steel/Cargo.toml delete mode 100644 tokens/escrow/steel/README.md delete mode 100644 tokens/escrow/steel/api/Cargo.toml delete mode 100644 tokens/escrow/steel/api/src/consts.rs delete mode 100644 tokens/escrow/steel/api/src/instruction.rs delete mode 100644 tokens/escrow/steel/api/src/lib.rs delete mode 100644 tokens/escrow/steel/api/src/sdk.rs delete mode 100644 tokens/escrow/steel/api/src/state/mod.rs delete mode 100644 tokens/escrow/steel/api/src/state/offer.rs delete mode 100644 tokens/escrow/steel/package.json delete mode 100644 tokens/escrow/steel/pnpm-lock.yaml delete mode 100644 tokens/escrow/steel/program/Cargo.toml delete mode 100644 tokens/escrow/steel/program/src/lib.rs delete mode 100644 tokens/escrow/steel/program/src/make_offer.rs delete mode 100644 tokens/escrow/steel/program/src/take_offer.rs delete mode 100644 tokens/escrow/steel/tests/bankrun.test.ts delete mode 100644 tokens/escrow/steel/tests/utils.ts delete mode 100644 tokens/escrow/steel/tsconfig.json delete mode 100644 tokens/pda-mint-authority/steel/.gitignore delete mode 100644 tokens/pda-mint-authority/steel/Cargo.toml delete mode 100644 tokens/pda-mint-authority/steel/README.md delete mode 100644 tokens/pda-mint-authority/steel/api/Cargo.toml delete mode 100644 tokens/pda-mint-authority/steel/api/src/consts.rs delete mode 100644 tokens/pda-mint-authority/steel/api/src/instruction.rs delete mode 100644 tokens/pda-mint-authority/steel/api/src/lib.rs delete mode 100644 tokens/pda-mint-authority/steel/api/src/sdk.rs delete mode 100644 tokens/pda-mint-authority/steel/api/src/state/mint_authority.rs delete mode 100644 tokens/pda-mint-authority/steel/api/src/state/mod.rs delete mode 100644 tokens/pda-mint-authority/steel/cicd.sh delete mode 100644 tokens/pda-mint-authority/steel/package.json delete mode 100644 tokens/pda-mint-authority/steel/pnpm-lock.yaml delete mode 100644 tokens/pda-mint-authority/steel/prepare.mjs delete mode 100644 tokens/pda-mint-authority/steel/program/Cargo.toml delete mode 100644 tokens/pda-mint-authority/steel/program/build.rs delete mode 100644 tokens/pda-mint-authority/steel/program/src/create.rs delete mode 100644 tokens/pda-mint-authority/steel/program/src/init.rs delete mode 100644 tokens/pda-mint-authority/steel/program/src/lib.rs delete mode 100644 tokens/pda-mint-authority/steel/program/src/mint.rs delete mode 100644 tokens/pda-mint-authority/steel/program/tests/test.rs delete mode 100644 tokens/pda-mint-authority/steel/tests/instructions.ts delete mode 100644 tokens/pda-mint-authority/steel/tests/tests.ts delete mode 100644 tokens/pda-mint-authority/steel/tsconfig.json delete mode 100644 tokens/spl-token-minter/steel/.gitignore delete mode 100644 tokens/spl-token-minter/steel/Cargo.toml delete mode 100644 tokens/spl-token-minter/steel/README.md delete mode 100644 tokens/spl-token-minter/steel/api/Cargo.toml delete mode 100644 tokens/spl-token-minter/steel/api/src/consts.rs delete mode 100644 tokens/spl-token-minter/steel/api/src/instruction.rs delete mode 100644 tokens/spl-token-minter/steel/api/src/lib.rs delete mode 100644 tokens/spl-token-minter/steel/api/src/sdk.rs delete mode 100644 tokens/spl-token-minter/steel/api/src/utils.rs delete mode 100644 tokens/spl-token-minter/steel/cicd.sh delete mode 100644 tokens/spl-token-minter/steel/package.json delete mode 100644 tokens/spl-token-minter/steel/pnpm-lock.yaml delete mode 100644 tokens/spl-token-minter/steel/prepare.mjs delete mode 100644 tokens/spl-token-minter/steel/program/Cargo.toml delete mode 100644 tokens/spl-token-minter/steel/program/src/create.rs delete mode 100644 tokens/spl-token-minter/steel/program/src/lib.rs delete mode 100644 tokens/spl-token-minter/steel/program/src/mint.rs delete mode 100644 tokens/spl-token-minter/steel/program/tests/test.rs delete mode 100644 tokens/spl-token-minter/steel/tests/bankrun.test.ts delete mode 100644 tokens/spl-token-minter/steel/tests/instructions.ts delete mode 100644 tokens/spl-token-minter/steel/tsconfig.json delete mode 100644 tokens/transfer-tokens/seahorse/.gitignore delete mode 100644 tokens/transfer-tokens/seahorse/.prettierignore delete mode 100644 tokens/transfer-tokens/seahorse/Anchor.toml delete mode 100644 tokens/transfer-tokens/seahorse/Cargo.toml delete mode 100644 tokens/transfer-tokens/seahorse/README.md delete mode 100644 tokens/transfer-tokens/seahorse/migrations/deploy.ts delete mode 100644 tokens/transfer-tokens/seahorse/package.json delete mode 100644 tokens/transfer-tokens/seahorse/programs/seahorse/Cargo.toml delete mode 100644 tokens/transfer-tokens/seahorse/programs/seahorse/Xargo.toml delete mode 100644 tokens/transfer-tokens/seahorse/programs/seahorse/src/dot/mod.rs delete mode 100644 tokens/transfer-tokens/seahorse/programs/seahorse/src/dot/program.rs delete mode 100644 tokens/transfer-tokens/seahorse/programs/seahorse/src/lib.rs delete mode 100644 tokens/transfer-tokens/seahorse/programs_py/seahorse.py delete mode 100644 tokens/transfer-tokens/seahorse/programs_py/seahorse/__init__.py delete mode 100644 tokens/transfer-tokens/seahorse/programs_py/seahorse/prelude.py delete mode 100644 tokens/transfer-tokens/seahorse/tests/pyproject.toml delete mode 100644 tokens/transfer-tokens/seahorse/tests/test.py delete mode 100644 tokens/transfer-tokens/seahorse/tsconfig.json delete mode 100644 tokens/transfer-tokens/steel/.gitignore delete mode 100644 tokens/transfer-tokens/steel/Cargo.toml delete mode 100644 tokens/transfer-tokens/steel/README.md delete mode 100644 tokens/transfer-tokens/steel/api/Cargo.toml delete mode 100644 tokens/transfer-tokens/steel/api/src/consts.rs delete mode 100644 tokens/transfer-tokens/steel/api/src/instruction.rs delete mode 100644 tokens/transfer-tokens/steel/api/src/lib.rs delete mode 100644 tokens/transfer-tokens/steel/api/src/sdk.rs delete mode 100644 tokens/transfer-tokens/steel/api/src/utils.rs delete mode 100644 tokens/transfer-tokens/steel/cicd.sh delete mode 100644 tokens/transfer-tokens/steel/package.json delete mode 100644 tokens/transfer-tokens/steel/pnpm-lock.yaml delete mode 100644 tokens/transfer-tokens/steel/prepare.mjs delete mode 100644 tokens/transfer-tokens/steel/program/Cargo.toml delete mode 100644 tokens/transfer-tokens/steel/program/src/create.rs delete mode 100644 tokens/transfer-tokens/steel/program/src/lib.rs delete mode 100644 tokens/transfer-tokens/steel/program/src/mint.rs delete mode 100644 tokens/transfer-tokens/steel/program/src/transfer.rs delete mode 100644 tokens/transfer-tokens/steel/program/tests/test.rs delete mode 100644 tokens/transfer-tokens/steel/tests/instructions.ts delete mode 100644 tokens/transfer-tokens/steel/tests/tests.ts delete mode 100644 tokens/transfer-tokens/steel/tsconfig.json diff --git a/basics/account-data/steel/Cargo.toml b/basics/account-data/steel/Cargo.toml deleted file mode 100644 index 9e134e21c..000000000 --- a/basics/account-data/steel/Cargo.toml +++ /dev/null @@ -1,21 +0,0 @@ -[workspace] -resolver = "2" -members = ["api", "program"] - -[workspace.package] -version = "0.1.0" -edition = "2021" -license = "Apache-2.0" -homepage = "" -documentation = "" -respository = "" -readme = "./README.md" -keywords = ["solana"] - -[workspace.dependencies] -account-data-api = { path = "./api", version = "0.1.0" } -bytemuck = "1.14" -num_enum = "0.7" -solana-program = "2.1" -steel = "3.0" -thiserror = "1.0" diff --git a/basics/account-data/steel/README.md b/basics/account-data/steel/README.md deleted file mode 100644 index 44991cafe..000000000 --- a/basics/account-data/steel/README.md +++ /dev/null @@ -1,25 +0,0 @@ -# Account Data Program Example in Steel Framewrok - -Creates an account with data. - -## Build - -```sh - -cargo build-sbf - -``` - -## Tests - -Run the tests using following command: - -```sh - -# Node tests -pnpm build-and-test # This will build and test the program - -#or -pnpm test # If you have already built the program test the program - -``` diff --git a/basics/account-data/steel/api/Cargo.toml b/basics/account-data/steel/api/Cargo.toml deleted file mode 100644 index 5df0a8081..000000000 --- a/basics/account-data/steel/api/Cargo.toml +++ /dev/null @@ -1,11 +0,0 @@ -[package] -name = "account-data-api" -version = "0.1.0" -edition = "2021" - -[dependencies] -bytemuck.workspace = true -num_enum.workspace = true -solana-program.workspace = true -steel.workspace = true -thiserror.workspace = true diff --git a/basics/account-data/steel/api/src/consts.rs b/basics/account-data/steel/api/src/consts.rs deleted file mode 100644 index 6861e5969..000000000 --- a/basics/account-data/steel/api/src/consts.rs +++ /dev/null @@ -1,2 +0,0 @@ -/// Seed of the address_info account PDA. -pub const ADDRESS_INFO_SEED: &[u8] = b"address_info"; diff --git a/basics/account-data/steel/api/src/instruction.rs b/basics/account-data/steel/api/src/instruction.rs deleted file mode 100644 index 804bec114..000000000 --- a/basics/account-data/steel/api/src/instruction.rs +++ /dev/null @@ -1,19 +0,0 @@ -use crate::state::AddressInfoData; -use steel::*; - -/// Instruction types for the address info program -#[repr(u8)] -#[derive(Clone, Copy, Debug, Eq, PartialEq, TryFromPrimitive)] -pub enum AddressInfoInstruction { - CreateAddressInfo = 0, -} - -/// Instruction data for creating address info -#[repr(C)] -#[derive(Clone, Copy, Debug, Pod, Zeroable)] -pub struct CreateAddressInfo { - pub data: AddressInfoData, -} - -// Link instruction type with its data structure -instruction!(AddressInfoInstruction, CreateAddressInfo); diff --git a/basics/account-data/steel/api/src/lib.rs b/basics/account-data/steel/api/src/lib.rs deleted file mode 100644 index 080ff4ea7..000000000 --- a/basics/account-data/steel/api/src/lib.rs +++ /dev/null @@ -1,16 +0,0 @@ -pub mod consts; -pub mod instruction; -pub mod sdk; -pub mod state; - -pub mod prelude { - pub use crate::consts::*; - pub use crate::instruction::*; - pub use crate::sdk::*; - pub use crate::state::*; -} - -use steel::*; - -// Set your Program ID -declare_id!("Dw6Yq7TZSHdaqB2nKjsxuDrdp5xYCuZaVKFZb5vp5Y4Y"); diff --git a/basics/account-data/steel/api/src/sdk.rs b/basics/account-data/steel/api/src/sdk.rs deleted file mode 100644 index c459599a2..000000000 --- a/basics/account-data/steel/api/src/sdk.rs +++ /dev/null @@ -1,14 +0,0 @@ -use crate::prelude::*; -use steel::*; - -pub fn create_address_info(signer: Pubkey, data: AddressInfoData) -> Instruction { - Instruction { - program_id: crate::ID, - accounts: vec![ - AccountMeta::new(signer, true), - AccountMeta::new(account_pda().0, false), - AccountMeta::new_readonly(system_program::ID, false), - ], - data: CreateAddressInfo { data }.to_bytes(), - } -} diff --git a/basics/account-data/steel/api/src/state.rs b/basics/account-data/steel/api/src/state.rs deleted file mode 100644 index 0d0f8a811..000000000 --- a/basics/account-data/steel/api/src/state.rs +++ /dev/null @@ -1,55 +0,0 @@ -use crate::consts::ADDRESS_INFO_SEED; -use steel::*; - -#[repr(C)] -#[derive(Clone, Copy, Debug, Pod, Zeroable, PartialEq)] -pub struct AddressInfoData { - /// Name of the address owner (max 64 bytes) - pub name: [u8; 64], - /// House number as bytes - pub house_number: [u8; 8], - /// Street name (max 64 bytes) - pub street: [u8; 64], - /// City name (max 64 bytes) - pub city: [u8; 64], -} - -impl AddressInfoData { - pub fn new(name: String, house_number: u64, street: String, city: String) -> Self { - Self { - name: string_to_bytes(&name), - house_number: house_number.to_le_bytes(), - street: string_to_bytes(&street), - city: string_to_bytes(&city), - } - } -} - -fn string_to_bytes(s: &str) -> [u8; 64] { - let mut bytes = [0; 64]; - let s_bytes = s.as_bytes(); - let len = s_bytes.len().min(64); - bytes[..len].copy_from_slice(&s_bytes[..len]); - bytes -} - -/// Account type discriminator -#[repr(u8)] -#[derive(Clone, Copy, Debug, Eq, PartialEq, IntoPrimitive, TryFromPrimitive)] -pub enum AddressInfoAccount { - AddressInfo = 0, -} - -/// Account data structure -#[repr(C)] -#[derive(Clone, Copy, Debug, PartialEq, Pod, Zeroable)] -pub struct AddressInfo { - pub data: AddressInfoData, -} - -// Link account discriminator with account data structure -account!(AddressInfoAccount, AddressInfo); - -pub fn account_pda() -> (Pubkey, u8) { - Pubkey::find_program_address(&[ADDRESS_INFO_SEED], &crate::id()) -} diff --git a/basics/account-data/steel/package.json b/basics/account-data/steel/package.json deleted file mode 100644 index e822c8da7..000000000 --- a/basics/account-data/steel/package.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "name": "account-data-program", - "version": "1.0.0", - "description": "", - "scripts": { - "test": "pnpm ts-mocha -p ./tsconfig.json -t 1000000 ./tests/*.test.ts", - "build-and-test": "cargo build-sbf --manifest-path=./program/Cargo.toml --sbf-out-dir=./tests/fixtures && pnpm test", - "build": "cargo build-sbf --manifest-path=./program/Cargo.toml --sbf-out-dir=./program/target/so", - "deploy": "solana program deploy ./program/target/so/account_data_program.so" - }, - "keywords": [], - "author": "", - "license": "ISC", - "dependencies": { - "@solana/web3.js": "^1.95.4" - }, - "devDependencies": { - "@types/chai": "^4.3.7", - "@types/mocha": "10.0.9", - "@types/node": "^22.7.4", - "borsh": "^2.0.0", - "chai": "^4.3.7", - "mocha": "10.7.3", - "solana-bankrun": "0.4.0", - "ts-mocha": "^10.0.0", - "typescript": "5.6.3" - } -} diff --git a/basics/account-data/steel/pnpm-lock.yaml b/basics/account-data/steel/pnpm-lock.yaml deleted file mode 100644 index 4ee20cc25..000000000 --- a/basics/account-data/steel/pnpm-lock.yaml +++ /dev/null @@ -1,1268 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -importers: - - .: - dependencies: - '@solana/web3.js': - specifier: ^1.95.4 - version: 1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) - devDependencies: - '@types/chai': - specifier: ^4.3.7 - version: 4.3.20 - '@types/mocha': - specifier: 10.0.9 - version: 10.0.9 - '@types/node': - specifier: ^22.7.4 - version: 22.7.8 - borsh: - specifier: ^2.0.0 - version: 2.0.0 - chai: - specifier: ^4.3.7 - version: 4.5.0 - mocha: - specifier: 10.7.3 - version: 10.7.3 - solana-bankrun: - specifier: 0.4.0 - version: 0.4.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - ts-mocha: - specifier: ^10.0.0 - version: 10.0.0(mocha@10.7.3) - typescript: - specifier: 5.6.3 - version: 5.6.3 - -packages: - - '@babel/runtime@7.25.7': - resolution: {integrity: sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w==} - engines: {node: '>=6.9.0'} - - '@noble/curves@1.6.0': - resolution: {integrity: sha512-TlaHRXDehJuRNR9TfZDNQ45mMEd5dwUwmicsafcIX4SsNiqnCHKjE/1alYPd/lDRVhxdhUAlv8uEhMCI5zjIJQ==} - engines: {node: ^14.21.3 || >=16} - - '@noble/hashes@1.5.0': - resolution: {integrity: sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==} - engines: {node: ^14.21.3 || >=16} - - '@solana/buffer-layout@4.0.1': - resolution: {integrity: sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==} - engines: {node: '>=5.10'} - - '@solana/web3.js@1.95.4': - resolution: {integrity: sha512-sdewnNEA42ZSMxqkzdwEWi6fDgzwtJHaQa5ndUGEJYtoOnM6X5cvPmjoTUp7/k7bRrVAxfBgDnvQQHD6yhlLYw==} - - '@swc/helpers@0.5.13': - resolution: {integrity: sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==} - - '@types/chai@4.3.20': - resolution: {integrity: sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==} - - '@types/connect@3.4.38': - resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} - - '@types/json5@0.0.29': - resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - - '@types/mocha@10.0.9': - resolution: {integrity: sha512-sicdRoWtYevwxjOHNMPTl3vSfJM6oyW8o1wXeI7uww6b6xHg8eBznQDNSGBCDJmsE8UMxP05JgZRtsKbTqt//Q==} - - '@types/node@12.20.55': - resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - - '@types/node@22.7.8': - resolution: {integrity: sha512-a922jJy31vqR5sk+kAdIENJjHblqcZ4RmERviFsER4WJcEONqxKcjNOlk0q7OUfrF5sddT+vng070cdfMlrPLg==} - - '@types/uuid@8.3.4': - resolution: {integrity: sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==} - - '@types/ws@7.4.7': - resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==} - - '@types/ws@8.5.12': - resolution: {integrity: sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==} - - JSONStream@1.3.5: - resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} - hasBin: true - - agentkeepalive@4.5.0: - resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} - engines: {node: '>= 8.0.0'} - - ansi-colors@4.1.3: - resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} - engines: {node: '>=6'} - - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - - argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - - arrify@1.0.1: - resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} - engines: {node: '>=0.10.0'} - - assertion-error@1.1.0: - resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} - - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - base-x@3.0.10: - resolution: {integrity: sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==} - - base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - - bigint-buffer@1.1.5: - resolution: {integrity: sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA==} - engines: {node: '>= 10.0.0'} - - binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} - - bindings@1.5.0: - resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} - - bn.js@5.2.1: - resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} - - borsh@0.7.0: - resolution: {integrity: sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==} - - borsh@2.0.0: - resolution: {integrity: sha512-kc9+BgR3zz9+cjbwM8ODoUB4fs3X3I5A/HtX7LZKxCLaMrEeDFoBpnhZY//DTS1VZBSs6S5v46RZRbZjRFspEg==} - - brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - - braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} - - browser-stdout@1.3.1: - resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} - - bs58@4.0.1: - resolution: {integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==} - - buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - - buffer@6.0.3: - resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} - - bufferutil@4.0.8: - resolution: {integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==} - engines: {node: '>=6.14.2'} - - camelcase@6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} - - chai@4.5.0: - resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==} - engines: {node: '>=4'} - - chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - - check-error@1.0.3: - resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} - - chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} - - cliui@7.0.4: - resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} - - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - - debug@4.3.7: - resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - decamelize@4.0.0: - resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} - engines: {node: '>=10'} - - deep-eql@4.1.4: - resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==} - engines: {node: '>=6'} - - delay@5.0.0: - resolution: {integrity: sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==} - engines: {node: '>=10'} - - diff@3.5.0: - resolution: {integrity: sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==} - engines: {node: '>=0.3.1'} - - diff@5.2.0: - resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} - engines: {node: '>=0.3.1'} - - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - - es6-promise@4.2.8: - resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} - - es6-promisify@5.0.0: - resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==} - - escalade@3.2.0: - resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} - engines: {node: '>=6'} - - escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - - eventemitter3@5.0.1: - resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} - - eyes@0.1.8: - resolution: {integrity: sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==} - engines: {node: '> 0.1.90'} - - fast-stable-stringify@1.0.0: - resolution: {integrity: sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==} - - file-uri-to-path@1.0.0: - resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} - - fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} - - find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - - flat@5.0.2: - resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} - hasBin: true - - fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - - get-func-name@2.0.2: - resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} - - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - - glob@8.1.0: - resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} - engines: {node: '>=12'} - deprecated: Glob versions prior to v9 are no longer supported - - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - - he@1.2.0: - resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} - hasBin: true - - humanize-ms@1.2.1: - resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} - - ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - - inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. - - inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - - is-plain-obj@2.1.0: - resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} - engines: {node: '>=8'} - - is-unicode-supported@0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} - engines: {node: '>=10'} - - isomorphic-ws@4.0.1: - resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==} - peerDependencies: - ws: '*' - - jayson@4.1.2: - resolution: {integrity: sha512-5nzMWDHy6f+koZOuYsArh2AXs73NfWYVlFyJJuCedr93GpY+Ku8qq10ropSXVfHK+H0T6paA88ww+/dV+1fBNA==} - engines: {node: '>=8'} - hasBin: true - - js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true - - json-stringify-safe@5.0.1: - resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} - - json5@1.0.2: - resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} - hasBin: true - - jsonparse@1.3.1: - resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} - engines: {'0': node >= 0.2.0} - - locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - - log-symbols@4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} - engines: {node: '>=10'} - - loupe@2.3.7: - resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} - - make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - - minimatch@5.1.6: - resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} - engines: {node: '>=10'} - - minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - - mkdirp@0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} - hasBin: true - - mocha@10.7.3: - resolution: {integrity: sha512-uQWxAu44wwiACGqjbPYmjo7Lg8sFrS3dQe7PP2FQI+woptP4vZXSMcfMyFL/e1yFEeEpV4RtyTpZROOKmxis+A==} - engines: {node: '>= 14.0.0'} - hasBin: true - - ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - - node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - - node-gyp-build@4.8.2: - resolution: {integrity: sha512-IRUxE4BVsHWXkV/SFOut4qTlagw2aM8T5/vnTsmrHJvVoKueJHRc/JaFND7QDDc61kLYUJ6qlZM3sqTSyx2dTw==} - hasBin: true - - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - - once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - - p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - - p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - - path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - - pathval@1.1.1: - resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} - - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - - randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - - regenerator-runtime@0.14.1: - resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - - require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - - rpc-websockets@9.0.4: - resolution: {integrity: sha512-yWZWN0M+bivtoNLnaDbtny4XchdAIF5Q4g/ZsC5UC61Ckbp0QczwO8fg44rV3uYmY4WHd+EZQbn90W1d8ojzqQ==} - - safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - - serialize-javascript@6.0.2: - resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} - - solana-bankrun-darwin-arm64@0.4.0: - resolution: {integrity: sha512-6dz78Teoz7ez/3lpRLDjktYLJb79FcmJk2me4/YaB8WiO6W43OdExU4h+d2FyuAryO2DgBPXaBoBNY/8J1HJmw==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - - solana-bankrun-darwin-universal@0.4.0: - resolution: {integrity: sha512-zSSw/Jx3KNU42pPMmrEWABd0nOwGJfsj7nm9chVZ3ae7WQg3Uty0hHAkn5NSDCj3OOiN0py9Dr1l9vmRJpOOxg==} - engines: {node: '>= 10'} - os: [darwin] - - solana-bankrun-darwin-x64@0.4.0: - resolution: {integrity: sha512-LWjs5fsgHFtyr7YdJR6r0Ho5zrtzI6CY4wvwPXr8H2m3b4pZe6RLIZjQtabCav4cguc14G0K8yQB2PTMuGub8w==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - - solana-bankrun-linux-x64-gnu@0.4.0: - resolution: {integrity: sha512-SrlVrb82UIxt21Zr/XZFHVV/h9zd2/nP25PMpLJVLD7Pgl2yhkhfi82xj3OjxoQqWe+zkBJ+uszA0EEKr67yNw==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - solana-bankrun-linux-x64-musl@0.4.0: - resolution: {integrity: sha512-Nv328ZanmURdYfcLL+jwB1oMzX4ZzK57NwIcuJjGlf0XSNLq96EoaO5buEiUTo4Ls7MqqMyLbClHcrPE7/aKyA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - solana-bankrun@0.4.0: - resolution: {integrity: sha512-NMmXUipPBkt8NgnyNO3SCnPERP6xT/AMNMBooljGA3+rG6NN8lmXJsKeLqQTiFsDeWD74U++QM/DgcueSWvrIg==} - engines: {node: '>= 10'} - - source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - - source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - - strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - - strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - - superstruct@2.0.2: - resolution: {integrity: sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A==} - engines: {node: '>=14.0.0'} - - supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - - supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} - - text-encoding-utf-8@1.0.2: - resolution: {integrity: sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==} - - through@2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - - tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - - ts-mocha@10.0.0: - resolution: {integrity: sha512-VRfgDO+iiuJFlNB18tzOfypJ21xn2xbuZyDvJvqpTbWgkAgD17ONGr8t+Tl8rcBtOBdjXp5e/Rk+d39f7XBHRw==} - engines: {node: '>= 6.X.X'} - hasBin: true - peerDependencies: - mocha: ^3.X.X || ^4.X.X || ^5.X.X || ^6.X.X || ^7.X.X || ^8.X.X || ^9.X.X || ^10.X.X - - ts-node@7.0.1: - resolution: {integrity: sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==} - engines: {node: '>=4.2.0'} - hasBin: true - - tsconfig-paths@3.15.0: - resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} - - tslib@2.8.0: - resolution: {integrity: sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==} - - type-detect@4.1.0: - resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==} - engines: {node: '>=4'} - - typescript@5.6.3: - resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} - engines: {node: '>=14.17'} - hasBin: true - - undici-types@6.19.8: - resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} - - utf-8-validate@5.0.10: - resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==} - engines: {node: '>=6.14.2'} - - uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - hasBin: true - - webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - - whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - - workerpool@6.5.1: - resolution: {integrity: sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==} - - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - - wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - - ws@7.5.10: - resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} - engines: {node: '>=8.3.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - ws@8.18.0: - resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - - yargs-parser@20.2.9: - resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} - engines: {node: '>=10'} - - yargs-unparser@2.0.0: - resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} - engines: {node: '>=10'} - - yargs@16.2.0: - resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} - engines: {node: '>=10'} - - yn@2.0.0: - resolution: {integrity: sha512-uTv8J/wiWTgUTg+9vLTi//leUl5vDQS6uii/emeTb2ssY7vl6QWf2fFbIIGjnhjvbdKlU0ed7QPgY1htTC86jQ==} - engines: {node: '>=4'} - - yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - -snapshots: - - '@babel/runtime@7.25.7': - dependencies: - regenerator-runtime: 0.14.1 - - '@noble/curves@1.6.0': - dependencies: - '@noble/hashes': 1.5.0 - - '@noble/hashes@1.5.0': {} - - '@solana/buffer-layout@4.0.1': - dependencies: - buffer: 6.0.3 - - '@solana/web3.js@1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10)': - dependencies: - '@babel/runtime': 7.25.7 - '@noble/curves': 1.6.0 - '@noble/hashes': 1.5.0 - '@solana/buffer-layout': 4.0.1 - agentkeepalive: 4.5.0 - bigint-buffer: 1.1.5 - bn.js: 5.2.1 - borsh: 0.7.0 - bs58: 4.0.1 - buffer: 6.0.3 - fast-stable-stringify: 1.0.0 - jayson: 4.1.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) - node-fetch: 2.7.0 - rpc-websockets: 9.0.4 - superstruct: 2.0.2 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - - '@swc/helpers@0.5.13': - dependencies: - tslib: 2.8.0 - - '@types/chai@4.3.20': {} - - '@types/connect@3.4.38': - dependencies: - '@types/node': 22.7.8 - - '@types/json5@0.0.29': - optional: true - - '@types/mocha@10.0.9': {} - - '@types/node@12.20.55': {} - - '@types/node@22.7.8': - dependencies: - undici-types: 6.19.8 - - '@types/uuid@8.3.4': {} - - '@types/ws@7.4.7': - dependencies: - '@types/node': 22.7.8 - - '@types/ws@8.5.12': - dependencies: - '@types/node': 22.7.8 - - JSONStream@1.3.5: - dependencies: - jsonparse: 1.3.1 - through: 2.3.8 - - agentkeepalive@4.5.0: - dependencies: - humanize-ms: 1.2.1 - - ansi-colors@4.1.3: {} - - ansi-regex@5.0.1: {} - - ansi-styles@4.3.0: - dependencies: - color-convert: 2.0.1 - - anymatch@3.1.3: - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - - argparse@2.0.1: {} - - arrify@1.0.1: {} - - assertion-error@1.1.0: {} - - balanced-match@1.0.2: {} - - base-x@3.0.10: - dependencies: - safe-buffer: 5.2.1 - - base64-js@1.5.1: {} - - bigint-buffer@1.1.5: - dependencies: - bindings: 1.5.0 - - binary-extensions@2.3.0: {} - - bindings@1.5.0: - dependencies: - file-uri-to-path: 1.0.0 - - bn.js@5.2.1: {} - - borsh@0.7.0: - dependencies: - bn.js: 5.2.1 - bs58: 4.0.1 - text-encoding-utf-8: 1.0.2 - - borsh@2.0.0: {} - - brace-expansion@2.0.1: - dependencies: - balanced-match: 1.0.2 - - braces@3.0.3: - dependencies: - fill-range: 7.1.1 - - browser-stdout@1.3.1: {} - - bs58@4.0.1: - dependencies: - base-x: 3.0.10 - - buffer-from@1.1.2: {} - - buffer@6.0.3: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - - bufferutil@4.0.8: - dependencies: - node-gyp-build: 4.8.2 - optional: true - - camelcase@6.3.0: {} - - chai@4.5.0: - dependencies: - assertion-error: 1.1.0 - check-error: 1.0.3 - deep-eql: 4.1.4 - get-func-name: 2.0.2 - loupe: 2.3.7 - pathval: 1.1.1 - type-detect: 4.1.0 - - chalk@4.1.2: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - - check-error@1.0.3: - dependencies: - get-func-name: 2.0.2 - - chokidar@3.6.0: - dependencies: - anymatch: 3.1.3 - braces: 3.0.3 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - - cliui@7.0.4: - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - - color-convert@2.0.1: - dependencies: - color-name: 1.1.4 - - color-name@1.1.4: {} - - commander@2.20.3: {} - - debug@4.3.7(supports-color@8.1.1): - dependencies: - ms: 2.1.3 - optionalDependencies: - supports-color: 8.1.1 - - decamelize@4.0.0: {} - - deep-eql@4.1.4: - dependencies: - type-detect: 4.1.0 - - delay@5.0.0: {} - - diff@3.5.0: {} - - diff@5.2.0: {} - - emoji-regex@8.0.0: {} - - es6-promise@4.2.8: {} - - es6-promisify@5.0.0: - dependencies: - es6-promise: 4.2.8 - - escalade@3.2.0: {} - - escape-string-regexp@4.0.0: {} - - eventemitter3@5.0.1: {} - - eyes@0.1.8: {} - - fast-stable-stringify@1.0.0: {} - - file-uri-to-path@1.0.0: {} - - fill-range@7.1.1: - dependencies: - to-regex-range: 5.0.1 - - find-up@5.0.0: - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - - flat@5.0.2: {} - - fs.realpath@1.0.0: {} - - fsevents@2.3.3: - optional: true - - get-caller-file@2.0.5: {} - - get-func-name@2.0.2: {} - - glob-parent@5.1.2: - dependencies: - is-glob: 4.0.3 - - glob@8.1.0: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 5.1.6 - once: 1.4.0 - - has-flag@4.0.0: {} - - he@1.2.0: {} - - humanize-ms@1.2.1: - dependencies: - ms: 2.1.3 - - ieee754@1.2.1: {} - - inflight@1.0.6: - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - - inherits@2.0.4: {} - - is-binary-path@2.1.0: - dependencies: - binary-extensions: 2.3.0 - - is-extglob@2.1.1: {} - - is-fullwidth-code-point@3.0.0: {} - - is-glob@4.0.3: - dependencies: - is-extglob: 2.1.1 - - is-number@7.0.0: {} - - is-plain-obj@2.1.0: {} - - is-unicode-supported@0.1.0: {} - - isomorphic-ws@4.0.1(ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10)): - dependencies: - ws: 7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) - - jayson@4.1.2(bufferutil@4.0.8)(utf-8-validate@5.0.10): - dependencies: - '@types/connect': 3.4.38 - '@types/node': 12.20.55 - '@types/ws': 7.4.7 - JSONStream: 1.3.5 - commander: 2.20.3 - delay: 5.0.0 - es6-promisify: 5.0.0 - eyes: 0.1.8 - isomorphic-ws: 4.0.1(ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10)) - json-stringify-safe: 5.0.1 - uuid: 8.3.2 - ws: 7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - js-yaml@4.1.0: - dependencies: - argparse: 2.0.1 - - json-stringify-safe@5.0.1: {} - - json5@1.0.2: - dependencies: - minimist: 1.2.8 - optional: true - - jsonparse@1.3.1: {} - - locate-path@6.0.0: - dependencies: - p-locate: 5.0.0 - - log-symbols@4.1.0: - dependencies: - chalk: 4.1.2 - is-unicode-supported: 0.1.0 - - loupe@2.3.7: - dependencies: - get-func-name: 2.0.2 - - make-error@1.3.6: {} - - minimatch@5.1.6: - dependencies: - brace-expansion: 2.0.1 - - minimist@1.2.8: {} - - mkdirp@0.5.6: - dependencies: - minimist: 1.2.8 - - mocha@10.7.3: - dependencies: - ansi-colors: 4.1.3 - browser-stdout: 1.3.1 - chokidar: 3.6.0 - debug: 4.3.7(supports-color@8.1.1) - diff: 5.2.0 - escape-string-regexp: 4.0.0 - find-up: 5.0.0 - glob: 8.1.0 - he: 1.2.0 - js-yaml: 4.1.0 - log-symbols: 4.1.0 - minimatch: 5.1.6 - ms: 2.1.3 - serialize-javascript: 6.0.2 - strip-json-comments: 3.1.1 - supports-color: 8.1.1 - workerpool: 6.5.1 - yargs: 16.2.0 - yargs-parser: 20.2.9 - yargs-unparser: 2.0.0 - - ms@2.1.3: {} - - node-fetch@2.7.0: - dependencies: - whatwg-url: 5.0.0 - - node-gyp-build@4.8.2: - optional: true - - normalize-path@3.0.0: {} - - once@1.4.0: - dependencies: - wrappy: 1.0.2 - - p-limit@3.1.0: - dependencies: - yocto-queue: 0.1.0 - - p-locate@5.0.0: - dependencies: - p-limit: 3.1.0 - - path-exists@4.0.0: {} - - pathval@1.1.1: {} - - picomatch@2.3.1: {} - - randombytes@2.1.0: - dependencies: - safe-buffer: 5.2.1 - - readdirp@3.6.0: - dependencies: - picomatch: 2.3.1 - - regenerator-runtime@0.14.1: {} - - require-directory@2.1.1: {} - - rpc-websockets@9.0.4: - dependencies: - '@swc/helpers': 0.5.13 - '@types/uuid': 8.3.4 - '@types/ws': 8.5.12 - buffer: 6.0.3 - eventemitter3: 5.0.1 - uuid: 8.3.2 - ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - optionalDependencies: - bufferutil: 4.0.8 - utf-8-validate: 5.0.10 - - safe-buffer@5.2.1: {} - - serialize-javascript@6.0.2: - dependencies: - randombytes: 2.1.0 - - solana-bankrun-darwin-arm64@0.4.0: - optional: true - - solana-bankrun-darwin-universal@0.4.0: - optional: true - - solana-bankrun-darwin-x64@0.4.0: - optional: true - - solana-bankrun-linux-x64-gnu@0.4.0: - optional: true - - solana-bankrun-linux-x64-musl@0.4.0: - optional: true - - solana-bankrun@0.4.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): - dependencies: - '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) - bs58: 4.0.1 - optionalDependencies: - solana-bankrun-darwin-arm64: 0.4.0 - solana-bankrun-darwin-universal: 0.4.0 - solana-bankrun-darwin-x64: 0.4.0 - solana-bankrun-linux-x64-gnu: 0.4.0 - solana-bankrun-linux-x64-musl: 0.4.0 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - - source-map-support@0.5.21: - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - - source-map@0.6.1: {} - - string-width@4.2.3: - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - - strip-ansi@6.0.1: - dependencies: - ansi-regex: 5.0.1 - - strip-bom@3.0.0: - optional: true - - strip-json-comments@3.1.1: {} - - superstruct@2.0.2: {} - - supports-color@7.2.0: - dependencies: - has-flag: 4.0.0 - - supports-color@8.1.1: - dependencies: - has-flag: 4.0.0 - - text-encoding-utf-8@1.0.2: {} - - through@2.3.8: {} - - to-regex-range@5.0.1: - dependencies: - is-number: 7.0.0 - - tr46@0.0.3: {} - - ts-mocha@10.0.0(mocha@10.7.3): - dependencies: - mocha: 10.7.3 - ts-node: 7.0.1 - optionalDependencies: - tsconfig-paths: 3.15.0 - - ts-node@7.0.1: - dependencies: - arrify: 1.0.1 - buffer-from: 1.1.2 - diff: 3.5.0 - make-error: 1.3.6 - minimist: 1.2.8 - mkdirp: 0.5.6 - source-map-support: 0.5.21 - yn: 2.0.0 - - tsconfig-paths@3.15.0: - dependencies: - '@types/json5': 0.0.29 - json5: 1.0.2 - minimist: 1.2.8 - strip-bom: 3.0.0 - optional: true - - tslib@2.8.0: {} - - type-detect@4.1.0: {} - - typescript@5.6.3: {} - - undici-types@6.19.8: {} - - utf-8-validate@5.0.10: - dependencies: - node-gyp-build: 4.8.2 - optional: true - - uuid@8.3.2: {} - - webidl-conversions@3.0.1: {} - - whatwg-url@5.0.0: - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - - workerpool@6.5.1: {} - - wrap-ansi@7.0.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - wrappy@1.0.2: {} - - ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10): - optionalDependencies: - bufferutil: 4.0.8 - utf-8-validate: 5.0.10 - - ws@8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): - optionalDependencies: - bufferutil: 4.0.8 - utf-8-validate: 5.0.10 - - y18n@5.0.8: {} - - yargs-parser@20.2.9: {} - - yargs-unparser@2.0.0: - dependencies: - camelcase: 6.3.0 - decamelize: 4.0.0 - flat: 5.0.2 - is-plain-obj: 2.1.0 - - yargs@16.2.0: - dependencies: - cliui: 7.0.4 - escalade: 3.2.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 20.2.9 - - yn@2.0.0: {} - - yocto-queue@0.1.0: {} diff --git a/basics/account-data/steel/program/Cargo.toml b/basics/account-data/steel/program/Cargo.toml deleted file mode 100644 index e4b64e4ac..000000000 --- a/basics/account-data/steel/program/Cargo.toml +++ /dev/null @@ -1,19 +0,0 @@ -[package] -name = "account-data-program" -version = "0.1.0" -edition = "2021" - -[lib] -crate-type = ["cdylib", "lib"] - -[dependencies] -account-data-api.workspace = true -solana-program.workspace = true -steel.workspace = true - -[dev-dependencies] -bs64 = "0.1.2" -rand = "0.8.5" -solana-program-test = "1.18" -solana-sdk = "1.18" -tokio = { version = "1.35", features = ["full"] } diff --git a/basics/account-data/steel/program/src/create_address_info.rs b/basics/account-data/steel/program/src/create_address_info.rs deleted file mode 100644 index 46d835e7d..000000000 --- a/basics/account-data/steel/program/src/create_address_info.rs +++ /dev/null @@ -1,106 +0,0 @@ -use account_data_api::prelude::*; -use solana_program::msg; -use steel::*; - -pub fn process_create_address_info(accounts: &[AccountInfo<'_>], data: &[u8]) -> ProgramResult { - msg!("Processing CreateAddressInfo instruction"); - - let [signer_account, create_address_account, system_program_account] = accounts else { - msg!("Error: Missing required accounts"); - return Err(ProgramError::NotEnoughAccountKeys); - }; - - let (_expected_address, bump) = account_pda(); - - // Validate accounts - if !signer_account.is_signer { - msg!("Error: Signer account must sign the transaction"); - return Err(ProgramError::MissingRequiredSignature); - } - - create_address_account - .is_empty() - .map_err(|_| { - msg!("Error: Address account must be empty"); - ProgramError::AccountAlreadyInitialized - })? - .is_writable() - .map_err(|_| { - msg!("Error: Address account must be writable"); - ProgramError::InvalidAccountData - })? - .has_seeds(&[ADDRESS_INFO_SEED], bump, &account_data_api::ID) - .map_err(|_| { - msg!("Error: Invalid PDA seeds or bump"); - ProgramError::InvalidSeeds - })?; - - system_program_account.is_program(&system_program::ID)?; - - let args = parse_instruction_data(data)?; - msg!( - "Instruction data parsed successfully: {{ - name: '{}', - house_number: {}, - street: '{}', - city: '{}' - }}", - bytes_to_string(&args.data.name), - u64::from_le_bytes(args.data.house_number), - bytes_to_string(&args.data.street), - bytes_to_string(&args.data.city), - ); - - create_account::( - create_address_account, - &account_data_api::ID, - &[ADDRESS_INFO_SEED, &[bump]], - system_program_account, - signer_account, - )?; - - let address_info = create_address_account - .to_account_mut::(&account_data_api::ID) - .map_err(|_| { - msg!("Error: Failed to deserialize address info account"); - ProgramError::InvalidAccountData - })?; - - address_info.data = args.data; - msg!( - "Address info updated successfully: {{ - name: '{}', - house_number: {}, - street: '{}', - city: '{}' - }}", - bytes_to_string(&address_info.data.name), - u64::from_le_bytes(address_info.data.house_number), - bytes_to_string(&address_info.data.street), - bytes_to_string(&address_info.data.city), - ); - - msg!("CreateAddressInfo instruction completed successfully"); - Ok(()) -} - -fn parse_instruction_data(data: &[u8]) -> Result { - CreateAddressInfo::try_from_bytes(data) - .map(|info| info.to_owned()) - .map_err(|_| { - msg!("Error: Failed to parse instruction data"); - ProgramError::InvalidInstructionData - }) -} - -// Helper function to convert byte array to string -fn bytes_to_string(bytes: &[u8]) -> String { - String::from_utf8( - bytes - .iter() - .take_while(|&&b| b != 0) - .copied() - .collect::>(), - ) - .unwrap_or_default() -} diff --git a/basics/account-data/steel/program/src/error.rs b/basics/account-data/steel/program/src/error.rs deleted file mode 100644 index ce615c9d5..000000000 --- a/basics/account-data/steel/program/src/error.rs +++ /dev/null @@ -1,21 +0,0 @@ -use steel::*; -use thiserror::Error; - -/// Custom error types for the address info program -#[repr(u32)] -#[derive(Debug, Error, Clone, Copy, PartialEq, Eq, IntoPrimitive)] -pub enum AddressInfoError { - #[error("Required account is missing")] - MissingRequiredAccount = 0, - - #[error("Account owner is invalid")] - InvalidAccountOwner = 1, - - #[error("Invalid instruction data")] - InvalidInstructionData = 2, - - #[error("Address info account already exists")] - AddressInfoAccountAlreadyExists = 3, -} - -error!(AddressInfoError); \ No newline at end of file diff --git a/basics/account-data/steel/program/src/lib.rs b/basics/account-data/steel/program/src/lib.rs deleted file mode 100644 index b8d4c3393..000000000 --- a/basics/account-data/steel/program/src/lib.rs +++ /dev/null @@ -1,33 +0,0 @@ -mod create_address_info; - -use account_data_api::prelude::*; -use create_address_info::*; -use solana_program::msg; -use steel::*; - -pub fn process_instruction( - program_id: &Pubkey, - accounts: &[AccountInfo], - data: &[u8], -) -> ProgramResult { - // Validate program ID - if program_id != &account_data_api::ID { - return Err(ProgramError::IncorrectProgramId); - } - - // Parse and validate instruction data - let (instruction, instruction_data) = - parse_instruction::(&account_data_api::ID, program_id, data)?; - - // Route instruction to appropriate processor - match instruction { - AddressInfoInstruction::CreateAddressInfo => { - msg!("Instruction: CreateAddressInfo"); - process_create_address_info(accounts, instruction_data)? - } - } - - Ok(()) -} - -entrypoint!(process_instruction); diff --git a/basics/account-data/steel/tests/addressInfo.test.ts b/basics/account-data/steel/tests/addressInfo.test.ts deleted file mode 100644 index d76182685..000000000 --- a/basics/account-data/steel/tests/addressInfo.test.ts +++ /dev/null @@ -1,149 +0,0 @@ -import { Keypair, PublicKey, SystemProgram, Transaction, TransactionInstruction } from '@solana/web3.js'; -import * as borsh from 'borsh'; -import { expect } from 'chai'; -import { BanksClient, ProgramTestContext, start } from 'solana-bankrun'; - -// Constants for program identification -const PROGRAM_ID = new PublicKey('Dw6Yq7TZSHdaqB2nKjsxuDrdp5xYCuZaVKFZb5vp5Y4Y'); -const ADDRESS_INFO_SEED = 'address_info'; - -// Instruction discriminators -const INSTRUCTION_DISCRIMINATORS = { - createAddressInfo: Buffer.from([0]), -}; - -// Type definitions -interface AddressInfoData { - name: string; - houseNumber: bigint; - street: string; - city: string; -} - -interface AddressInfoDataRaw { - name: Uint8Array; - houseNumber: bigint; - street: Uint8Array; - city: Uint8Array; -} - -interface AddressInfoAccount { - data: AddressInfoData; -} - -interface AddressInfoAccountRaw { - data: AddressInfoDataRaw; -} - -// Borsh schema definition -const ADDRESS_INFO_SCHEMA: borsh.Schema = { - struct: { - discriminator: 'u64', - data: { - struct: { - name: { array: { type: 'u8', len: 64 } }, - houseNumber: 'u64', - street: { array: { type: 'u8', len: 64 } }, - city: { array: { type: 'u8', len: 64 } }, - }, - }, - }, -}; - -// Helper functions -const stringToFixedBytes = (str: string, length: number): Uint8Array => { - const buffer = Buffer.alloc(length, 0); - buffer.write(str, 'utf-8'); - return Uint8Array.from(buffer); -}; - -const fixedBytesToString = (data: Uint8Array): string => { - return Buffer.from(data).toString('utf-8').replace(/\0/g, ''); -}; - -const bigIntToBytes = (value: bigint): Uint8Array => { - const buffer = Buffer.alloc(8); - buffer.writeBigUInt64LE(value, 0); - return Uint8Array.from(buffer); -}; - -const serializeAddressInfo = (data: AddressInfoData): Buffer => { - return Buffer.concat([ - stringToFixedBytes(data.name, 64), - bigIntToBytes(data.houseNumber), - stringToFixedBytes(data.street, 64), - stringToFixedBytes(data.city, 64), - ]); -}; - -const deserializeAddressInfo = (raw: AddressInfoAccountRaw): AddressInfoAccount => { - return { - data: { - name: fixedBytesToString(raw.data.name), - houseNumber: raw.data.houseNumber, - street: fixedBytesToString(raw.data.street), - city: fixedBytesToString(raw.data.city), - }, - }; -}; - -describe('Address Info Program', () => { - let context: ProgramTestContext; - let client: BanksClient; - let payer: Keypair; - let addressInfoPda: PublicKey; - - before(async () => { - // Initialize program test environment - context = await start([{ name: 'account_data_program', programId: PROGRAM_ID }], []); - client = context.banksClient; - payer = context.payer; - - // Derive program PDA - [addressInfoPda] = PublicKey.findProgramAddressSync([Buffer.from(ADDRESS_INFO_SEED)], PROGRAM_ID); - }); - - describe('create_address_info', () => { - it('successfully creates and initializes an address info account', async () => { - // Test data - const addressInfo = { - name: 'Joe C', - houseNumber: BigInt(136), - street: 'Mile High Dr.', - city: 'Solana Beach', - }; - - // Create and send transaction - const tx = new Transaction().add( - new TransactionInstruction({ - programId: PROGRAM_ID, - keys: [ - { pubkey: payer.publicKey, isSigner: true, isWritable: true }, - { pubkey: addressInfoPda, isSigner: false, isWritable: true }, - { pubkey: SystemProgram.programId, isSigner: false, isWritable: false }, - ], - data: Buffer.concat([INSTRUCTION_DISCRIMINATORS.createAddressInfo, serializeAddressInfo(addressInfo)]), - }), - ); - - tx.recentBlockhash = context.lastBlockhash; - tx.sign(payer); - - await client.processTransaction(tx); - - // Verify account data - const account = await client.getAccount(addressInfoPda); - expect(account).to.not.be.null; - - const accountData = borsh.deserialize(ADDRESS_INFO_SCHEMA, account?.data) as AddressInfoAccountRaw; - - const deserializedData = deserializeAddressInfo(accountData); - - // Verify each field - expect(deserializedData.data.name).to.equal(addressInfo.name); - expect(deserializedData.data.houseNumber).to.equal(addressInfo.houseNumber); - expect(deserializedData.data.street).to.equal(addressInfo.street); - expect(deserializedData.data.city).to.equal(addressInfo.city); - }); - }); -}); diff --git a/basics/account-data/steel/tsconfig.json b/basics/account-data/steel/tsconfig.json deleted file mode 100644 index 8c20b2236..000000000 --- a/basics/account-data/steel/tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "compilerOptions": { - "types": ["mocha", "chai", "node"], - "typeRoots": ["./node_modules/@types"], - "lib": ["es2015"], - "module": "commonjs", - "target": "es6", - "esModuleInterop": true - } -} diff --git a/basics/checking-accounts/steel/.gitignore b/basics/checking-accounts/steel/.gitignore deleted file mode 100644 index 052739dbc..000000000 --- a/basics/checking-accounts/steel/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -target -test-ledger diff --git a/basics/checking-accounts/steel/Cargo.toml b/basics/checking-accounts/steel/Cargo.toml deleted file mode 100644 index 2c00a539a..000000000 --- a/basics/checking-accounts/steel/Cargo.toml +++ /dev/null @@ -1,21 +0,0 @@ -[workspace] -resolver = "2" -members = ["api", "program"] - -[workspace.package] -version = "0.1.0" -edition = "2021" -license = "Apache-2.0" -homepage = "" -documentation = "" -respository = "" -readme = "./README.md" -keywords = ["solana"] - -[workspace.dependencies] -steel-api = { path = "./api", version = "0.1.0" } -bytemuck = "1.14" -num_enum = "0.7" -solana-program = "2.1" -steel = "3.0" -thiserror = "1.0" diff --git a/basics/checking-accounts/steel/README.md b/basics/checking-accounts/steel/README.md deleted file mode 100644 index 4f4fe2a54..000000000 --- a/basics/checking-accounts/steel/README.md +++ /dev/null @@ -1,22 +0,0 @@ -# Steel - -**Steel** is a ... - -## API -- [`Consts`](api/src/consts.rs) – Program constants. -- [`Error`](api/src/error.rs) – Custom program errors. -- [`Event`](api/src/event.rs) – Custom program events. -- [`Instruction`](api/src/instruction.rs) – Declared instructions. - -## Instructions -- [`Hello`](program/src/hello.rs) – Hello ... - -## State -- [`User`](api/src/state/user.rs) – User ... - -## Tests - -To run the test suit, use the Solana toolchain: -``` -cargo test-sbf -``` diff --git a/basics/checking-accounts/steel/api/Cargo.toml b/basics/checking-accounts/steel/api/Cargo.toml deleted file mode 100644 index 34b563782..000000000 --- a/basics/checking-accounts/steel/api/Cargo.toml +++ /dev/null @@ -1,11 +0,0 @@ -[package] -name = "steel-api" -version = "0.1.0" -edition = "2021" - -[dependencies] -bytemuck.workspace = true -num_enum.workspace = true -solana-program.workspace = true -steel.workspace = true -thiserror.workspace = true diff --git a/basics/checking-accounts/steel/api/src/consts.rs b/basics/checking-accounts/steel/api/src/consts.rs deleted file mode 100644 index 97104be5e..000000000 --- a/basics/checking-accounts/steel/api/src/consts.rs +++ /dev/null @@ -1,2 +0,0 @@ -/// Seed of the account_to_change account PDA. -pub const ACCOUNT_TO_CHANGE: &[u8] = b"account_to_change"; diff --git a/basics/checking-accounts/steel/api/src/instruction.rs b/basics/checking-accounts/steel/api/src/instruction.rs deleted file mode 100644 index f6225266c..000000000 --- a/basics/checking-accounts/steel/api/src/instruction.rs +++ /dev/null @@ -1,13 +0,0 @@ -use steel::*; - -#[repr(u8)] -#[derive(Clone, Copy, Debug, Eq, PartialEq, TryFromPrimitive)] -pub enum SteelInstruction { - CheckAccounts = 0, -} - -#[repr(C)] -#[derive(Clone, Copy, Debug, Pod, Zeroable)] -pub struct CheckAccounts {} - -instruction!(SteelInstruction, CheckAccounts); diff --git a/basics/checking-accounts/steel/api/src/lib.rs b/basics/checking-accounts/steel/api/src/lib.rs deleted file mode 100644 index 6db8ac73d..000000000 --- a/basics/checking-accounts/steel/api/src/lib.rs +++ /dev/null @@ -1,16 +0,0 @@ -pub mod consts; -pub mod instruction; -pub mod sdk; -pub mod state; - -pub mod prelude { - pub use crate::consts::*; - pub use crate::instruction::*; - pub use crate::sdk::*; - pub use crate::state::*; -} - -use steel::*; - -// TODO Set program id -declare_id!("z7msBPQHDJjTvdQRoEcKyENgXDhSRYeHieN1ZMTqo35"); diff --git a/basics/checking-accounts/steel/api/src/sdk.rs b/basics/checking-accounts/steel/api/src/sdk.rs deleted file mode 100644 index 60df2db5f..000000000 --- a/basics/checking-accounts/steel/api/src/sdk.rs +++ /dev/null @@ -1,20 +0,0 @@ -use steel::*; - -use crate::prelude::*; - -pub fn check_accounts( - signer: Pubkey, - account_to_create: Pubkey, - account_to_change: Pubkey, -) -> Instruction { - Instruction { - program_id: crate::ID, - accounts: vec![ - AccountMeta::new(signer, true), - AccountMeta::new(account_to_create, false), - AccountMeta::new(account_to_change, false), - AccountMeta::new_readonly(system_program::ID, false), - ], - data: CheckAccounts {}.to_bytes(), - } -} diff --git a/basics/checking-accounts/steel/api/src/state/account_to_change.rs b/basics/checking-accounts/steel/api/src/state/account_to_change.rs deleted file mode 100644 index 674d9f7bf..000000000 --- a/basics/checking-accounts/steel/api/src/state/account_to_change.rs +++ /dev/null @@ -1,9 +0,0 @@ -use steel::*; - -use super::SteelAccount; - -#[repr(C)] -#[derive(Clone, Copy, Debug, PartialEq, Pod, Zeroable)] -pub struct AccountToChange {} - -account!(SteelAccount, AccountToChange); diff --git a/basics/checking-accounts/steel/api/src/state/mod.rs b/basics/checking-accounts/steel/api/src/state/mod.rs deleted file mode 100644 index e44c1daa3..000000000 --- a/basics/checking-accounts/steel/api/src/state/mod.rs +++ /dev/null @@ -1,18 +0,0 @@ -mod account_to_change; - -pub use account_to_change::*; - -use steel::*; - -use crate::consts::*; - -#[repr(u8)] -#[derive(Clone, Copy, Debug, Eq, PartialEq, IntoPrimitive, TryFromPrimitive)] -pub enum SteelAccount { - AccountToChange = 0, -} - -/// Fetch PDA of the account_to_change account. -pub fn account_to_change_pda() -> (Pubkey, u8) { - Pubkey::find_program_address(&[ACCOUNT_TO_CHANGE], &crate::id()) -} diff --git a/basics/checking-accounts/steel/program/Cargo.toml b/basics/checking-accounts/steel/program/Cargo.toml deleted file mode 100644 index db99b68cc..000000000 --- a/basics/checking-accounts/steel/program/Cargo.toml +++ /dev/null @@ -1,19 +0,0 @@ -[package] -name = "steel-program" -version = "0.1.0" -edition = "2021" - -[lib] -crate-type = ["cdylib", "lib"] - -[dependencies] -steel-api.workspace = true -solana-program.workspace = true -steel.workspace = true - -[dev-dependencies] -base64 = "0.21" -rand = "0.8.5" -solana-program-test = "1.18" -solana-sdk = "1.18" -tokio = { version = "1.35", features = ["full"] } diff --git a/basics/checking-accounts/steel/program/src/check_accounts.rs b/basics/checking-accounts/steel/program/src/check_accounts.rs deleted file mode 100644 index 67f70fc6f..000000000 --- a/basics/checking-accounts/steel/program/src/check_accounts.rs +++ /dev/null @@ -1,49 +0,0 @@ -use solana_program::msg; -use steel::*; - -pub fn process_check_accounts(accounts: &[AccountInfo<'_>], _data: &[u8]) -> ProgramResult { - // Load accounts. - // You can verify the list has the correct number of accounts. - let [signer_info, account_to_create_info, account_to_change_info, system_program] = accounts - else { - return Err(ProgramError::NotEnoughAccountKeys); - }; - - // You can verify if an account is a signer - signer_info.is_signer()?; - - // You can verify the program ID from the instruction is in fact - // the program ID of your program. - if system_program.is_program(&system_program::ID).is_err() { - return Err(ProgramError::IncorrectProgramId); - }; - - // You can make sure an account has NOT been initialized. - - msg!("New account: {}", account_to_create_info.key); - if account_to_create_info.lamports() != 0 { - msg!("The program expected the account to create to not yet be initialized."); - return Err(ProgramError::AccountAlreadyInitialized); - }; - // (Create account...) - - // You can also make sure an account has been initialized. - msg!("Account to change: {}", account_to_change_info.key); - if account_to_change_info.lamports() == 0 { - msg!("The program expected the account to change to be initialized."); - return Err(ProgramError::UninitializedAccount); - }; - - // If we want to modify an account's data, it must be owned by our program. - if account_to_change_info.owner != &steel_api::ID { - msg!("Account to change does not have the correct program id."); - return Err(ProgramError::IncorrectProgramId); - }; - - // You can also check pubkeys against constants. - if system_program.key != &system_program::ID { - return Err(ProgramError::IncorrectProgramId); - }; - - Ok(()) -} diff --git a/basics/checking-accounts/steel/program/src/lib.rs b/basics/checking-accounts/steel/program/src/lib.rs deleted file mode 100644 index 421e9e3b3..000000000 --- a/basics/checking-accounts/steel/program/src/lib.rs +++ /dev/null @@ -1,22 +0,0 @@ -mod check_accounts; - -use check_accounts::*; - -use steel::*; -use steel_api::prelude::*; - -pub fn process_instruction( - program_id: &Pubkey, - accounts: &[AccountInfo], - data: &[u8], -) -> ProgramResult { - let (ix, data) = parse_instruction(&steel_api::ID, program_id, data)?; - - match ix { - SteelInstruction::CheckAccounts => process_check_accounts(accounts, data)?, - } - - Ok(()) -} - -entrypoint!(process_instruction); diff --git a/basics/checking-accounts/steel/program/tests/test.rs b/basics/checking-accounts/steel/program/tests/test.rs deleted file mode 100644 index bc8f607c0..000000000 --- a/basics/checking-accounts/steel/program/tests/test.rs +++ /dev/null @@ -1,51 +0,0 @@ -use solana_program::hash::Hash; -use solana_program_test::{processor, BanksClient, ProgramTest}; -use solana_sdk::{signature::Keypair, signer::Signer, transaction::Transaction}; -use steel_api::prelude::*; - -async fn setup() -> (BanksClient, Keypair, Hash) { - let mut program_test = ProgramTest::new( - "steel_program", - steel_api::ID, - processor!(steel_program::process_instruction), - ); - program_test.prefer_bpf(true); - program_test.start().await -} - -#[tokio::test] -async fn run_test() { - // Setup test - let (mut banks, payer, blockhash) = setup().await; - - let account_to_create = Keypair::new(); - let account_to_change = Keypair::new(); - - let account_to_change_ix = solana_sdk::system_instruction::create_account( - &payer.pubkey(), - &account_to_change.pubkey(), - solana_sdk::native_token::LAMPORTS_PER_SOL, - 0, - &steel_api::ID, - ); - - let tx = Transaction::new_signed_with_payer( - &[account_to_change_ix], - Some(&payer.pubkey()), - &[&payer, &account_to_change], - blockhash, - ); - - let res = banks.process_transaction(tx).await; - assert!(res.is_ok()); - - // Submit check_accounts transaction. - let ix = check_accounts( - payer.pubkey(), - account_to_create.pubkey(), - account_to_change.pubkey(), - ); - let tx = Transaction::new_signed_with_payer(&[ix], Some(&payer.pubkey()), &[&payer], blockhash); - let res = banks.process_transaction(tx).await; - assert!(res.is_ok()); -} diff --git a/basics/close-account/steel/.gitignore b/basics/close-account/steel/.gitignore deleted file mode 100644 index 052739dbc..000000000 --- a/basics/close-account/steel/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -target -test-ledger diff --git a/basics/close-account/steel/Cargo.toml b/basics/close-account/steel/Cargo.toml deleted file mode 100644 index 8234e1199..000000000 --- a/basics/close-account/steel/Cargo.toml +++ /dev/null @@ -1,21 +0,0 @@ -[workspace] -members = ["api", "program"] -resolver = "2" - -[workspace.package] -version = "0.1.0" -edition = "2021" -license = "Apache-2.0" -homepage = "https://github.com/solana-developers/program-examples" -documentation = "https://github.com/solana-developers/program-examples" -respository = "https://github.com/solana-developers/program-examples" -readme = "./README.md" -keywords = ["solana"] - -[workspace.dependencies] -close-account-api = { path = "./api", version = "0.1.0" } -bytemuck = "1.14" -num_enum = "0.7" -solana-program = "2.1" -steel = "3.0" -thiserror = "1.0" diff --git a/basics/close-account/steel/README.md b/basics/close-account/steel/README.md deleted file mode 100644 index 604146bb9..000000000 --- a/basics/close-account/steel/README.md +++ /dev/null @@ -1,22 +0,0 @@ -# CloseAccount - -**CloseAccount** is a ... - -## API -- [`Consts`](api/src/consts.rs) – Program constants. -- [`Error`](api/src/error.rs) – Custom program errors. -- [`Event`](api/src/event.rs) – Custom program events. -- [`Instruction`](api/src/instruction.rs) – Declared instructions. - -## Instructions -- [`Hello`](program/src/hello.rs) – Hello ... - -## State -- [`User`](api/src/state/user.rs) – User ... - -## Tests - -To run the test suit, use the Solana toolchain: -``` -cargo test-sbf -``` diff --git a/basics/close-account/steel/api/Cargo.toml b/basics/close-account/steel/api/Cargo.toml deleted file mode 100644 index e57d05cf4..000000000 --- a/basics/close-account/steel/api/Cargo.toml +++ /dev/null @@ -1,12 +0,0 @@ -[package] -name = "close-account-api" -version = "0.1.0" -edition = "2021" - -[dependencies] -bytemuck.workspace = true -jzon = "0.12.5" -num_enum.workspace = true -solana-program.workspace = true -steel.workspace = true -thiserror.workspace = true diff --git a/basics/close-account/steel/api/src/error.rs b/basics/close-account/steel/api/src/error.rs deleted file mode 100644 index 9a0fe19fe..000000000 --- a/basics/close-account/steel/api/src/error.rs +++ /dev/null @@ -1,18 +0,0 @@ -use steel::*; - -/// A [Result] type representing `Result` -pub type CloseAccountResult = Result; - -/// Error handling enum for this create -#[derive(Debug, Error, Clone, Copy, PartialEq, Eq, IntoPrimitive)] -#[repr(u32)] -pub enum CloseAccountError { - /// A name can only be 64 bytes in length when converted to bytes - #[error("Invalid Name Length. The maximum length of the string is 64 bytes.")] - MaxNameLengthExceeded = 0, - /// Only UTF-8 String types are supported - #[error("Only UTF-8 String encoding is supported")] - OnlyUtf8IsSupported = 1, -} - -error!(CloseAccountError); diff --git a/basics/close-account/steel/api/src/instruction.rs b/basics/close-account/steel/api/src/instruction.rs deleted file mode 100644 index 375cf6f77..000000000 --- a/basics/close-account/steel/api/src/instruction.rs +++ /dev/null @@ -1,25 +0,0 @@ -use steel::*; - -/// Used in generating the discriminats for instructions -#[repr(u8)] -#[derive(Clone, Copy, Debug, Eq, PartialEq, TryFromPrimitive)] -pub enum MyInstruction { - /// Create account discriminant represented by `0` - CreateAccount = 0, - /// Close account discriminant represented by `1` - CloseAccount = 1, -} - -/// Create account struct with the name -/// as an array of 64 bytes -#[repr(C)] -#[derive(Clone, Copy, Debug, Pod, Zeroable)] -pub struct CreateAccount(pub [u8; 64]); - -/// UsedClose Account -#[repr(C)] -#[derive(Clone, Copy, Debug, Pod, Zeroable)] -pub struct CloseAccount; - -instruction!(MyInstruction, CreateAccount); -instruction!(MyInstruction, CloseAccount); diff --git a/basics/close-account/steel/api/src/lib.rs b/basics/close-account/steel/api/src/lib.rs deleted file mode 100644 index 4485ade1c..000000000 --- a/basics/close-account/steel/api/src/lib.rs +++ /dev/null @@ -1,18 +0,0 @@ -#![forbid(unsafe_code)] - -pub mod error; -pub mod instruction; -pub mod sdk; -pub mod state; - -pub mod prelude { - pub use crate::error::*; - pub use crate::instruction::*; - pub use crate::sdk::*; - pub use crate::state::*; -} - -use steel::*; - -// Set program id -declare_id!("z7msBPQHDJjTvdQRoEcKyENgXDhSRYeHieN1ZMTqo35"); diff --git a/basics/close-account/steel/api/src/sdk.rs b/basics/close-account/steel/api/src/sdk.rs deleted file mode 100644 index 9004c8204..000000000 --- a/basics/close-account/steel/api/src/sdk.rs +++ /dev/null @@ -1,31 +0,0 @@ -use steel::*; - -use crate::prelude::*; - -/// Create an PDA and store a String in it -pub fn create_account(signer: Pubkey, user: CreateAccount) -> Instruction { - Instruction { - program_id: crate::ID, - accounts: vec![ - AccountMeta::new(signer, true), - AccountMeta::new(User::pda(signer).0, false), - AccountMeta::new_readonly(system_program::ID, false), - ], - data: user.to_bytes(), - } -} - -/// Creates an instruction to close the account, -/// in our case the PDA. The PDA address is derived from -/// the `payer` public key -pub fn close_account(signer: Pubkey) -> Instruction { - Instruction { - program_id: crate::ID, - accounts: vec![ - AccountMeta::new(signer, true), - AccountMeta::new(User::pda(signer).0, false), - AccountMeta::new_readonly(system_program::ID, false), - ], - data: CloseAccount.to_bytes(), - } -} diff --git a/basics/close-account/steel/api/src/state/mod.rs b/basics/close-account/steel/api/src/state/mod.rs deleted file mode 100644 index ba80f7ece..000000000 --- a/basics/close-account/steel/api/src/state/mod.rs +++ /dev/null @@ -1,2 +0,0 @@ -mod user; -pub use user::*; diff --git a/basics/close-account/steel/api/src/state/user.rs b/basics/close-account/steel/api/src/state/user.rs deleted file mode 100644 index 01ac23672..000000000 --- a/basics/close-account/steel/api/src/state/user.rs +++ /dev/null @@ -1,75 +0,0 @@ -use steel::*; - -use crate::error::{CloseAccountError, CloseAccountResult}; - -/// An enum which is used to derive a discriminator for the user account. -#[repr(u8)] -#[derive(Clone, Copy, Debug, Eq, PartialEq, IntoPrimitive, TryFromPrimitive)] -pub enum UserAccount { - /// The user is represented by a discriminator of `0` - User = 0, -} - -/// The user Account structure which stores a -/// `name` as bytes with max array length of u64 due to the -/// requirement for memory alignment since 64 is a factor of 8. -#[repr(C)] -#[derive(Clone, Copy, Debug, PartialEq, Pod, Zeroable)] -pub struct User { - /// The name string stored as bytes. - /// The `&str` is converted into bytes and copied upto - /// the length of the bytes, if the bytes are not 64, it - /// pads with zeroes upto 64, if it is more than 64 an error - /// is returned. - pub name: [u8; 64], -} - -impl User { - /// Seed for the [User] used to in PDA generation - pub const SEED_PREFIX: &'static str = "USER"; - - /// Create a new user, convert the name into bytes - /// and add those bytes to a 64 byte array - pub fn new(name: &str) -> CloseAccountResult { - let name_bytes = name.as_bytes(); - - Self::check_length(name_bytes)?; - - let mut name = [0u8; 64]; - name[0..name_bytes.len()].copy_from_slice(name_bytes); - - Ok(Self { name }) - } - - /// Converts the byte array into a UTF-8 [str] - /// using the `trim_end_matches("\0")` of [str] method - /// to remove padded zeroes if any. Padded zeroes are - /// represented by `\0` - pub fn to_string(&self) -> CloseAccountResult { - let value = - core::str::from_utf8(&self.name).map_err(|_| CloseAccountError::OnlyUtf8IsSupported)?; - - Ok(value.trim_end_matches("\0").to_string()) - } - - fn check_length(bytes: &[u8]) -> CloseAccountResult<()> { - if bytes.len() > 64 { - return Err(CloseAccountError::MaxNameLengthExceeded); - } - - Ok(()) - } - - /// Generate a PDA from the [Self::SEED_PREFIX] constant - /// and the payer public key. This returns a tuple struct - /// ([Pubkey], [u8]) - pub fn pda(payer: Pubkey) -> (Pubkey, u8) { - Pubkey::try_find_program_address( - &[Self::SEED_PREFIX.as_bytes(), payer.as_ref()], - &crate::id(), - ) - .unwrap() - } -} - -account!(UserAccount, User); diff --git a/basics/close-account/steel/cicd.sh b/basics/close-account/steel/cicd.sh deleted file mode 100644 index 0903cf896..000000000 --- a/basics/close-account/steel/cicd.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash - -# This script is for quick building & deploying of the program. -# It also serves as a reference for the commands used for building & deploying Solana programs. -# Run this bad boy with "bash cicd.sh" or "./cicd.sh" - -cargo build-sbf --manifest-path=./program/Cargo.toml --bpf-out-dir=./program/target/so -solana program deploy ./program/target/so/program.so diff --git a/basics/close-account/steel/package.json b/basics/close-account/steel/package.json deleted file mode 100644 index 03bbcb3db..000000000 --- a/basics/close-account/steel/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "scripts": { - "test": "pnpm ts-mocha -p ./tests/tsconfig.test.json -t 1000000 ./tests/close-account.test.ts", - "build-and-test": "cargo build-sbf --manifest-path=./program/Cargo.toml --sbf-out-dir=./tests/fixtures && pnpm test", - "build": "cargo build-sbf --manifest-path=./program/Cargo.toml --sbf-out-dir=./target/so", - "deploy": "solana program deploy ./target/so/close_account_program.so" - }, - "dependencies": { - "@coral-xyz/borsh": "^0.30.1", - "@solana/web3.js": "^1.35" - }, - "devDependencies": { - "solana-bankrun": "^0.4.0", - "typescript": "^5.6.3", - "ts-mocha": "^10.0.0" - }, - "packageManager": "pnpm@9.9.0+sha512.60c18acd138bff695d339be6ad13f7e936eea6745660d4cc4a776d5247c540d0edee1a563695c183a66eb917ef88f2b4feb1fc25f32a7adcadc7aaf3438e99c1" -} diff --git a/basics/close-account/steel/pnpm-lock.yaml b/basics/close-account/steel/pnpm-lock.yaml deleted file mode 100644 index 181cae091..000000000 --- a/basics/close-account/steel/pnpm-lock.yaml +++ /dev/null @@ -1,1249 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -importers: - - .: - dependencies: - '@coral-xyz/borsh': - specifier: ^0.30.1 - version: 0.30.1(@solana/web3.js@1.98.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)) - '@solana/web3.js': - specifier: ^1.35 - version: 1.98.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10) - devDependencies: - solana-bankrun: - specifier: ^0.4.0 - version: 0.4.0(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10) - ts-mocha: - specifier: ^10.0.0 - version: 10.1.0(mocha@11.4.0) - typescript: - specifier: ^5.6.3 - version: 5.8.3 - -packages: - - '@babel/runtime@7.27.1': - resolution: {integrity: sha512-1x3D2xEk2fRo3PAhwQwu5UubzgiVWSXTBfWpVd2Mx2AzRqJuDJCsgaDVZ7HB5iGzDW1Hl1sWN2mFyKjmR9uAog==} - engines: {node: '>=6.9.0'} - - '@coral-xyz/borsh@0.30.1': - resolution: {integrity: sha512-aaxswpPrCFKl8vZTbxLssA2RvwX2zmKLlRCIktJOwW+VpVwYtXRtlWiIP+c2pPRKneiTiWCN2GEMSH9j1zTlWQ==} - engines: {node: '>=10'} - peerDependencies: - '@solana/web3.js': ^1.68.0 - - '@isaacs/cliui@8.0.2': - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} - - '@noble/curves@1.9.1': - resolution: {integrity: sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA==} - engines: {node: ^14.21.3 || >=16} - - '@noble/hashes@1.8.0': - resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==} - engines: {node: ^14.21.3 || >=16} - - '@pkgjs/parseargs@0.11.0': - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} - - '@solana/buffer-layout@4.0.1': - resolution: {integrity: sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==} - engines: {node: '>=5.10'} - - '@solana/codecs-core@2.1.1': - resolution: {integrity: sha512-iPQW3UZ2Vi7QFBo2r9tw0NubtH8EdrhhmZulx6lC8V5a+qjaxovtM/q/UW2BTNpqqHLfO0tIcLyBLrNH4HTWPg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.3.3' - - '@solana/codecs-numbers@2.1.1': - resolution: {integrity: sha512-m20IUPJhPUmPkHSlZ2iMAjJ7PaYUvlMtFhCQYzm9BEBSI6OCvXTG3GAPpAnSGRBfg5y+QNqqmKn4QHU3B6zzCQ==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.3.3' - - '@solana/errors@2.1.1': - resolution: {integrity: sha512-sj6DaWNbSJFvLzT8UZoabMefQUfSW/8tXK7NTiagsDmh+Q87eyQDDC9L3z+mNmx9b6dEf6z660MOIplDD2nfEw==} - engines: {node: '>=20.18.0'} - hasBin: true - peerDependencies: - typescript: '>=5.3.3' - - '@solana/web3.js@1.98.2': - resolution: {integrity: sha512-BqVwEG+TaG2yCkBMbD3C4hdpustR4FpuUFRPUmqRZYYlPI9Hg4XMWxHWOWRzHE9Lkc9NDjzXFX7lDXSgzC7R1A==} - - '@swc/helpers@0.5.17': - resolution: {integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==} - - '@types/connect@3.4.38': - resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} - - '@types/json5@0.0.29': - resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - - '@types/node@12.20.55': - resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - - '@types/node@22.15.19': - resolution: {integrity: sha512-3vMNr4TzNQyjHcRZadojpRaD9Ofr6LsonZAoQ+HMUa/9ORTPoxVIw0e0mpqWpdjj8xybyCM+oKOUH2vwFu/oEw==} - - '@types/uuid@8.3.4': - resolution: {integrity: sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==} - - '@types/ws@7.4.7': - resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==} - - '@types/ws@8.18.1': - resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} - - agentkeepalive@4.6.0: - resolution: {integrity: sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==} - engines: {node: '>= 8.0.0'} - - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - ansi-regex@6.1.0: - resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} - engines: {node: '>=12'} - - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - - ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} - - argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - - arrify@1.0.1: - resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} - engines: {node: '>=0.10.0'} - - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - base-x@3.0.11: - resolution: {integrity: sha512-xz7wQ8xDhdyP7tQxwdteLYeFfS68tSMNCZ/Y37WJ4bhGfKPpqEIlmIyueQHqOyoPhE6xNUqjzRr8ra0eF9VRvA==} - - base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - - bn.js@5.2.2: - resolution: {integrity: sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw==} - - borsh@0.7.0: - resolution: {integrity: sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==} - - brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - - browser-stdout@1.3.1: - resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} - - bs58@4.0.1: - resolution: {integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==} - - buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - - buffer-layout@1.2.2: - resolution: {integrity: sha512-kWSuLN694+KTk8SrYvCqwP2WcgQjoRCiF5b4QDvkkz8EmgD+aWAIceGFKMIAdmF/pH+vpgNV3d3kAKorcdAmWA==} - engines: {node: '>=4.5'} - - buffer@6.0.3: - resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} - - bufferutil@4.0.9: - resolution: {integrity: sha512-WDtdLmJvAuNNPzByAYpRo2rF1Mmradw6gvWsQKf63476DDXmomT9zUiGypLcG4ibIM67vhAj8jJRdbmEws2Aqw==} - engines: {node: '>=6.14.2'} - - camelcase@6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} - - chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - - chalk@5.4.1: - resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - - chokidar@4.0.3: - resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} - engines: {node: '>= 14.16.0'} - - cliui@8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} - engines: {node: '>=12'} - - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - commander@13.1.0: - resolution: {integrity: sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==} - engines: {node: '>=18'} - - commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - - cross-spawn@7.0.6: - resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} - engines: {node: '>= 8'} - - debug@4.4.1: - resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - decamelize@4.0.0: - resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} - engines: {node: '>=10'} - - delay@5.0.0: - resolution: {integrity: sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==} - engines: {node: '>=10'} - - diff@3.5.0: - resolution: {integrity: sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==} - engines: {node: '>=0.3.1'} - - diff@7.0.0: - resolution: {integrity: sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==} - engines: {node: '>=0.3.1'} - - eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - - emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - - es6-promise@4.2.8: - resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} - - es6-promisify@5.0.0: - resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==} - - escalade@3.2.0: - resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} - engines: {node: '>=6'} - - escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - - eventemitter3@5.0.1: - resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} - - eyes@0.1.8: - resolution: {integrity: sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==} - engines: {node: '> 0.1.90'} - - fast-stable-stringify@1.0.0: - resolution: {integrity: sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==} - - find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - - flat@5.0.2: - resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} - hasBin: true - - foreground-child@3.3.1: - resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} - engines: {node: '>=14'} - - get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - - glob@10.4.5: - resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} - hasBin: true - - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - - he@1.2.0: - resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} - hasBin: true - - humanize-ms@1.2.1: - resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} - - ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - - is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - - is-plain-obj@2.1.0: - resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} - engines: {node: '>=8'} - - is-unicode-supported@0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} - engines: {node: '>=10'} - - isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - - isomorphic-ws@4.0.1: - resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==} - peerDependencies: - ws: '*' - - jackspeak@3.4.3: - resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - - jayson@4.2.0: - resolution: {integrity: sha512-VfJ9t1YLwacIubLhONk0KFeosUBwstRWQ0IRT1KDjEjnVnSOVHC3uwugyV7L0c7R9lpVyrUGT2XWiBA1UTtpyg==} - engines: {node: '>=8'} - hasBin: true - - js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true - - json-stringify-safe@5.0.1: - resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} - - json5@1.0.2: - resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} - hasBin: true - - locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - - log-symbols@4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} - engines: {node: '>=10'} - - lru-cache@10.4.3: - resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - - make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - - minimatch@5.1.6: - resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} - engines: {node: '>=10'} - - minimatch@9.0.5: - resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} - engines: {node: '>=16 || 14 >=14.17'} - - minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - - minipass@7.1.2: - resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} - engines: {node: '>=16 || 14 >=14.17'} - - mkdirp@0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} - hasBin: true - - mocha@11.4.0: - resolution: {integrity: sha512-O6oi5Y9G6uu8f9iqXR6iKNLWHLRex3PKbmHynfpmUnMJJGrdgXh8ZmS85Ei5KR2Gnl+/gQ9s+Ktv5CqKybNw4A==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - hasBin: true - - ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - - node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - - node-gyp-build@4.8.4: - resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==} - hasBin: true - - p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - - p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - - package-json-from-dist@1.0.1: - resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} - - path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - - path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - - path-scurry@1.11.1: - resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} - engines: {node: '>=16 || 14 >=14.18'} - - picocolors@1.1.1: - resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - - randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - - readdirp@4.1.2: - resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} - engines: {node: '>= 14.18.0'} - - require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - - rpc-websockets@9.1.1: - resolution: {integrity: sha512-1IXGM/TfPT6nfYMIXkJdzn+L4JEsmb0FL1O2OBjaH03V3yuUDdKFulGLMFG6ErV+8pZ5HVC0limve01RyO+saA==} - - safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - - serialize-javascript@6.0.2: - resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} - - shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - - shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - - signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} - - solana-bankrun-darwin-arm64@0.4.0: - resolution: {integrity: sha512-6dz78Teoz7ez/3lpRLDjktYLJb79FcmJk2me4/YaB8WiO6W43OdExU4h+d2FyuAryO2DgBPXaBoBNY/8J1HJmw==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - - solana-bankrun-darwin-universal@0.4.0: - resolution: {integrity: sha512-zSSw/Jx3KNU42pPMmrEWABd0nOwGJfsj7nm9chVZ3ae7WQg3Uty0hHAkn5NSDCj3OOiN0py9Dr1l9vmRJpOOxg==} - engines: {node: '>= 10'} - os: [darwin] - - solana-bankrun-darwin-x64@0.4.0: - resolution: {integrity: sha512-LWjs5fsgHFtyr7YdJR6r0Ho5zrtzI6CY4wvwPXr8H2m3b4pZe6RLIZjQtabCav4cguc14G0K8yQB2PTMuGub8w==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - - solana-bankrun-linux-x64-gnu@0.4.0: - resolution: {integrity: sha512-SrlVrb82UIxt21Zr/XZFHVV/h9zd2/nP25PMpLJVLD7Pgl2yhkhfi82xj3OjxoQqWe+zkBJ+uszA0EEKr67yNw==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - solana-bankrun-linux-x64-musl@0.4.0: - resolution: {integrity: sha512-Nv328ZanmURdYfcLL+jwB1oMzX4ZzK57NwIcuJjGlf0XSNLq96EoaO5buEiUTo4Ls7MqqMyLbClHcrPE7/aKyA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - solana-bankrun@0.4.0: - resolution: {integrity: sha512-NMmXUipPBkt8NgnyNO3SCnPERP6xT/AMNMBooljGA3+rG6NN8lmXJsKeLqQTiFsDeWD74U++QM/DgcueSWvrIg==} - engines: {node: '>= 10'} - - source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - - source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - - stream-chain@2.2.5: - resolution: {integrity: sha512-1TJmBx6aSWqZ4tx7aTpBDXK0/e2hhcNSTV8+CbFJtDjbb+I1mZ8lHit0Grw9GRT+6JbIrrDd8esncgBi8aBXGA==} - - stream-json@1.9.1: - resolution: {integrity: sha512-uWkjJ+2Nt/LO9Z/JyKZbMusL8Dkh97uUBTv3AJQ74y07lVahLY4eEFsPsE97pxYBwr8nnjMAIch5eqI0gPShyw==} - - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - - string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} - - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - - strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} - engines: {node: '>=12'} - - strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - - strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - - superstruct@2.0.2: - resolution: {integrity: sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A==} - engines: {node: '>=14.0.0'} - - supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - - supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} - - text-encoding-utf-8@1.0.2: - resolution: {integrity: sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==} - - tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - - ts-mocha@10.1.0: - resolution: {integrity: sha512-T0C0Xm3/WqCuF2tpa0GNGESTBoKZaiqdUP8guNv4ZY316AFXlyidnrzQ1LUrCT0Wb1i3J0zFTgOh/55Un44WdA==} - engines: {node: '>= 6.X.X'} - hasBin: true - peerDependencies: - mocha: ^3.X.X || ^4.X.X || ^5.X.X || ^6.X.X || ^7.X.X || ^8.X.X || ^9.X.X || ^10.X.X || ^11.X.X - - ts-node@7.0.1: - resolution: {integrity: sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==} - engines: {node: '>=4.2.0'} - hasBin: true - - tsconfig-paths@3.15.0: - resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} - - tslib@2.8.1: - resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - - typescript@5.8.3: - resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} - engines: {node: '>=14.17'} - hasBin: true - - undici-types@6.21.0: - resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} - - utf-8-validate@5.0.10: - resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==} - engines: {node: '>=6.14.2'} - - uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - hasBin: true - - webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - - whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - - which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - - workerpool@6.5.1: - resolution: {integrity: sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==} - - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - - wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} - - ws@7.5.10: - resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} - engines: {node: '>=8.3.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - ws@8.18.2: - resolution: {integrity: sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - - yargs-parser@21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} - - yargs-unparser@2.0.0: - resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} - engines: {node: '>=10'} - - yargs@17.7.2: - resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} - engines: {node: '>=12'} - - yn@2.0.0: - resolution: {integrity: sha512-uTv8J/wiWTgUTg+9vLTi//leUl5vDQS6uii/emeTb2ssY7vl6QWf2fFbIIGjnhjvbdKlU0ed7QPgY1htTC86jQ==} - engines: {node: '>=4'} - - yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - -snapshots: - - '@babel/runtime@7.27.1': {} - - '@coral-xyz/borsh@0.30.1(@solana/web3.js@1.98.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10))': - dependencies: - '@solana/web3.js': 1.98.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10) - bn.js: 5.2.2 - buffer-layout: 1.2.2 - - '@isaacs/cliui@8.0.2': - dependencies: - string-width: 5.1.2 - string-width-cjs: string-width@4.2.3 - strip-ansi: 7.1.0 - strip-ansi-cjs: strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: wrap-ansi@7.0.0 - - '@noble/curves@1.9.1': - dependencies: - '@noble/hashes': 1.8.0 - - '@noble/hashes@1.8.0': {} - - '@pkgjs/parseargs@0.11.0': - optional: true - - '@solana/buffer-layout@4.0.1': - dependencies: - buffer: 6.0.3 - - '@solana/codecs-core@2.1.1(typescript@5.8.3)': - dependencies: - '@solana/errors': 2.1.1(typescript@5.8.3) - typescript: 5.8.3 - - '@solana/codecs-numbers@2.1.1(typescript@5.8.3)': - dependencies: - '@solana/codecs-core': 2.1.1(typescript@5.8.3) - '@solana/errors': 2.1.1(typescript@5.8.3) - typescript: 5.8.3 - - '@solana/errors@2.1.1(typescript@5.8.3)': - dependencies: - chalk: 5.4.1 - commander: 13.1.0 - typescript: 5.8.3 - - '@solana/web3.js@1.98.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)': - dependencies: - '@babel/runtime': 7.27.1 - '@noble/curves': 1.9.1 - '@noble/hashes': 1.8.0 - '@solana/buffer-layout': 4.0.1 - '@solana/codecs-numbers': 2.1.1(typescript@5.8.3) - agentkeepalive: 4.6.0 - bn.js: 5.2.2 - borsh: 0.7.0 - bs58: 4.0.1 - buffer: 6.0.3 - fast-stable-stringify: 1.0.0 - jayson: 4.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - node-fetch: 2.7.0 - rpc-websockets: 9.1.1 - superstruct: 2.0.2 - transitivePeerDependencies: - - bufferutil - - encoding - - typescript - - utf-8-validate - - '@swc/helpers@0.5.17': - dependencies: - tslib: 2.8.1 - - '@types/connect@3.4.38': - dependencies: - '@types/node': 12.20.55 - - '@types/json5@0.0.29': - optional: true - - '@types/node@12.20.55': {} - - '@types/node@22.15.19': - dependencies: - undici-types: 6.21.0 - - '@types/uuid@8.3.4': {} - - '@types/ws@7.4.7': - dependencies: - '@types/node': 12.20.55 - - '@types/ws@8.18.1': - dependencies: - '@types/node': 22.15.19 - - agentkeepalive@4.6.0: - dependencies: - humanize-ms: 1.2.1 - - ansi-regex@5.0.1: {} - - ansi-regex@6.1.0: {} - - ansi-styles@4.3.0: - dependencies: - color-convert: 2.0.1 - - ansi-styles@6.2.1: {} - - argparse@2.0.1: {} - - arrify@1.0.1: {} - - balanced-match@1.0.2: {} - - base-x@3.0.11: - dependencies: - safe-buffer: 5.2.1 - - base64-js@1.5.1: {} - - bn.js@5.2.2: {} - - borsh@0.7.0: - dependencies: - bn.js: 5.2.2 - bs58: 4.0.1 - text-encoding-utf-8: 1.0.2 - - brace-expansion@2.0.1: - dependencies: - balanced-match: 1.0.2 - - browser-stdout@1.3.1: {} - - bs58@4.0.1: - dependencies: - base-x: 3.0.11 - - buffer-from@1.1.2: {} - - buffer-layout@1.2.2: {} - - buffer@6.0.3: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - - bufferutil@4.0.9: - dependencies: - node-gyp-build: 4.8.4 - optional: true - - camelcase@6.3.0: {} - - chalk@4.1.2: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - - chalk@5.4.1: {} - - chokidar@4.0.3: - dependencies: - readdirp: 4.1.2 - - cliui@8.0.1: - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - - color-convert@2.0.1: - dependencies: - color-name: 1.1.4 - - color-name@1.1.4: {} - - commander@13.1.0: {} - - commander@2.20.3: {} - - cross-spawn@7.0.6: - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - - debug@4.4.1(supports-color@8.1.1): - dependencies: - ms: 2.1.3 - optionalDependencies: - supports-color: 8.1.1 - - decamelize@4.0.0: {} - - delay@5.0.0: {} - - diff@3.5.0: {} - - diff@7.0.0: {} - - eastasianwidth@0.2.0: {} - - emoji-regex@8.0.0: {} - - emoji-regex@9.2.2: {} - - es6-promise@4.2.8: {} - - es6-promisify@5.0.0: - dependencies: - es6-promise: 4.2.8 - - escalade@3.2.0: {} - - escape-string-regexp@4.0.0: {} - - eventemitter3@5.0.1: {} - - eyes@0.1.8: {} - - fast-stable-stringify@1.0.0: {} - - find-up@5.0.0: - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - - flat@5.0.2: {} - - foreground-child@3.3.1: - dependencies: - cross-spawn: 7.0.6 - signal-exit: 4.1.0 - - get-caller-file@2.0.5: {} - - glob@10.4.5: - dependencies: - foreground-child: 3.3.1 - jackspeak: 3.4.3 - minimatch: 9.0.5 - minipass: 7.1.2 - package-json-from-dist: 1.0.1 - path-scurry: 1.11.1 - - has-flag@4.0.0: {} - - he@1.2.0: {} - - humanize-ms@1.2.1: - dependencies: - ms: 2.1.3 - - ieee754@1.2.1: {} - - is-fullwidth-code-point@3.0.0: {} - - is-plain-obj@2.1.0: {} - - is-unicode-supported@0.1.0: {} - - isexe@2.0.0: {} - - isomorphic-ws@4.0.1(ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10)): - dependencies: - ws: 7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10) - - jackspeak@3.4.3: - dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 - - jayson@4.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10): - dependencies: - '@types/connect': 3.4.38 - '@types/node': 12.20.55 - '@types/ws': 7.4.7 - commander: 2.20.3 - delay: 5.0.0 - es6-promisify: 5.0.0 - eyes: 0.1.8 - isomorphic-ws: 4.0.1(ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - json-stringify-safe: 5.0.1 - stream-json: 1.9.1 - uuid: 8.3.2 - ws: 7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - js-yaml@4.1.0: - dependencies: - argparse: 2.0.1 - - json-stringify-safe@5.0.1: {} - - json5@1.0.2: - dependencies: - minimist: 1.2.8 - optional: true - - locate-path@6.0.0: - dependencies: - p-locate: 5.0.0 - - log-symbols@4.1.0: - dependencies: - chalk: 4.1.2 - is-unicode-supported: 0.1.0 - - lru-cache@10.4.3: {} - - make-error@1.3.6: {} - - minimatch@5.1.6: - dependencies: - brace-expansion: 2.0.1 - - minimatch@9.0.5: - dependencies: - brace-expansion: 2.0.1 - - minimist@1.2.8: {} - - minipass@7.1.2: {} - - mkdirp@0.5.6: - dependencies: - minimist: 1.2.8 - - mocha@11.4.0: - dependencies: - browser-stdout: 1.3.1 - chokidar: 4.0.3 - debug: 4.4.1(supports-color@8.1.1) - diff: 7.0.0 - escape-string-regexp: 4.0.0 - find-up: 5.0.0 - glob: 10.4.5 - he: 1.2.0 - js-yaml: 4.1.0 - log-symbols: 4.1.0 - minimatch: 5.1.6 - ms: 2.1.3 - picocolors: 1.1.1 - serialize-javascript: 6.0.2 - strip-json-comments: 3.1.1 - supports-color: 8.1.1 - workerpool: 6.5.1 - yargs: 17.7.2 - yargs-parser: 21.1.1 - yargs-unparser: 2.0.0 - - ms@2.1.3: {} - - node-fetch@2.7.0: - dependencies: - whatwg-url: 5.0.0 - - node-gyp-build@4.8.4: - optional: true - - p-limit@3.1.0: - dependencies: - yocto-queue: 0.1.0 - - p-locate@5.0.0: - dependencies: - p-limit: 3.1.0 - - package-json-from-dist@1.0.1: {} - - path-exists@4.0.0: {} - - path-key@3.1.1: {} - - path-scurry@1.11.1: - dependencies: - lru-cache: 10.4.3 - minipass: 7.1.2 - - picocolors@1.1.1: {} - - randombytes@2.1.0: - dependencies: - safe-buffer: 5.2.1 - - readdirp@4.1.2: {} - - require-directory@2.1.1: {} - - rpc-websockets@9.1.1: - dependencies: - '@swc/helpers': 0.5.17 - '@types/uuid': 8.3.4 - '@types/ws': 8.18.1 - buffer: 6.0.3 - eventemitter3: 5.0.1 - uuid: 8.3.2 - ws: 8.18.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) - optionalDependencies: - bufferutil: 4.0.9 - utf-8-validate: 5.0.10 - - safe-buffer@5.2.1: {} - - serialize-javascript@6.0.2: - dependencies: - randombytes: 2.1.0 - - shebang-command@2.0.0: - dependencies: - shebang-regex: 3.0.0 - - shebang-regex@3.0.0: {} - - signal-exit@4.1.0: {} - - solana-bankrun-darwin-arm64@0.4.0: - optional: true - - solana-bankrun-darwin-universal@0.4.0: - optional: true - - solana-bankrun-darwin-x64@0.4.0: - optional: true - - solana-bankrun-linux-x64-gnu@0.4.0: - optional: true - - solana-bankrun-linux-x64-musl@0.4.0: - optional: true - - solana-bankrun@0.4.0(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10): - dependencies: - '@solana/web3.js': 1.98.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10) - bs58: 4.0.1 - optionalDependencies: - solana-bankrun-darwin-arm64: 0.4.0 - solana-bankrun-darwin-universal: 0.4.0 - solana-bankrun-darwin-x64: 0.4.0 - solana-bankrun-linux-x64-gnu: 0.4.0 - solana-bankrun-linux-x64-musl: 0.4.0 - transitivePeerDependencies: - - bufferutil - - encoding - - typescript - - utf-8-validate - - source-map-support@0.5.21: - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - - source-map@0.6.1: {} - - stream-chain@2.2.5: {} - - stream-json@1.9.1: - dependencies: - stream-chain: 2.2.5 - - string-width@4.2.3: - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - - string-width@5.1.2: - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 9.2.2 - strip-ansi: 7.1.0 - - strip-ansi@6.0.1: - dependencies: - ansi-regex: 5.0.1 - - strip-ansi@7.1.0: - dependencies: - ansi-regex: 6.1.0 - - strip-bom@3.0.0: - optional: true - - strip-json-comments@3.1.1: {} - - superstruct@2.0.2: {} - - supports-color@7.2.0: - dependencies: - has-flag: 4.0.0 - - supports-color@8.1.1: - dependencies: - has-flag: 4.0.0 - - text-encoding-utf-8@1.0.2: {} - - tr46@0.0.3: {} - - ts-mocha@10.1.0(mocha@11.4.0): - dependencies: - mocha: 11.4.0 - ts-node: 7.0.1 - optionalDependencies: - tsconfig-paths: 3.15.0 - - ts-node@7.0.1: - dependencies: - arrify: 1.0.1 - buffer-from: 1.1.2 - diff: 3.5.0 - make-error: 1.3.6 - minimist: 1.2.8 - mkdirp: 0.5.6 - source-map-support: 0.5.21 - yn: 2.0.0 - - tsconfig-paths@3.15.0: - dependencies: - '@types/json5': 0.0.29 - json5: 1.0.2 - minimist: 1.2.8 - strip-bom: 3.0.0 - optional: true - - tslib@2.8.1: {} - - typescript@5.8.3: {} - - undici-types@6.21.0: {} - - utf-8-validate@5.0.10: - dependencies: - node-gyp-build: 4.8.4 - optional: true - - uuid@8.3.2: {} - - webidl-conversions@3.0.1: {} - - whatwg-url@5.0.0: - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - - which@2.0.2: - dependencies: - isexe: 2.0.0 - - workerpool@6.5.1: {} - - wrap-ansi@7.0.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - wrap-ansi@8.1.0: - dependencies: - ansi-styles: 6.2.1 - string-width: 5.1.2 - strip-ansi: 7.1.0 - - ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10): - optionalDependencies: - bufferutil: 4.0.9 - utf-8-validate: 5.0.10 - - ws@8.18.2(bufferutil@4.0.9)(utf-8-validate@5.0.10): - optionalDependencies: - bufferutil: 4.0.9 - utf-8-validate: 5.0.10 - - y18n@5.0.8: {} - - yargs-parser@21.1.1: {} - - yargs-unparser@2.0.0: - dependencies: - camelcase: 6.3.0 - decamelize: 4.0.0 - flat: 5.0.2 - is-plain-obj: 2.1.0 - - yargs@17.7.2: - dependencies: - cliui: 8.0.1 - escalade: 3.2.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 21.1.1 - - yn@2.0.0: {} - - yocto-queue@0.1.0: {} diff --git a/basics/close-account/steel/program/Cargo.toml b/basics/close-account/steel/program/Cargo.toml deleted file mode 100644 index 3c891cda3..000000000 --- a/basics/close-account/steel/program/Cargo.toml +++ /dev/null @@ -1,19 +0,0 @@ -[package] -name = "close-account-program" -version = "0.1.0" -edition = "2021" - -[lib] -crate-type = ["cdylib", "lib"] - -[dependencies] -close-account-api.workspace = true -solana-program.workspace = true -steel.workspace = true - -[dev-dependencies] -bs64 = "0.1.2" -rand = "0.8.5" -solana-program-test = "1.18" -solana-sdk = "1.18" -tokio = { version = "1.35", features = ["full"] } diff --git a/basics/close-account/steel/program/src/close_user.rs b/basics/close-account/steel/program/src/close_user.rs deleted file mode 100644 index 6040a492d..000000000 --- a/basics/close-account/steel/program/src/close_user.rs +++ /dev/null @@ -1,12 +0,0 @@ -use solana_program::{account_info::AccountInfo, entrypoint::ProgramResult}; -use steel::{ProgramError, *}; - -pub fn close_user(accounts: &[AccountInfo]) -> ProgramResult { - let [payer, target_account, _] = accounts else { - return Err(ProgramError::NotEnoughAccountKeys); - }; - - payer.is_signer()?; - - steel::close_account(target_account, payer) -} diff --git a/basics/close-account/steel/program/src/create_user.rs b/basics/close-account/steel/program/src/create_user.rs deleted file mode 100644 index 9c7c166ad..000000000 --- a/basics/close-account/steel/program/src/create_user.rs +++ /dev/null @@ -1,33 +0,0 @@ -use solana_program::{account_info::AccountInfo, entrypoint::ProgramResult}; - -use close_account_api::prelude::{CreateAccount, User}; -use steel::{create_account, system_program, AccountInfoValidation, AsAccount, ProgramError}; - -pub fn create_user(accounts: &[AccountInfo], data: &[u8]) -> ProgramResult { - let value = CreateAccount::try_from_bytes(data)?; - - let [payer, target_account, system_program] = accounts else { - return Err(ProgramError::NotEnoughAccountKeys); - }; - - payer.is_signer()?; - - target_account.is_empty()?.is_writable()?.has_seeds( - &[User::SEED_PREFIX.as_bytes(), payer.key.as_ref()], - &close_account_api::ID, - )?; - system_program.is_program(&system_program::ID)?; - - create_account::( - target_account, - system_program, - payer, - &close_account_api::ID, - &[User::SEED_PREFIX.as_bytes(), payer.key.as_ref()], - )?; - - let user = target_account.as_account_mut::(&close_account_api::ID)?; - user.name = value.0; - - Ok(()) -} diff --git a/basics/close-account/steel/program/src/lib.rs b/basics/close-account/steel/program/src/lib.rs deleted file mode 100644 index 2d07fac82..000000000 --- a/basics/close-account/steel/program/src/lib.rs +++ /dev/null @@ -1,25 +0,0 @@ -use close_account_api::prelude::*; -use steel::*; - -mod create_user; -pub(crate) use create_user::*; - -mod close_user; -pub(crate) use close_user::*; - -pub fn process_instruction( - program_id: &Pubkey, - accounts: &[AccountInfo], - data: &[u8], -) -> ProgramResult { - let (ix, data) = parse_instruction(&close_account_api::ID, program_id, data)?; - - match ix { - MyInstruction::CreateAccount => create_user(accounts, data)?, - MyInstruction::CloseAccount => close_user(accounts)?, - } - - Ok(()) -} - -entrypoint!(process_instruction); diff --git a/basics/close-account/steel/program/tests/test.rs b/basics/close-account/steel/program/tests/test.rs deleted file mode 100644 index cb7fcd5f5..000000000 --- a/basics/close-account/steel/program/tests/test.rs +++ /dev/null @@ -1,48 +0,0 @@ -use close_account_api::prelude::*; -use solana_program::hash::Hash; -use solana_program_test::{processor, BanksClient, ProgramTest}; -use solana_sdk::{signature::Keypair, signer::Signer, transaction::Transaction}; -use steel::*; - -async fn setup() -> (BanksClient, Keypair, Hash) { - let mut program_test = ProgramTest::new( - "close-account", - close_account_api::ID, - processor!(close_account_program::process_instruction), - ); - program_test.prefer_bpf(true); - program_test.start().await -} - -#[tokio::test] -async fn run_test() { - // Setup test - let (mut banks, payer, blockhash) = setup().await; - - let name = "foobarbaz"; - let account = User::new(name).unwrap(); - - // Submit initialize transaction. - let ix = close_account_api::sdk::create_account(payer.pubkey(), CreateAccount(account.name)); - let tx = Transaction::new_signed_with_payer(&[ix], Some(&payer.pubkey()), &[&payer], blockhash); - let res = banks.process_transaction(tx).await; - assert!(res.is_ok()); - - let user_pda = User::pda(payer.pubkey()).0; - let pda_account = banks.get_account(user_pda).await.unwrap().unwrap(); - let name_deser = User::try_from_bytes(&pda_account.data).unwrap(); - - assert_eq!(pda_account.owner, close_account_api::ID); - assert_eq!(name_deser.to_string().unwrap().as_str(), name); - - // Test Closing an Account - // Submit initialize transaction. - let ix = close_account_api::sdk::close_account(payer.pubkey()); - let tx = Transaction::new_signed_with_payer(&[ix], Some(&payer.pubkey()), &[&payer], blockhash); - let res = banks.process_transaction(tx).await; - assert!(res.is_ok()); - - let pda_account = banks.get_account(user_pda).await.unwrap(); - - assert!(pda_account.is_none()); -} diff --git a/basics/close-account/steel/tests/close-account.test.ts b/basics/close-account/steel/tests/close-account.test.ts deleted file mode 100644 index 792dd85f1..000000000 --- a/basics/close-account/steel/tests/close-account.test.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { describe, test } from 'node:test'; -import { PublicKey, Transaction } from '@solana/web3.js'; -import { start } from 'solana-bankrun'; -import { createCloseUserInstruction, createCreateUserInstruction } from '../ts'; - -describe('Close Account!', async () => { - const PROGRAM_ID = new PublicKey('z7msBPQHDJjTvdQRoEcKyENgXDhSRYeHieN1ZMTqo35'); - const context = await start([{ name: 'close_account_program', programId: PROGRAM_ID }], []); - const client = context.banksClient; - const payer = context.payer; - - const testAccountPublicKey = PublicKey.findProgramAddressSync([Buffer.from('USER'), payer.publicKey.toBuffer()], PROGRAM_ID)[0]; - - test('Create the account', async () => { - const blockhash = context.lastBlockhash; - const ix = createCreateUserInstruction(payer.publicKey, testAccountPublicKey, PROGRAM_ID, 'Jacob'); - - const tx = new Transaction(); - tx.recentBlockhash = blockhash; - tx.add(ix).sign(payer); - - await client.processTransaction(tx); - }); - - test('Close the account', async () => { - const blockhash = context.lastBlockhash; - - const ix = createCloseUserInstruction(payer.publicKey, testAccountPublicKey, PROGRAM_ID); - const tx = new Transaction(); - tx.recentBlockhash = blockhash; - tx.add(ix).sign(payer); - - await client.processTransaction(tx); - }); -}); diff --git a/basics/close-account/steel/tests/tsconfig.test.json b/basics/close-account/steel/tests/tsconfig.test.json deleted file mode 100644 index cd5d2e3d0..000000000 --- a/basics/close-account/steel/tests/tsconfig.test.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "compilerOptions": { - "types": ["mocha", "chai"], - "typeRoots": ["./node_modules/@types"], - "lib": ["es2015"], - "module": "commonjs", - "target": "es6", - "esModuleInterop": true - } -} diff --git a/basics/close-account/steel/ts/index.ts b/basics/close-account/steel/ts/index.ts deleted file mode 100644 index 32b452fa4..000000000 --- a/basics/close-account/steel/ts/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './instructions'; diff --git a/basics/close-account/steel/ts/instructions/close.ts b/basics/close-account/steel/ts/instructions/close.ts deleted file mode 100644 index 4be2a0d46..000000000 --- a/basics/close-account/steel/ts/instructions/close.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { Buffer } from 'node:buffer'; -import { type PublicKey, SystemProgram, TransactionInstruction } from '@solana/web3.js'; -import { MyInstruction, closeAccountSchema } from '.'; - -export class Close { - instruction: MyInstruction; - - constructor(props: { instruction: MyInstruction }) { - this.instruction = props.instruction; - } - - toBuffer() { - const buffer = Buffer.alloc(1000); - - closeAccountSchema.encode( - { - CloseUser: '', - }, - buffer, - ); - - return buffer.subarray(0, closeAccountSchema.getSpan(buffer)); - } -} - -export function createCloseUserInstruction(payer: PublicKey, target: PublicKey, programId: PublicKey): TransactionInstruction { - const instructionObject = new Close({ - instruction: MyInstruction.CloseUser, - }); - - const ix = new TransactionInstruction({ - keys: [ - { pubkey: payer, isSigner: true, isWritable: true }, - { pubkey: target, isSigner: false, isWritable: true }, - { pubkey: SystemProgram.programId, isSigner: false, isWritable: false }, - ], - programId: programId, - data: instructionObject.toBuffer(), - }); - - return ix; -} diff --git a/basics/close-account/steel/ts/instructions/create.ts b/basics/close-account/steel/ts/instructions/create.ts deleted file mode 100644 index fa169313d..000000000 --- a/basics/close-account/steel/ts/instructions/create.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { Buffer } from 'node:buffer'; -import { PublicKey, SystemProgram, TransactionInstruction } from '@solana/web3.js'; -import { MyInstruction, closeAccountSchema } from '.'; - -export class Create { - instruction: MyInstruction; - name: string; - - constructor(props: { instruction: MyInstruction; name: string }) { - this.instruction = props.instruction; - this.name = props.name; - } - - toBuffer() { - const textBuffer = Buffer.alloc(64); - const buffer = Buffer.alloc(1000); - - textBuffer.write('foobarbaz', 0, 'utf-8'); - - closeAccountSchema.encode( - { - CreateUser: Array.from(textBuffer), - }, - buffer, - ); - - return buffer.subarray(0, closeAccountSchema.getSpan(buffer)); - } -} - -export function createCreateUserInstruction(payer: PublicKey, target: PublicKey, programId: PublicKey, name: string): TransactionInstruction { - const instructionObject = new Create({ - instruction: MyInstruction.CreateUser, - name, - }); - - const seed = 'USER'; - const seedBytes = new Uint8Array(seed.split('').map((char) => char.charCodeAt(0))); - - const [pda, _] = PublicKey.findProgramAddressSync([seedBytes, payer.toBuffer()], programId); - - const data = instructionObject.toBuffer(); - - const ix = new TransactionInstruction({ - keys: [ - { pubkey: payer, isSigner: true, isWritable: true }, - { pubkey: pda, isSigner: false, isWritable: true }, - { pubkey: SystemProgram.programId, isSigner: false, isWritable: false }, - ], - programId: programId, - data, - }); - - return ix; -} diff --git a/basics/close-account/steel/ts/instructions/index.ts b/basics/close-account/steel/ts/instructions/index.ts deleted file mode 100644 index ae0c009d1..000000000 --- a/basics/close-account/steel/ts/instructions/index.ts +++ /dev/null @@ -1,11 +0,0 @@ -export * from './create'; -export * from './close'; - -import * as borsh from '@coral-xyz/borsh'; - -export enum MyInstruction { - CreateUser = 0, - CloseUser = 1, -} - -export const closeAccountSchema = borsh.rustEnum([borsh.struct([borsh.array(borsh.u8(), 64, 'name')], 'CreateUser'), borsh.struct([], 'CloseUser')]); diff --git a/basics/counter/seahorse/.gitignore b/basics/counter/seahorse/.gitignore deleted file mode 100644 index d243ecc13..000000000 --- a/basics/counter/seahorse/.gitignore +++ /dev/null @@ -1,7 +0,0 @@ - -.anchor -.DS_Store -target -**/*.rs.bk -node_modules -test-ledger diff --git a/basics/counter/seahorse/.prettierignore b/basics/counter/seahorse/.prettierignore deleted file mode 100644 index c1a0b75f0..000000000 --- a/basics/counter/seahorse/.prettierignore +++ /dev/null @@ -1,8 +0,0 @@ - -.anchor -.DS_Store -target -node_modules -dist -build -test-ledger diff --git a/basics/counter/seahorse/Anchor.toml b/basics/counter/seahorse/Anchor.toml deleted file mode 100644 index 93a958348..000000000 --- a/basics/counter/seahorse/Anchor.toml +++ /dev/null @@ -1,15 +0,0 @@ -[features] -seeds = true -skip-lint = false -[programs.localnet] -counter_seahorse = "Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS" - -[registry] -url = "https://api.apr.dev" - -[provider] -cluster = "localnet" -wallet = "~/.config/solana/id.json" - -[scripts] -test = "pnpm ts-mocha -p ./tsconfig.json -t 1000000 tests/**/*.ts" diff --git a/basics/counter/seahorse/Cargo.toml b/basics/counter/seahorse/Cargo.toml deleted file mode 100644 index f39770481..000000000 --- a/basics/counter/seahorse/Cargo.toml +++ /dev/null @@ -1,14 +0,0 @@ -[workspace] -members = [ - "programs/*" -] -resolver = "2" - -[profile.release] -overflow-checks = true -lto = "fat" -codegen-units = 1 -[profile.release.build-override] -opt-level = 3 -incremental = false -codegen-units = 1 diff --git a/basics/counter/seahorse/README.md b/basics/counter/seahorse/README.md deleted file mode 100644 index e82c2e92b..000000000 --- a/basics/counter/seahorse/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# counter_seahorse - -This project was created by Seahorse 0.1.6. - -To get started, just add your code to **programs_py/counter_seahorse.py** and run `seahorse build`. diff --git a/basics/counter/seahorse/migrations/deploy.ts b/basics/counter/seahorse/migrations/deploy.ts deleted file mode 100644 index 64a1c3599..000000000 --- a/basics/counter/seahorse/migrations/deploy.ts +++ /dev/null @@ -1,12 +0,0 @@ -// Migrations are an early feature. Currently, they're nothing more than this -// single deploy script that's invoked from the CLI, injecting a provider -// configured from the workspace's Anchor.toml. - -const anchor = require('@coral-xyz/anchor'); - -module.exports = async (provider) => { - // Configure client to use the provider. - anchor.setProvider(provider); - - // Add your deploy script here. -}; diff --git a/basics/counter/seahorse/package.json b/basics/counter/seahorse/package.json deleted file mode 100644 index 814697ca9..000000000 --- a/basics/counter/seahorse/package.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "scripts": { - "lint:fix": "prettier */*.js \"*/**/*{.js,.ts}\" -w", - "lint": "prettier */*.js \"*/**/*{.js,.ts}\" --check" - }, - "dependencies": { - "@coral-xyz/anchor": "^0.30.0" - }, - "devDependencies": { - "chai": "^4.3.4", - "mocha": "^9.0.3", - "ts-mocha": "^10.0.0", - "@types/bn.js": "^5.1.0", - "@types/chai": "^4.3.0", - "@types/mocha": "^9.0.0", - "typescript": "^4.3.5", - "prettier": "^2.6.2" - } -} diff --git a/basics/counter/seahorse/programs/counter_seahorse/Cargo.toml b/basics/counter/seahorse/programs/counter_seahorse/Cargo.toml deleted file mode 100644 index c84b0cba0..000000000 --- a/basics/counter/seahorse/programs/counter_seahorse/Cargo.toml +++ /dev/null @@ -1,21 +0,0 @@ -[package] -name = "counter_seahorse" -version = "0.1.0" -description = "Created with Anchor" -edition = "2021" - -[lib] -crate-type = ["cdylib", "lib"] -name = "counter_seahorse" - -[features] -default = [] -cpi = ["no-entrypoint"] -no-entrypoint = [] -no-idl = [] -no-log-ix-name = [] -idl-build = ["anchor-lang/idl-build"] - -[dependencies] -anchor-lang = "0.25.0" -anchor-spl = "0.25.0" diff --git a/basics/counter/seahorse/programs/counter_seahorse/Xargo.toml b/basics/counter/seahorse/programs/counter_seahorse/Xargo.toml deleted file mode 100644 index 475fb71ed..000000000 --- a/basics/counter/seahorse/programs/counter_seahorse/Xargo.toml +++ /dev/null @@ -1,2 +0,0 @@ -[target.bpfel-unknown-unknown.dependencies.std] -features = [] diff --git a/basics/counter/seahorse/programs/counter_seahorse/src/lib.rs b/basics/counter/seahorse/programs/counter_seahorse/src/lib.rs deleted file mode 100644 index 75fb83702..000000000 --- a/basics/counter/seahorse/programs/counter_seahorse/src/lib.rs +++ /dev/null @@ -1,63 +0,0 @@ -use anchor_lang::prelude::*; -use anchor_lang::solana_program; -use anchor_spl::associated_token; -use anchor_spl::token; -use std::convert::TryFrom; - -declare_id!("Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS"); - -#[derive(Debug)] -#[account] -pub struct Counter { - count: u64, -} - -pub fn initialize_counter_handler(mut ctx: Context, mut seed: u8) -> Result<()> { - let mut counter = &mut ctx.accounts.counter; - let mut payer = &mut ctx.accounts.payer; - - Ok(()) -} - -pub fn increment_handler(mut ctx: Context) -> Result<()> { - let mut counter = &mut ctx.accounts.counter; - - counter.count += 1; - - Ok(()) -} - -#[derive(Accounts)] -# [instruction (seed : u8)] -pub struct InitializeCounter<'info> { - #[account( - init, - payer = payer, - seeds = [seed.to_le_bytes().as_ref()], - bump, - space = 8 + std::mem::size_of::() - )] - pub counter: Box>, - #[account(mut)] - pub payer: Signer<'info>, - pub system_program: Program<'info, System>, -} - -#[derive(Accounts)] -pub struct Increment<'info> { - #[account(mut)] - pub counter: Box>, -} - -#[program] -pub mod counter_seahorse { - use super::*; - - pub fn initialize_counter(ctx: Context, seed: u8) -> Result<()> { - initialize_counter_handler(ctx, seed) - } - - pub fn increment(ctx: Context) -> Result<()> { - increment_handler(ctx) - } -} diff --git a/basics/counter/seahorse/programs_py/counter_seahorse.py b/basics/counter/seahorse/programs_py/counter_seahorse.py deleted file mode 100644 index 79f5e63d0..000000000 --- a/basics/counter/seahorse/programs_py/counter_seahorse.py +++ /dev/null @@ -1,23 +0,0 @@ -# counter_seahorse -# Built with Seahorse v0.1.6 - -from seahorse.prelude import * - -declare_id('Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS') - - -class Counter(Account): - count: u64 - - -@instruction -def initialize_counter(counter: Empty[Counter], payer: Signer, seed: u8): - counter.init( - payer=payer, - seeds=[seed] - ) - - -@instruction -def increment(counter: Counter): - counter.count += 1 diff --git a/basics/counter/seahorse/programs_py/seahorse/__init__.py b/basics/counter/seahorse/programs_py/seahorse/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/basics/counter/seahorse/programs_py/seahorse/prelude.py b/basics/counter/seahorse/programs_py/seahorse/prelude.py deleted file mode 100644 index de2f03748..000000000 --- a/basics/counter/seahorse/programs_py/seahorse/prelude.py +++ /dev/null @@ -1,330 +0,0 @@ -# seahorse.prelude: the basis for writing Seahorse programs. -# -# NOTE: this file just contains types and documentation for your editor. This -# is NOT executable code, and you won't be able to change the behavior of your -# Seahorse programs by editing this file. - -from typing import * -from math import floor, ceil - -T = TypeVar('T') -N = TypeVar('N') - - -# =========================================================== -# Internal types - here for completeness, but not really used -# =========================================================== - -class ProgramResult: - """Result from executing an instruction - either a success, or a failure with an error message.""" - - -# ========== -# Rust types -# ========== - -class u8: - """Single-byte unsigned integer.""" - - def __init__(self, _: Any): - return self - - def __add__(self, _: Any): - return self - - def __radd__(self, _: Any): - return self - - def __iadd__(self, _: Any): - return self - - def __sub__(self, _: Any): - return self - - def __rsub__(self, _: Any): - return self - - def __isub__(self, _: Any): - return self - - def __mul__(self, _: Any): - return self - - def __rmul__(self, _: Any): - return self - - def __imul__(self, _: Any): - return self - - def __div__(self, _: Any): - return self - - def __rdiv__(self, _: Any): - return self - - def __idiv__(self, _: Any): - return self - -class u64: - """64-bit unsigned integer.""" - - def __init__(self, _: Any): - return self - - def __add__(self, _: Any): - return self - - def __radd__(self, _: Any): - return self - - def __iadd__(self, _: Any): - return self - - def __sub__(self, _: Any): - return self - - def __rsub__(self, _: Any): - return self - - def __isub__(self, _: Any): - return self - - def __mul__(self, _: Any): - return self - - def __rmul__(self, _: Any): - return self - - def __imul__(self, _: Any): - return self - - def __div__(self, _: Any): - return self - - def __rdiv__(self, _: Any): - return self - - def __idiv__(self, _: Any): - return self - -class i64: - """64-bit signed integer.""" - - def __init__(self, _: Any): - return self - - def __add__(self, _: Any): - return self - - def __radd__(self, _: Any): - return self - - def __iadd__(self, _: Any): - return self - - def __sub__(self, _: Any): - return self - - def __rsub__(self, _: Any): - return self - - def __isub__(self, _: Any): - return self - - def __mul__(self, _: Any): - return self - - def __rmul__(self, _: Any): - return self - - def __imul__(self, _: Any): - return self - - def __div__(self, _: Any): - return self - - def __rdiv__(self, _: Any): - return self - - def __idiv__(self, _: Any): - return self - -class f64: - """64-bit floating point number.""" - - def __add__(self, _: Any): - return self - - def __radd__(self, _: Any): - return self - - def __iadd__(self, _: Any): - return self - - def __sub__(self, _: Any): - return self - - def __rsub__(self, _: Any): - return self - - def __isub__(self, _: Any): - return self - - def __mul__(self, _: Any): - return self - - def __rmul__(self, _: Any): - return self - - def __imul__(self, _: Any): - return self - - def __div__(self, _: Any): - return self - - def __rdiv__(self, _: Any): - return self - - def __idiv__(self, _: Any): - return self - - -class Array(Generic[T, N]): - """A fixed-length array: contains type T and has size N. - - Lists (Python builtin type) can coerce to this type. Example: - - ``` - class MyData(Account): - data: Array[u64, 4] - - @instruction - def set_data(my_data: MyData): - # Will successfully set `data` to [0, 1, 2, 3] - my_data.data = [i for i in range(0, 4)] - # Will attempt (and fail, crashing the instruction at runtime!) to set `data` to [0, 1, 2, 3, 4] - my_data.data = [i for i in range(0, 5)] - ``` - """ - -class Enum: - """A type that can have one of multiple named values. - - Note that unlike Rust enums, these cannot contain any data (other than the variant itself). Example: - - ``` - class MyEnum(Enum): - ONE = 1 - TWO = 2 - THREE = 3 - - @instruction - def use_enum(code: MyEnum): - if code == MyEnum.ONE: - print(1) - # ... - ``` - """ - -# ============ -# Solana types -# ============ - -class Pubkey: - """32-byte account identifier.""" - -class SolanaAccount: - """Generic Solana account.""" - - def key(self) -> Pubkey: - """Get this account's key.""" - - def transfer_lamports(self, to: SolanaAccount, amount: u64): - """Transfer some SOL (as an amount of lamports) to another account. - - Note: this will successfully transfer from a program-owned account without needing to - provide the seeds for a PDA, so no signer field is required (unlike the SPL methods). - """ - -class Account(SolanaAccount): - """User-defined Solana account.""" - -class Signer(SolanaAccount): - """Instruction signer.""" - -class Empty(Generic[T]): - """An account that needs to be initialized.""" - - def bump(self) -> u8: - """Get this account's bump, needed if you want to use this account to sign CPI calls.""" - - def init(self, payer: Signer, seeds: List[Union[str, Account, u8]], mint: TokenMint, authority: Account) -> T: - """ - Initialize the account. - - @param payer: The account that will pay for the rent cost of the initialized account. Must be an instruction signer. - @param seeds: A list of parameters to uniquely identify this account among all accounts created by your program. These may be string literals or other accounts. - @param mint: If initializing a TokenAccount, this is the mint that the account belongs to. - @param decimals: If initializing a TokenMint, this is the number of decimals the new token has. - @param authority: If initializing a TokenAccount/TokenMint, this is the account that has authority over the account. - @returns: The new, initialized account. All of the data in this account will be set to 0. - """ - -class TokenAccount(SolanaAccount): - """SPL token account.""" - - def authority(self) -> Pubkey: - """Get the owner of this token account.""" - - def amount(self) -> u64: - """Get the amount of token stored in this account.""" - - def transfer(self, authority: SolanaAccount, to: TokenAccount, amount: u64, signer: List[Union[str, Account, u8]] = None): - """ - Transfer funds from this SPL token account to another. - - @param authority: The account that owns this TokenAccount. Must be an instruction signer or the account given by the `signer` param. - @param to: The recipient TokenAccount. - @param amount: How much (in *native* token units) to transfer. - @param signer: (Optional) seeds for the signature of a PDA. - """ - -class TokenMint(SolanaAccount): - """SPL token mint.""" - - def authority(self) -> Pubkey: - """Get the owner of this token account.""" - - def mint(self, authority: SolanaAccount, to: TokenAccount, amount: u64, signer: List[Union[str, Account, u8]] = None): - """ - Mint new tokens to a token account. - - @param authority: The account that owns this TokenMint. Must be an instruction signer or the account given by the `signer` param. - @param to: The recipient TokenAccount. - @param amount: How much (in *native* token units) to mint. - @param signer: (Optional) seeds for the signature of a PDA. - """ - - def burn(self, authority: SolanaAccount, holder: TokenAccount, amount: u64, signer: List[Union[str, Account, u8]] = None): - """ - Burn tokens from a token account. - - @param authority: The account that owns the `holder` TokenAccount. Must be an instruction signer or the account given by the `signer` param. - @param holder: The TokenAccount to burn from. - @param amount: How much (in *native* token units) to burn. - @param signer: (Optional) seeds for the signature of a PDA. - """ - - -# ================ -# Helper functions -# ================ - -def declare_id(id: str): - """Inform Anchor what this program's ID is. - - @param id: The program's ID, generated by Anchor in /target/idl/.json. This must be copied-pasted straight from there as a string literal. - """ - -def instruction(function: Callable[..., None]) -> Callable[..., ProgramResult]: - """Decorator to turn a function into a program instruction.""" diff --git a/basics/counter/seahorse/tests/counter_seahorse.ts b/basics/counter/seahorse/tests/counter_seahorse.ts deleted file mode 100644 index f0ee9574a..000000000 --- a/basics/counter/seahorse/tests/counter_seahorse.ts +++ /dev/null @@ -1,36 +0,0 @@ -import * as anchor from '@coral-xyz/anchor'; -import type { Program } from '@coral-xyz/anchor'; -import { Keypair, PublicKey, SystemProgram } from '@solana/web3.js'; -import { assert } from 'chai'; -import type { CounterSeahorse } from '../target/types/counter_seahorse'; - -describe('counter_seahorse', () => { - // Configure the client to use the local cluster. - anchor.setProvider(anchor.AnchorProvider.env()); - - const program = anchor.workspace.CounterSeahorse as Program; - - it('Increment counter', async () => { - const seed = 69; - const counter = PublicKey.findProgramAddressSync([Buffer.from([0x45])], program.programId)[0]; - - // Initialize counter - await program.methods - .initializeCounter(seed) - .accounts({ - payer: program.provider.publicKey, - }) - .rpc(); - - // Increment counter - await program.methods - .increment() - .accounts({ - counter, - }) - .rpc(); - - const count = (await program.account.counter.fetch(counter)).count.toNumber(); - assert(count === 1, 'Expected count to be 1'); - }); -}); diff --git a/basics/counter/seahorse/tsconfig.json b/basics/counter/seahorse/tsconfig.json deleted file mode 100644 index cd5d2e3d0..000000000 --- a/basics/counter/seahorse/tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "compilerOptions": { - "types": ["mocha", "chai"], - "typeRoots": ["./node_modules/@types"], - "lib": ["es2015"], - "module": "commonjs", - "target": "es6", - "esModuleInterop": true - } -} diff --git a/basics/counter/steel/.gitignore b/basics/counter/steel/.gitignore deleted file mode 100644 index 052739dbc..000000000 --- a/basics/counter/steel/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -target -test-ledger diff --git a/basics/counter/steel/Cargo.toml b/basics/counter/steel/Cargo.toml deleted file mode 100644 index c21f7bd6f..000000000 --- a/basics/counter/steel/Cargo.toml +++ /dev/null @@ -1,21 +0,0 @@ -[workspace] -resolver = "2" -members = ["api", "program"] - -[workspace.package] -version = "0.1.0" -edition = "2021" -license = "Apache-2.0" -homepage = "" -documentation = "" -respository = "" -readme = "./README.md" -keywords = ["solana"] - -[workspace.dependencies] -counter-api = { path = "./api", version = "0.1.0" } -bytemuck = "1.14" -num_enum = "0.7" -solana-program = "2.1" -steel = "3.0" -thiserror = "1.0" diff --git a/basics/counter/steel/README.md b/basics/counter/steel/README.md deleted file mode 100644 index b554ce305..000000000 --- a/basics/counter/steel/README.md +++ /dev/null @@ -1,25 +0,0 @@ -# Counter - -See the [Counter's README](../README.md) for more information. - -## Building - -```sh -cargo build-sbf - -``` -## Tests - -This project includes both: -- Rust tests: [`program/tests`](/program/tests) directory. -- Node.js tests using [Bankrun](https://kevinheavey.github.io/solana-bankrun/): [`tests`](/tests) directory. - -```sh -# rust tests -cargo test-sbf - -# node tests -pnpm build-and-test # this will also build the program -#or -pnpm test # if you have already built the program -``` diff --git a/basics/counter/steel/api/Cargo.toml b/basics/counter/steel/api/Cargo.toml deleted file mode 100644 index 9baf48efb..000000000 --- a/basics/counter/steel/api/Cargo.toml +++ /dev/null @@ -1,11 +0,0 @@ -[package] -name = "counter-api" -version = "0.1.0" -edition = "2021" - -[dependencies] -bytemuck.workspace = true -num_enum.workspace = true -solana-program.workspace = true -steel.workspace = true -thiserror.workspace = true diff --git a/basics/counter/steel/api/src/consts.rs b/basics/counter/steel/api/src/consts.rs deleted file mode 100644 index 21895e795..000000000 --- a/basics/counter/steel/api/src/consts.rs +++ /dev/null @@ -1,2 +0,0 @@ -/// Seed of the counter account PDA. -pub const COUNTER_SEED: &[u8] = b"counter"; diff --git a/basics/counter/steel/api/src/instruction.rs b/basics/counter/steel/api/src/instruction.rs deleted file mode 100644 index 7011e58ff..000000000 --- a/basics/counter/steel/api/src/instruction.rs +++ /dev/null @@ -1,21 +0,0 @@ -use steel::*; - -#[repr(u8)] -#[derive(Clone, Copy, Debug, Eq, PartialEq, TryFromPrimitive)] -pub enum CounterInstruction { - Initialize = 0, - Increment = 1, -} - -#[repr(C)] -#[derive(Clone, Copy, Debug, Pod, Zeroable)] -pub struct Initialize {} - -#[repr(C)] -#[derive(Clone, Copy, Debug, Pod, Zeroable)] -pub struct Increment { - pub amount: [u8; 8], -} - -instruction!(CounterInstruction, Initialize); -instruction!(CounterInstruction, Increment); diff --git a/basics/counter/steel/api/src/lib.rs b/basics/counter/steel/api/src/lib.rs deleted file mode 100644 index 6db8ac73d..000000000 --- a/basics/counter/steel/api/src/lib.rs +++ /dev/null @@ -1,16 +0,0 @@ -pub mod consts; -pub mod instruction; -pub mod sdk; -pub mod state; - -pub mod prelude { - pub use crate::consts::*; - pub use crate::instruction::*; - pub use crate::sdk::*; - pub use crate::state::*; -} - -use steel::*; - -// TODO Set program id -declare_id!("z7msBPQHDJjTvdQRoEcKyENgXDhSRYeHieN1ZMTqo35"); diff --git a/basics/counter/steel/api/src/sdk.rs b/basics/counter/steel/api/src/sdk.rs deleted file mode 100644 index ad0f6353d..000000000 --- a/basics/counter/steel/api/src/sdk.rs +++ /dev/null @@ -1,29 +0,0 @@ -use steel::*; - -use crate::prelude::*; - -pub fn initialize(signer: Pubkey) -> Instruction { - Instruction { - program_id: crate::ID, - accounts: vec![ - AccountMeta::new(signer, true), - AccountMeta::new(counter_pda().0, false), - AccountMeta::new_readonly(system_program::ID, false), - ], - data: Initialize {}.to_bytes(), - } -} - -pub fn increment(signer: Pubkey, amount: u64) -> Instruction { - Instruction { - program_id: crate::ID, - accounts: vec![ - AccountMeta::new(signer, true), - AccountMeta::new(counter_pda().0, false), - ], - data: Increment { - amount: amount.to_le_bytes(), - } - .to_bytes(), - } -} diff --git a/basics/counter/steel/api/src/state.rs b/basics/counter/steel/api/src/state.rs deleted file mode 100644 index 71890a1fc..000000000 --- a/basics/counter/steel/api/src/state.rs +++ /dev/null @@ -1,22 +0,0 @@ -use steel::*; - -use crate::consts::COUNTER_SEED; - -#[repr(u8)] -#[derive(Clone, Copy, Debug, Eq, PartialEq, IntoPrimitive, TryFromPrimitive)] -pub enum CounterAccount { - Counter = 0, -} - -#[repr(C)] -#[derive(Clone, Copy, Debug, PartialEq, Pod, Zeroable)] -pub struct Counter { - pub value: u64, -} - -account!(CounterAccount, Counter); - -/// Fetch PDA of the counter account. -pub fn counter_pda() -> (Pubkey, u8) { - Pubkey::find_program_address(&[COUNTER_SEED], &crate::id()) -} diff --git a/basics/counter/steel/package.json b/basics/counter/steel/package.json deleted file mode 100644 index 85cb11e72..000000000 --- a/basics/counter/steel/package.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "name": "counter-program", - "version": "1.0.0", - "description": "Counter program for Solana made with the Steel framework", - "scripts": { - "test": "pnpm ts-mocha -p ./tsconfig.json -t 1000000 ./tests/*.test.ts", - "build-and-test": "cargo build-sbf --manifest-path=./program/Cargo.toml --sbf-out-dir=./tests/fixtures && pnpm test", - "build": "cargo build-sbf --manifest-path=./program/Cargo.toml --sbf-out-dir=./program/target/so", - "deploy": "solana program deploy ./program/target/so/counter_program.so" - }, - "keywords": [], - "author": "", - "license": "ISC", - "dependencies": { - "@solana/web3.js": "^1.95.4" - }, - "devDependencies": { - "@types/chai": "^4.3.7", - "@types/mocha": "10.0.9", - "@types/node": "^22.7.4", - "borsh": "^2.0.0", - "chai": "^4.3.7", - "mocha": "10.7.3", - "solana-bankrun": "0.4.0", - "ts-mocha": "^10.0.0", - "typescript": "5.6.3" - } -} diff --git a/basics/counter/steel/pnpm-lock.yaml b/basics/counter/steel/pnpm-lock.yaml deleted file mode 100644 index 363f694b0..000000000 --- a/basics/counter/steel/pnpm-lock.yaml +++ /dev/null @@ -1,1268 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -importers: - - .: - dependencies: - '@solana/web3.js': - specifier: ^1.95.4 - version: 1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) - devDependencies: - '@types/chai': - specifier: ^4.3.7 - version: 4.3.20 - '@types/mocha': - specifier: 10.0.9 - version: 10.0.9 - '@types/node': - specifier: ^22.7.4 - version: 22.7.7 - borsh: - specifier: ^2.0.0 - version: 2.0.0 - chai: - specifier: ^4.3.7 - version: 4.5.0 - mocha: - specifier: 10.7.3 - version: 10.7.3 - solana-bankrun: - specifier: 0.4.0 - version: 0.4.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - ts-mocha: - specifier: ^10.0.0 - version: 10.0.0(mocha@10.7.3) - typescript: - specifier: 5.6.3 - version: 5.6.3 - -packages: - - '@babel/runtime@7.25.7': - resolution: {integrity: sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w==} - engines: {node: '>=6.9.0'} - - '@noble/curves@1.6.0': - resolution: {integrity: sha512-TlaHRXDehJuRNR9TfZDNQ45mMEd5dwUwmicsafcIX4SsNiqnCHKjE/1alYPd/lDRVhxdhUAlv8uEhMCI5zjIJQ==} - engines: {node: ^14.21.3 || >=16} - - '@noble/hashes@1.5.0': - resolution: {integrity: sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==} - engines: {node: ^14.21.3 || >=16} - - '@solana/buffer-layout@4.0.1': - resolution: {integrity: sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==} - engines: {node: '>=5.10'} - - '@solana/web3.js@1.95.4': - resolution: {integrity: sha512-sdewnNEA42ZSMxqkzdwEWi6fDgzwtJHaQa5ndUGEJYtoOnM6X5cvPmjoTUp7/k7bRrVAxfBgDnvQQHD6yhlLYw==} - - '@swc/helpers@0.5.13': - resolution: {integrity: sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==} - - '@types/chai@4.3.20': - resolution: {integrity: sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==} - - '@types/connect@3.4.38': - resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} - - '@types/json5@0.0.29': - resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - - '@types/mocha@10.0.9': - resolution: {integrity: sha512-sicdRoWtYevwxjOHNMPTl3vSfJM6oyW8o1wXeI7uww6b6xHg8eBznQDNSGBCDJmsE8UMxP05JgZRtsKbTqt//Q==} - - '@types/node@12.20.55': - resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - - '@types/node@22.7.7': - resolution: {integrity: sha512-SRxCrrg9CL/y54aiMCG3edPKdprgMVGDXjA3gB8UmmBW5TcXzRUYAh8EWzTnSJFAd1rgImPELza+A3bJ+qxz8Q==} - - '@types/uuid@8.3.4': - resolution: {integrity: sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==} - - '@types/ws@7.4.7': - resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==} - - '@types/ws@8.5.12': - resolution: {integrity: sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==} - - JSONStream@1.3.5: - resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} - hasBin: true - - agentkeepalive@4.5.0: - resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} - engines: {node: '>= 8.0.0'} - - ansi-colors@4.1.3: - resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} - engines: {node: '>=6'} - - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - - argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - - arrify@1.0.1: - resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} - engines: {node: '>=0.10.0'} - - assertion-error@1.1.0: - resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} - - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - base-x@3.0.10: - resolution: {integrity: sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==} - - base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - - bigint-buffer@1.1.5: - resolution: {integrity: sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA==} - engines: {node: '>= 10.0.0'} - - binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} - - bindings@1.5.0: - resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} - - bn.js@5.2.1: - resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} - - borsh@0.7.0: - resolution: {integrity: sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==} - - borsh@2.0.0: - resolution: {integrity: sha512-kc9+BgR3zz9+cjbwM8ODoUB4fs3X3I5A/HtX7LZKxCLaMrEeDFoBpnhZY//DTS1VZBSs6S5v46RZRbZjRFspEg==} - - brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - - braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} - - browser-stdout@1.3.1: - resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} - - bs58@4.0.1: - resolution: {integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==} - - buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - - buffer@6.0.3: - resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} - - bufferutil@4.0.8: - resolution: {integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==} - engines: {node: '>=6.14.2'} - - camelcase@6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} - - chai@4.5.0: - resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==} - engines: {node: '>=4'} - - chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - - check-error@1.0.3: - resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} - - chokidar@3.5.3: - resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} - engines: {node: '>= 8.10.0'} - - cliui@7.0.4: - resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} - - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - - debug@4.3.7: - resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - decamelize@4.0.0: - resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} - engines: {node: '>=10'} - - deep-eql@4.1.4: - resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==} - engines: {node: '>=6'} - - delay@5.0.0: - resolution: {integrity: sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==} - engines: {node: '>=10'} - - diff@3.5.0: - resolution: {integrity: sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==} - engines: {node: '>=0.3.1'} - - diff@5.2.0: - resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} - engines: {node: '>=0.3.1'} - - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - - es6-promise@4.2.8: - resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} - - es6-promisify@5.0.0: - resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==} - - escalade@3.2.0: - resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} - engines: {node: '>=6'} - - escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - - eventemitter3@5.0.1: - resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} - - eyes@0.1.8: - resolution: {integrity: sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==} - engines: {node: '> 0.1.90'} - - fast-stable-stringify@1.0.0: - resolution: {integrity: sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==} - - file-uri-to-path@1.0.0: - resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} - - fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} - - find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - - flat@5.0.2: - resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} - hasBin: true - - fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - - get-func-name@2.0.2: - resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} - - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - - glob@8.1.0: - resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} - engines: {node: '>=12'} - deprecated: Glob versions prior to v9 are no longer supported - - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - - he@1.2.0: - resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} - hasBin: true - - humanize-ms@1.2.1: - resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} - - ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - - inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. - - inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - - is-plain-obj@2.1.0: - resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} - engines: {node: '>=8'} - - is-unicode-supported@0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} - engines: {node: '>=10'} - - isomorphic-ws@4.0.1: - resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==} - peerDependencies: - ws: '*' - - jayson@4.1.2: - resolution: {integrity: sha512-5nzMWDHy6f+koZOuYsArh2AXs73NfWYVlFyJJuCedr93GpY+Ku8qq10ropSXVfHK+H0T6paA88ww+/dV+1fBNA==} - engines: {node: '>=8'} - hasBin: true - - js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true - - json-stringify-safe@5.0.1: - resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} - - json5@1.0.2: - resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} - hasBin: true - - jsonparse@1.3.1: - resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} - engines: {'0': node >= 0.2.0} - - locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - - log-symbols@4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} - engines: {node: '>=10'} - - loupe@2.3.7: - resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} - - make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - - minimatch@5.1.6: - resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} - engines: {node: '>=10'} - - minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - - mkdirp@0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} - hasBin: true - - mocha@10.7.3: - resolution: {integrity: sha512-uQWxAu44wwiACGqjbPYmjo7Lg8sFrS3dQe7PP2FQI+woptP4vZXSMcfMyFL/e1yFEeEpV4RtyTpZROOKmxis+A==} - engines: {node: '>= 14.0.0'} - hasBin: true - - ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - - node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - - node-gyp-build@4.8.2: - resolution: {integrity: sha512-IRUxE4BVsHWXkV/SFOut4qTlagw2aM8T5/vnTsmrHJvVoKueJHRc/JaFND7QDDc61kLYUJ6qlZM3sqTSyx2dTw==} - hasBin: true - - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - - once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - - p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - - p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - - path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - - pathval@1.1.1: - resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} - - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - - randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - - regenerator-runtime@0.14.1: - resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - - require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - - rpc-websockets@9.0.4: - resolution: {integrity: sha512-yWZWN0M+bivtoNLnaDbtny4XchdAIF5Q4g/ZsC5UC61Ckbp0QczwO8fg44rV3uYmY4WHd+EZQbn90W1d8ojzqQ==} - - safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - - serialize-javascript@6.0.2: - resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} - - solana-bankrun-darwin-arm64@0.4.0: - resolution: {integrity: sha512-6dz78Teoz7ez/3lpRLDjktYLJb79FcmJk2me4/YaB8WiO6W43OdExU4h+d2FyuAryO2DgBPXaBoBNY/8J1HJmw==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - - solana-bankrun-darwin-universal@0.4.0: - resolution: {integrity: sha512-zSSw/Jx3KNU42pPMmrEWABd0nOwGJfsj7nm9chVZ3ae7WQg3Uty0hHAkn5NSDCj3OOiN0py9Dr1l9vmRJpOOxg==} - engines: {node: '>= 10'} - os: [darwin] - - solana-bankrun-darwin-x64@0.4.0: - resolution: {integrity: sha512-LWjs5fsgHFtyr7YdJR6r0Ho5zrtzI6CY4wvwPXr8H2m3b4pZe6RLIZjQtabCav4cguc14G0K8yQB2PTMuGub8w==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - - solana-bankrun-linux-x64-gnu@0.4.0: - resolution: {integrity: sha512-SrlVrb82UIxt21Zr/XZFHVV/h9zd2/nP25PMpLJVLD7Pgl2yhkhfi82xj3OjxoQqWe+zkBJ+uszA0EEKr67yNw==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - solana-bankrun-linux-x64-musl@0.4.0: - resolution: {integrity: sha512-Nv328ZanmURdYfcLL+jwB1oMzX4ZzK57NwIcuJjGlf0XSNLq96EoaO5buEiUTo4Ls7MqqMyLbClHcrPE7/aKyA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - solana-bankrun@0.4.0: - resolution: {integrity: sha512-NMmXUipPBkt8NgnyNO3SCnPERP6xT/AMNMBooljGA3+rG6NN8lmXJsKeLqQTiFsDeWD74U++QM/DgcueSWvrIg==} - engines: {node: '>= 10'} - - source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - - source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - - strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - - strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - - superstruct@2.0.2: - resolution: {integrity: sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A==} - engines: {node: '>=14.0.0'} - - supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - - supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} - - text-encoding-utf-8@1.0.2: - resolution: {integrity: sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==} - - through@2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - - tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - - ts-mocha@10.0.0: - resolution: {integrity: sha512-VRfgDO+iiuJFlNB18tzOfypJ21xn2xbuZyDvJvqpTbWgkAgD17ONGr8t+Tl8rcBtOBdjXp5e/Rk+d39f7XBHRw==} - engines: {node: '>= 6.X.X'} - hasBin: true - peerDependencies: - mocha: ^3.X.X || ^4.X.X || ^5.X.X || ^6.X.X || ^7.X.X || ^8.X.X || ^9.X.X || ^10.X.X - - ts-node@7.0.1: - resolution: {integrity: sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==} - engines: {node: '>=4.2.0'} - hasBin: true - - tsconfig-paths@3.15.0: - resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} - - tslib@2.8.0: - resolution: {integrity: sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==} - - type-detect@4.1.0: - resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==} - engines: {node: '>=4'} - - typescript@5.6.3: - resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} - engines: {node: '>=14.17'} - hasBin: true - - undici-types@6.19.8: - resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} - - utf-8-validate@5.0.10: - resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==} - engines: {node: '>=6.14.2'} - - uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - hasBin: true - - webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - - whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - - workerpool@6.5.1: - resolution: {integrity: sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==} - - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - - wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - - ws@7.5.10: - resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} - engines: {node: '>=8.3.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - ws@8.18.0: - resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - - yargs-parser@20.2.9: - resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} - engines: {node: '>=10'} - - yargs-unparser@2.0.0: - resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} - engines: {node: '>=10'} - - yargs@16.2.0: - resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} - engines: {node: '>=10'} - - yn@2.0.0: - resolution: {integrity: sha512-uTv8J/wiWTgUTg+9vLTi//leUl5vDQS6uii/emeTb2ssY7vl6QWf2fFbIIGjnhjvbdKlU0ed7QPgY1htTC86jQ==} - engines: {node: '>=4'} - - yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - -snapshots: - - '@babel/runtime@7.25.7': - dependencies: - regenerator-runtime: 0.14.1 - - '@noble/curves@1.6.0': - dependencies: - '@noble/hashes': 1.5.0 - - '@noble/hashes@1.5.0': {} - - '@solana/buffer-layout@4.0.1': - dependencies: - buffer: 6.0.3 - - '@solana/web3.js@1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10)': - dependencies: - '@babel/runtime': 7.25.7 - '@noble/curves': 1.6.0 - '@noble/hashes': 1.5.0 - '@solana/buffer-layout': 4.0.1 - agentkeepalive: 4.5.0 - bigint-buffer: 1.1.5 - bn.js: 5.2.1 - borsh: 0.7.0 - bs58: 4.0.1 - buffer: 6.0.3 - fast-stable-stringify: 1.0.0 - jayson: 4.1.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) - node-fetch: 2.7.0 - rpc-websockets: 9.0.4 - superstruct: 2.0.2 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - - '@swc/helpers@0.5.13': - dependencies: - tslib: 2.8.0 - - '@types/chai@4.3.20': {} - - '@types/connect@3.4.38': - dependencies: - '@types/node': 22.7.7 - - '@types/json5@0.0.29': - optional: true - - '@types/mocha@10.0.9': {} - - '@types/node@12.20.55': {} - - '@types/node@22.7.7': - dependencies: - undici-types: 6.19.8 - - '@types/uuid@8.3.4': {} - - '@types/ws@7.4.7': - dependencies: - '@types/node': 22.7.7 - - '@types/ws@8.5.12': - dependencies: - '@types/node': 22.7.7 - - JSONStream@1.3.5: - dependencies: - jsonparse: 1.3.1 - through: 2.3.8 - - agentkeepalive@4.5.0: - dependencies: - humanize-ms: 1.2.1 - - ansi-colors@4.1.3: {} - - ansi-regex@5.0.1: {} - - ansi-styles@4.3.0: - dependencies: - color-convert: 2.0.1 - - anymatch@3.1.3: - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - - argparse@2.0.1: {} - - arrify@1.0.1: {} - - assertion-error@1.1.0: {} - - balanced-match@1.0.2: {} - - base-x@3.0.10: - dependencies: - safe-buffer: 5.2.1 - - base64-js@1.5.1: {} - - bigint-buffer@1.1.5: - dependencies: - bindings: 1.5.0 - - binary-extensions@2.3.0: {} - - bindings@1.5.0: - dependencies: - file-uri-to-path: 1.0.0 - - bn.js@5.2.1: {} - - borsh@0.7.0: - dependencies: - bn.js: 5.2.1 - bs58: 4.0.1 - text-encoding-utf-8: 1.0.2 - - borsh@2.0.0: {} - - brace-expansion@2.0.1: - dependencies: - balanced-match: 1.0.2 - - braces@3.0.3: - dependencies: - fill-range: 7.1.1 - - browser-stdout@1.3.1: {} - - bs58@4.0.1: - dependencies: - base-x: 3.0.10 - - buffer-from@1.1.2: {} - - buffer@6.0.3: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - - bufferutil@4.0.8: - dependencies: - node-gyp-build: 4.8.2 - optional: true - - camelcase@6.3.0: {} - - chai@4.5.0: - dependencies: - assertion-error: 1.1.0 - check-error: 1.0.3 - deep-eql: 4.1.4 - get-func-name: 2.0.2 - loupe: 2.3.7 - pathval: 1.1.1 - type-detect: 4.1.0 - - chalk@4.1.2: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - - check-error@1.0.3: - dependencies: - get-func-name: 2.0.2 - - chokidar@3.5.3: - dependencies: - anymatch: 3.1.3 - braces: 3.0.3 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - - cliui@7.0.4: - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - - color-convert@2.0.1: - dependencies: - color-name: 1.1.4 - - color-name@1.1.4: {} - - commander@2.20.3: {} - - debug@4.3.7(supports-color@8.1.1): - dependencies: - ms: 2.1.3 - optionalDependencies: - supports-color: 8.1.1 - - decamelize@4.0.0: {} - - deep-eql@4.1.4: - dependencies: - type-detect: 4.1.0 - - delay@5.0.0: {} - - diff@3.5.0: {} - - diff@5.2.0: {} - - emoji-regex@8.0.0: {} - - es6-promise@4.2.8: {} - - es6-promisify@5.0.0: - dependencies: - es6-promise: 4.2.8 - - escalade@3.2.0: {} - - escape-string-regexp@4.0.0: {} - - eventemitter3@5.0.1: {} - - eyes@0.1.8: {} - - fast-stable-stringify@1.0.0: {} - - file-uri-to-path@1.0.0: {} - - fill-range@7.1.1: - dependencies: - to-regex-range: 5.0.1 - - find-up@5.0.0: - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - - flat@5.0.2: {} - - fs.realpath@1.0.0: {} - - fsevents@2.3.3: - optional: true - - get-caller-file@2.0.5: {} - - get-func-name@2.0.2: {} - - glob-parent@5.1.2: - dependencies: - is-glob: 4.0.3 - - glob@8.1.0: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 5.1.6 - once: 1.4.0 - - has-flag@4.0.0: {} - - he@1.2.0: {} - - humanize-ms@1.2.1: - dependencies: - ms: 2.1.3 - - ieee754@1.2.1: {} - - inflight@1.0.6: - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - - inherits@2.0.4: {} - - is-binary-path@2.1.0: - dependencies: - binary-extensions: 2.3.0 - - is-extglob@2.1.1: {} - - is-fullwidth-code-point@3.0.0: {} - - is-glob@4.0.3: - dependencies: - is-extglob: 2.1.1 - - is-number@7.0.0: {} - - is-plain-obj@2.1.0: {} - - is-unicode-supported@0.1.0: {} - - isomorphic-ws@4.0.1(ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10)): - dependencies: - ws: 7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) - - jayson@4.1.2(bufferutil@4.0.8)(utf-8-validate@5.0.10): - dependencies: - '@types/connect': 3.4.38 - '@types/node': 12.20.55 - '@types/ws': 7.4.7 - JSONStream: 1.3.5 - commander: 2.20.3 - delay: 5.0.0 - es6-promisify: 5.0.0 - eyes: 0.1.8 - isomorphic-ws: 4.0.1(ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10)) - json-stringify-safe: 5.0.1 - uuid: 8.3.2 - ws: 7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - js-yaml@4.1.0: - dependencies: - argparse: 2.0.1 - - json-stringify-safe@5.0.1: {} - - json5@1.0.2: - dependencies: - minimist: 1.2.8 - optional: true - - jsonparse@1.3.1: {} - - locate-path@6.0.0: - dependencies: - p-locate: 5.0.0 - - log-symbols@4.1.0: - dependencies: - chalk: 4.1.2 - is-unicode-supported: 0.1.0 - - loupe@2.3.7: - dependencies: - get-func-name: 2.0.2 - - make-error@1.3.6: {} - - minimatch@5.1.6: - dependencies: - brace-expansion: 2.0.1 - - minimist@1.2.8: {} - - mkdirp@0.5.6: - dependencies: - minimist: 1.2.8 - - mocha@10.7.3: - dependencies: - ansi-colors: 4.1.3 - browser-stdout: 1.3.1 - chokidar: 3.5.3 - debug: 4.3.7(supports-color@8.1.1) - diff: 5.2.0 - escape-string-regexp: 4.0.0 - find-up: 5.0.0 - glob: 8.1.0 - he: 1.2.0 - js-yaml: 4.1.0 - log-symbols: 4.1.0 - minimatch: 5.1.6 - ms: 2.1.3 - serialize-javascript: 6.0.2 - strip-json-comments: 3.1.1 - supports-color: 8.1.1 - workerpool: 6.5.1 - yargs: 16.2.0 - yargs-parser: 20.2.9 - yargs-unparser: 2.0.0 - - ms@2.1.3: {} - - node-fetch@2.7.0: - dependencies: - whatwg-url: 5.0.0 - - node-gyp-build@4.8.2: - optional: true - - normalize-path@3.0.0: {} - - once@1.4.0: - dependencies: - wrappy: 1.0.2 - - p-limit@3.1.0: - dependencies: - yocto-queue: 0.1.0 - - p-locate@5.0.0: - dependencies: - p-limit: 3.1.0 - - path-exists@4.0.0: {} - - pathval@1.1.1: {} - - picomatch@2.3.1: {} - - randombytes@2.1.0: - dependencies: - safe-buffer: 5.2.1 - - readdirp@3.6.0: - dependencies: - picomatch: 2.3.1 - - regenerator-runtime@0.14.1: {} - - require-directory@2.1.1: {} - - rpc-websockets@9.0.4: - dependencies: - '@swc/helpers': 0.5.13 - '@types/uuid': 8.3.4 - '@types/ws': 8.5.12 - buffer: 6.0.3 - eventemitter3: 5.0.1 - uuid: 8.3.2 - ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - optionalDependencies: - bufferutil: 4.0.8 - utf-8-validate: 5.0.10 - - safe-buffer@5.2.1: {} - - serialize-javascript@6.0.2: - dependencies: - randombytes: 2.1.0 - - solana-bankrun-darwin-arm64@0.4.0: - optional: true - - solana-bankrun-darwin-universal@0.4.0: - optional: true - - solana-bankrun-darwin-x64@0.4.0: - optional: true - - solana-bankrun-linux-x64-gnu@0.4.0: - optional: true - - solana-bankrun-linux-x64-musl@0.4.0: - optional: true - - solana-bankrun@0.4.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): - dependencies: - '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) - bs58: 4.0.1 - optionalDependencies: - solana-bankrun-darwin-arm64: 0.4.0 - solana-bankrun-darwin-universal: 0.4.0 - solana-bankrun-darwin-x64: 0.4.0 - solana-bankrun-linux-x64-gnu: 0.4.0 - solana-bankrun-linux-x64-musl: 0.4.0 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - - source-map-support@0.5.21: - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - - source-map@0.6.1: {} - - string-width@4.2.3: - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - - strip-ansi@6.0.1: - dependencies: - ansi-regex: 5.0.1 - - strip-bom@3.0.0: - optional: true - - strip-json-comments@3.1.1: {} - - superstruct@2.0.2: {} - - supports-color@7.2.0: - dependencies: - has-flag: 4.0.0 - - supports-color@8.1.1: - dependencies: - has-flag: 4.0.0 - - text-encoding-utf-8@1.0.2: {} - - through@2.3.8: {} - - to-regex-range@5.0.1: - dependencies: - is-number: 7.0.0 - - tr46@0.0.3: {} - - ts-mocha@10.0.0(mocha@10.7.3): - dependencies: - mocha: 10.7.3 - ts-node: 7.0.1 - optionalDependencies: - tsconfig-paths: 3.15.0 - - ts-node@7.0.1: - dependencies: - arrify: 1.0.1 - buffer-from: 1.1.2 - diff: 3.5.0 - make-error: 1.3.6 - minimist: 1.2.8 - mkdirp: 0.5.6 - source-map-support: 0.5.21 - yn: 2.0.0 - - tsconfig-paths@3.15.0: - dependencies: - '@types/json5': 0.0.29 - json5: 1.0.2 - minimist: 1.2.8 - strip-bom: 3.0.0 - optional: true - - tslib@2.8.0: {} - - type-detect@4.1.0: {} - - typescript@5.6.3: {} - - undici-types@6.19.8: {} - - utf-8-validate@5.0.10: - dependencies: - node-gyp-build: 4.8.2 - optional: true - - uuid@8.3.2: {} - - webidl-conversions@3.0.1: {} - - whatwg-url@5.0.0: - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - - workerpool@6.5.1: {} - - wrap-ansi@7.0.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - wrappy@1.0.2: {} - - ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10): - optionalDependencies: - bufferutil: 4.0.8 - utf-8-validate: 5.0.10 - - ws@8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): - optionalDependencies: - bufferutil: 4.0.8 - utf-8-validate: 5.0.10 - - y18n@5.0.8: {} - - yargs-parser@20.2.9: {} - - yargs-unparser@2.0.0: - dependencies: - camelcase: 6.3.0 - decamelize: 4.0.0 - flat: 5.0.2 - is-plain-obj: 2.1.0 - - yargs@16.2.0: - dependencies: - cliui: 7.0.4 - escalade: 3.2.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 20.2.9 - - yn@2.0.0: {} - - yocto-queue@0.1.0: {} diff --git a/basics/counter/steel/program/Cargo.toml b/basics/counter/steel/program/Cargo.toml deleted file mode 100644 index 2f103bd2c..000000000 --- a/basics/counter/steel/program/Cargo.toml +++ /dev/null @@ -1,19 +0,0 @@ -[package] -name = "counter-program" -version = "0.1.0" -edition = "2021" - -[lib] -crate-type = ["cdylib", "lib"] - -[dependencies] -counter-api.workspace = true -solana-program.workspace = true -steel.workspace = true - -[dev-dependencies] -bs64 = "0.1.2" -rand = "0.8.5" -solana-program-test = "1.18" -solana-sdk = "1.18" -tokio = { version = "1.35", features = ["full"] } diff --git a/basics/counter/steel/program/src/increment.rs b/basics/counter/steel/program/src/increment.rs deleted file mode 100644 index a08c27943..000000000 --- a/basics/counter/steel/program/src/increment.rs +++ /dev/null @@ -1,28 +0,0 @@ -use counter_api::prelude::*; -use steel::*; - -use solana_program::msg; - -pub fn process_increment(accounts: &[AccountInfo<'_>], data: &[u8]) -> ProgramResult { - msg!("Processing Increment instruction"); - - // Parse args. - let args = Increment::try_from_bytes(data)?; - let amount = u64::from_le_bytes(args.amount); - msg!("Parsed amount: {}", amount); - - // Load accounts. - let [signer_info, counter_info] = accounts else { - return Err(ProgramError::NotEnoughAccountKeys); - }; - signer_info.is_signer()?; - let counter = counter_info - .as_account_mut::(&counter_api::ID)? - .assert_mut(|c| c.value < 100)?; - - // Update state - counter.value += amount; - - msg!("Final amount: {}", counter.value); - Ok(()) -} diff --git a/basics/counter/steel/program/src/initialize.rs b/basics/counter/steel/program/src/initialize.rs deleted file mode 100644 index 0ec6b6e0d..000000000 --- a/basics/counter/steel/program/src/initialize.rs +++ /dev/null @@ -1,30 +0,0 @@ -use counter_api::prelude::*; -use steel::*; - -pub fn process_initialize(accounts: &[AccountInfo<'_>], _data: &[u8]) -> ProgramResult { - // Load accounts. - let [signer_info, counter_info, system_program] = accounts else { - return Err(ProgramError::NotEnoughAccountKeys); - }; - - signer_info.is_signer()?; - counter_info - .is_empty()? - .is_writable()? - .has_seeds(&[COUNTER_SEED], &counter_api::ID)?; - system_program.is_program(&system_program::ID)?; - - // Initialize counter. - create_account::( - counter_info, - system_program, - signer_info, - &counter_api::ID, - &[COUNTER_SEED], - )?; - - let counter = counter_info.as_account_mut::(&counter_api::ID)?; - counter.value = 0; - - Ok(()) -} diff --git a/basics/counter/steel/program/src/lib.rs b/basics/counter/steel/program/src/lib.rs deleted file mode 100644 index e20fad361..000000000 --- a/basics/counter/steel/program/src/lib.rs +++ /dev/null @@ -1,25 +0,0 @@ -mod increment; -mod initialize; - -use increment::*; -use initialize::*; - -use counter_api::prelude::*; -use steel::*; - -pub fn process_instruction( - program_id: &Pubkey, - accounts: &[AccountInfo], - data: &[u8], -) -> ProgramResult { - let (ix, data) = parse_instruction(&counter_api::ID, program_id, data)?; - - match ix { - CounterInstruction::Initialize => process_initialize(accounts, data)?, - CounterInstruction::Increment => process_increment(accounts, data)?, - } - - Ok(()) -} - -entrypoint!(process_instruction); diff --git a/basics/counter/steel/program/tests/test.rs b/basics/counter/steel/program/tests/test.rs deleted file mode 100644 index 8262f4b0c..000000000 --- a/basics/counter/steel/program/tests/test.rs +++ /dev/null @@ -1,45 +0,0 @@ -use counter_api::prelude::*; -use solana_program::hash::Hash; -use solana_program_test::{processor, BanksClient, ProgramTest}; -use solana_sdk::{signature::Keypair, signer::Signer, transaction::Transaction}; -use steel::*; - -async fn setup() -> (BanksClient, Keypair, Hash) { - let mut program_test = ProgramTest::new( - "counter_program", - counter_api::ID, - processor!(counter_program::process_instruction), - ); - program_test.prefer_bpf(true); - program_test.start().await -} - -#[tokio::test] -async fn should_initialize_and_increment_counter() { - // Setup test - let (mut banks, payer, blockhash) = setup().await; - - // Submit initialize transaction. - let ix = initialize(payer.pubkey()); - let tx = Transaction::new_signed_with_payer(&[ix], Some(&payer.pubkey()), &[&payer], blockhash); - let res = banks.process_transaction(tx).await; - assert!(res.is_ok()); - - // Verify counter was initialized. - let counter_address = counter_pda().0; - let counter_account = banks.get_account(counter_address).await.unwrap().unwrap(); - let counter = Counter::try_from_bytes(&counter_account.data).unwrap(); - assert_eq!(counter_account.owner, counter_api::ID); - assert_eq!(counter.value, 0); - - // Submit add transaction. - let ix = increment(payer.pubkey(), 42); - let tx = Transaction::new_signed_with_payer(&[ix], Some(&payer.pubkey()), &[&payer], blockhash); - let res = banks.process_transaction(tx).await; - assert!(res.is_ok()); - - // Verify counter was incremented. - let counter_account = banks.get_account(counter_address).await.unwrap().unwrap(); - let counter = Counter::try_from_bytes(&counter_account.data).unwrap(); - assert_eq!(counter.value, 42); -} diff --git a/basics/counter/steel/tests/main.test.ts b/basics/counter/steel/tests/main.test.ts deleted file mode 100644 index c5b69d00c..000000000 --- a/basics/counter/steel/tests/main.test.ts +++ /dev/null @@ -1,103 +0,0 @@ -import { Keypair, PublicKey, SystemProgram, Transaction, TransactionInstruction } from '@solana/web3.js'; -import * as borsh from 'borsh'; -import { assert } from 'chai'; -import { describe, it } from 'mocha'; -import { BanksClient, ProgramTestContext, start } from 'solana-bankrun'; - -describe('counter program', async () => { - const PROGRAM_ID = new PublicKey('z7msBPQHDJjTvdQRoEcKyENgXDhSRYeHieN1ZMTqo35'); - - let context: ProgramTestContext; - let client: BanksClient; - let payer: Keypair; - - before(async () => { - context = await start([{ name: 'counter_program', programId: PROGRAM_ID }], []); - client = context.banksClient; - payer = context.payer; - }); - - it('initialize and increment the counter', async () => { - // derive the counter PDA - const [counterPDA] = PublicKey.findProgramAddressSync( - [Buffer.from('counter')], // seed - PROGRAM_ID, - ); - - const instructionDiscriminators = { - initialize: Buffer.from([0]), - increment: Buffer.from([1]), - }; - - // create the initialize instruction - const initializeIx = new TransactionInstruction({ - programId: PROGRAM_ID, - keys: [ - { pubkey: payer.publicKey, isSigner: true, isWritable: true }, - { pubkey: counterPDA, isSigner: false, isWritable: true }, - { pubkey: SystemProgram.programId, isSigner: false, isWritable: false }, - ], - data: instructionDiscriminators.initialize, - }); - - // send the initialize transaction - const initializeTx = new Transaction(); - initializeTx.recentBlockhash = context.lastBlockhash; - initializeTx.add(initializeIx).sign(payer); - - // process the transaction - await client.processTransaction(initializeTx); - - // fetch the counter account data - const accountInfo = await client.getAccount(counterPDA); - assert(accountInfo !== null, 'counter account should exist'); - - // define the counter schema - const counterSchema: borsh.Schema = { - struct: { discriminator: 'u64', value: 'u64' }, - }; - - // deserialize the counter account data - const counterData = borsh.deserialize(counterSchema, accountInfo?.data) as { - value: bigint; - }; - - // check the counter value is 0 - assert(counterData.value === BigInt(0), 'counter value should be 0'); - - // increment (must be a number between 0 and 255) - const amount = BigInt(42); - const amountBuffer = Buffer.alloc(8); - amountBuffer.writeBigUInt64LE(amount); - - // data for the increment instruction - const incrementData = Buffer.concat([instructionDiscriminators.increment, amountBuffer]); - - // create the increment instruction - const incrementIx = new TransactionInstruction({ - programId: PROGRAM_ID, - keys: [ - { pubkey: payer.publicKey, isSigner: true, isWritable: true }, - { pubkey: counterPDA, isSigner: false, isWritable: true }, - ], - data: incrementData, - }); - - // send the increment transaction - const incrementTx = new Transaction(); - incrementTx.recentBlockhash = context.lastBlockhash; - incrementTx.add(incrementIx).sign(payer); - - // process the transaction - await client.processTransaction(incrementTx); - - // fetch the counter account data - const updatedAccountInfo = await client.getAccount(counterPDA); - assert(updatedAccountInfo !== null, 'counter account should exist'); - - // deserialize the updated counter account data - const updatedCounterData = borsh.deserialize(counterSchema, updatedAccountInfo?.data) as { value: bigint }; - - assert(updatedCounterData.value === BigInt(amount), `counter value should be ${amount} but we got ${updatedCounterData.value}`); - }); -}); diff --git a/basics/counter/steel/tsconfig.json b/basics/counter/steel/tsconfig.json deleted file mode 100644 index 8c20b2236..000000000 --- a/basics/counter/steel/tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "compilerOptions": { - "types": ["mocha", "chai", "node"], - "typeRoots": ["./node_modules/@types"], - "lib": ["es2015"], - "module": "commonjs", - "target": "es6", - "esModuleInterop": true - } -} diff --git a/basics/create-account/steel/.gitignore b/basics/create-account/steel/.gitignore deleted file mode 100644 index 1fae5e12b..000000000 --- a/basics/create-account/steel/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -target -test-ledger -node_modules diff --git a/basics/create-account/steel/Cargo.toml b/basics/create-account/steel/Cargo.toml deleted file mode 100644 index 09639f0e7..000000000 --- a/basics/create-account/steel/Cargo.toml +++ /dev/null @@ -1,21 +0,0 @@ -[workspace] -resolver = "2" -members = ["api", "program"] - -[workspace.package] -version = "0.1.0" -edition = "2021" -license = "Apache-2.0" -homepage = "" -documentation = "" -repository = "" -readme = "./README.md" -keywords = ["solana"] - -[workspace.dependencies] -create-account-api = { path = "./api", version = "0.1.0" } -bytemuck = "1.14" -num_enum = "0.7" -solana-program = "2.1" -steel = "3.0" -thiserror = "1.0" diff --git a/basics/create-account/steel/README.md b/basics/create-account/steel/README.md deleted file mode 100644 index e97375294..000000000 --- a/basics/create-account/steel/README.md +++ /dev/null @@ -1,31 +0,0 @@ -# Steel: Create account - -This "create-account" program is written using **Steel**, a framework for writing onchain programs. - -## API -- [`Error`](api/src/error.rs) - Custom defined errors. -- [`Consts`](api/src/consts.rs) – Program constants. -- [`Instruction`](api/src/instruction.rs) – Declared instructions. - -## Instructions -- [`Initialize`](program/src/initialize.rs) – Initialize the account creation. - -## State -- [`New Account`](api/src/state.rs) – Link account and the struct that stores unique user ID. - -## Get started - -Compile your program: -```sh -pnpm build -``` - -Run unit and integration tests: -```sh -pnpm test -``` - -Do both together: -```sh -pnpm build-and-test -``` diff --git a/basics/create-account/steel/api/Cargo.toml b/basics/create-account/steel/api/Cargo.toml deleted file mode 100644 index 57adea1c1..000000000 --- a/basics/create-account/steel/api/Cargo.toml +++ /dev/null @@ -1,18 +0,0 @@ -[package] -name = "create-account-api" -description = "API for interacting with the create account program" -version.workspace = true -edition.workspace = true -license.workspace = true -homepage.workspace = true -documentation.workspace = true -repository.workspace = true -readme.workspace = true -keywords.workspace = true - -[dependencies] -bytemuck.workspace = true -num_enum.workspace = true -solana-program.workspace = true -steel.workspace = true -thiserror.workspace = true diff --git a/basics/create-account/steel/api/src/error.rs b/basics/create-account/steel/api/src/error.rs deleted file mode 100644 index 73d8527a0..000000000 --- a/basics/create-account/steel/api/src/error.rs +++ /dev/null @@ -1,12 +0,0 @@ -use steel::*; - -/// Declare custom error enum -#[derive(Debug, Error, Clone, Copy, PartialEq, Eq, IntoPrimitive)] -#[repr(u32)] -pub enum CreateAccountError { - /// Discriminator for error is set to '0' - #[error("There was an error while creating your account")] - AccountCreation = 0, -} - -error!(CreateAccountError); diff --git a/basics/create-account/steel/api/src/instruction.rs b/basics/create-account/steel/api/src/instruction.rs deleted file mode 100644 index 12df41611..000000000 --- a/basics/create-account/steel/api/src/instruction.rs +++ /dev/null @@ -1,18 +0,0 @@ -use steel::*; - -/// Declare the Instructions enum for create account -#[repr(u8)] -#[derive(Clone, Copy, Debug, Eq, PartialEq, TryFromPrimitive)] -pub enum CreateAccountInstruction { - /// Initialize account discriminator set to '0' - InitializeAccount = 0, -} - -/// Empty initialize account struct since -/// no data input is needed -#[repr(C)] -#[derive(Clone, Copy, Debug, Pod, Zeroable)] -pub struct InitializeAccount {} - -// Link Instructions enum to variant -instruction!(CreateAccountInstruction, InitializeAccount); diff --git a/basics/create-account/steel/api/src/lib.rs b/basics/create-account/steel/api/src/lib.rs deleted file mode 100644 index c5d193a21..000000000 --- a/basics/create-account/steel/api/src/lib.rs +++ /dev/null @@ -1,15 +0,0 @@ -pub mod error; -pub mod instruction; -pub mod sdk; -pub mod state; - -pub mod prelude { - pub use crate::error::*; - pub use crate::instruction::*; - pub use crate::sdk::*; - pub use crate::state::*; -} - -use steel::*; - -declare_id!("12rpZ18eGj7BeKvSFRZ45cni97HctTbKziBnW3MsH3NG"); diff --git a/basics/create-account/steel/api/src/sdk.rs b/basics/create-account/steel/api/src/sdk.rs deleted file mode 100644 index 094ddf5d4..000000000 --- a/basics/create-account/steel/api/src/sdk.rs +++ /dev/null @@ -1,15 +0,0 @@ -use steel::*; - -use crate::prelude::*; - -pub fn initialize_account(signer: Pubkey, new_account_key: Pubkey) -> Instruction { - Instruction { - program_id: crate::ID, - accounts: vec![ - AccountMeta::new(signer, true), - AccountMeta::new(new_account_key, false), - AccountMeta::new_readonly(system_program::ID, false), - ], - data: InitializeAccount {}.to_bytes(), - } -} diff --git a/basics/create-account/steel/api/src/state.rs b/basics/create-account/steel/api/src/state.rs deleted file mode 100644 index 8cfbd8894..000000000 --- a/basics/create-account/steel/api/src/state.rs +++ /dev/null @@ -1,17 +0,0 @@ -use steel::*; - -/// This enum is used to get a discriminator -/// for the new account. -#[repr(u8)] -#[derive(Clone, Copy, Debug, Eq, PartialEq, IntoPrimitive, TryFromPrimitive)] -pub enum CreateAccountDiscriminator { - NewAccount = 0, -} - -/// This empty struct represents the system account -/// It contains no data and is used to create a new account -#[repr(C)] -#[derive(Clone, Copy, Debug, PartialEq, Pod, Zeroable)] -pub struct NewAccount {} - -account!(CreateAccountDiscriminator, NewAccount); diff --git a/basics/create-account/steel/cicd.sh b/basics/create-account/steel/cicd.sh deleted file mode 100755 index 884f04c83..000000000 --- a/basics/create-account/steel/cicd.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash - -# Buld and deploy this program with ease using a single command -# Run this script with "bash cicd.sh" or "./cicd.sh" -# Note: Try running "chmod +x cicd.sh" if you face any issues. - -# Check if cargo is installed -if ! command -v cargo &> /dev/null -then - echo "Cargo could not be found. Please install Rust." - exit 1 -fi - -# Check if solana CLI is installed -if ! command -v solana &> /dev/null -then - echo "Solana CLI could not be found. Please install Solana." - exit 1 -fi - - -# Build -cargo build-sbf --manifest-path=./program/Cargo.toml --sbf-out-dir=./program/target/so - -# Deploy -solana program deploy ./program/target/so/create_account_program.so diff --git a/basics/create-account/steel/package.json b/basics/create-account/steel/package.json deleted file mode 100644 index 009bef7b3..000000000 --- a/basics/create-account/steel/package.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "name": "create-account-program", - "version": "1.0.0", - "type": "module", - "description": "Create an account using the steel framework for Solana", - "main": "index.js", - "scripts": { - "test": "pnpm ts-mocha -p ./tsconfig.json -t 1000000 ./tests/*.test.ts", - "build-and-test": "cargo build-sbf --manifest-path=./program/Cargo.toml --sbf-out-dir=./tests/fixtures && pnpm test", - "build": "cargo build-sbf --manifest-path=./program/Cargo.toml --sbf-out-dir=./program/target/so", - "deploy": "solana program deploy ./program/target/so/create_account_program.so" - }, - "keywords": ["solana"], - "author": "", - "license": "MIT", - "dependencies": { - "@solana/web3.js": "^1.95.4" - }, - "devDependencies": { - "@types/chai": "^4.3.20", - "@types/mocha": "^10.0.9", - "@types/node": "^22.8.1", - "chai": "^4.5.0", - "mocha": "^10.7.3", - "solana-bankrun": "^0.4.0", - "ts-mocha": "^10.0.0", - "typescript": "^5.6.3" - } -} diff --git a/basics/create-account/steel/pnpm-lock.yaml b/basics/create-account/steel/pnpm-lock.yaml deleted file mode 100644 index 70aef7f52..000000000 --- a/basics/create-account/steel/pnpm-lock.yaml +++ /dev/null @@ -1,1260 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -importers: - - .: - dependencies: - '@solana/web3.js': - specifier: ^1.95.4 - version: 1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) - devDependencies: - '@types/chai': - specifier: ^4.3.20 - version: 4.3.20 - '@types/mocha': - specifier: ^10.0.9 - version: 10.0.9 - '@types/node': - specifier: ^22.8.1 - version: 22.8.1 - chai: - specifier: ^4.5.0 - version: 4.5.0 - mocha: - specifier: ^10.7.3 - version: 10.7.3 - solana-bankrun: - specifier: ^0.4.0 - version: 0.4.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - ts-mocha: - specifier: ^10.0.0 - version: 10.0.0(mocha@10.7.3) - typescript: - specifier: ^5.6.3 - version: 5.6.3 - -packages: - - '@babel/runtime@7.26.0': - resolution: {integrity: sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==} - engines: {node: '>=6.9.0'} - - '@noble/curves@1.6.0': - resolution: {integrity: sha512-TlaHRXDehJuRNR9TfZDNQ45mMEd5dwUwmicsafcIX4SsNiqnCHKjE/1alYPd/lDRVhxdhUAlv8uEhMCI5zjIJQ==} - engines: {node: ^14.21.3 || >=16} - - '@noble/hashes@1.5.0': - resolution: {integrity: sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==} - engines: {node: ^14.21.3 || >=16} - - '@solana/buffer-layout@4.0.1': - resolution: {integrity: sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==} - engines: {node: '>=5.10'} - - '@solana/web3.js@1.95.4': - resolution: {integrity: sha512-sdewnNEA42ZSMxqkzdwEWi6fDgzwtJHaQa5ndUGEJYtoOnM6X5cvPmjoTUp7/k7bRrVAxfBgDnvQQHD6yhlLYw==} - - '@swc/helpers@0.5.13': - resolution: {integrity: sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==} - - '@types/chai@4.3.20': - resolution: {integrity: sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==} - - '@types/connect@3.4.38': - resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} - - '@types/json5@0.0.29': - resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - - '@types/mocha@10.0.9': - resolution: {integrity: sha512-sicdRoWtYevwxjOHNMPTl3vSfJM6oyW8o1wXeI7uww6b6xHg8eBznQDNSGBCDJmsE8UMxP05JgZRtsKbTqt//Q==} - - '@types/node@12.20.55': - resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - - '@types/node@22.8.1': - resolution: {integrity: sha512-k6Gi8Yyo8EtrNtkHXutUu2corfDf9su95VYVP10aGYMMROM6SAItZi0w1XszA6RtWTHSVp5OeFof37w0IEqCQg==} - - '@types/uuid@8.3.4': - resolution: {integrity: sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==} - - '@types/ws@7.4.7': - resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==} - - '@types/ws@8.5.12': - resolution: {integrity: sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==} - - JSONStream@1.3.5: - resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} - hasBin: true - - agentkeepalive@4.5.0: - resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} - engines: {node: '>= 8.0.0'} - - ansi-colors@4.1.3: - resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} - engines: {node: '>=6'} - - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - - argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - - arrify@1.0.1: - resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} - engines: {node: '>=0.10.0'} - - assertion-error@1.1.0: - resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} - - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - base-x@3.0.10: - resolution: {integrity: sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==} - - base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - - bigint-buffer@1.1.5: - resolution: {integrity: sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA==} - engines: {node: '>= 10.0.0'} - - binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} - - bindings@1.5.0: - resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} - - bn.js@5.2.1: - resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} - - borsh@0.7.0: - resolution: {integrity: sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==} - - brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - - braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} - - browser-stdout@1.3.1: - resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} - - bs58@4.0.1: - resolution: {integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==} - - buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - - buffer@6.0.3: - resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} - - bufferutil@4.0.8: - resolution: {integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==} - engines: {node: '>=6.14.2'} - - camelcase@6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} - - chai@4.5.0: - resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==} - engines: {node: '>=4'} - - chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - - check-error@1.0.3: - resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} - - chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} - - cliui@7.0.4: - resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} - - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - - debug@4.3.7: - resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - decamelize@4.0.0: - resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} - engines: {node: '>=10'} - - deep-eql@4.1.4: - resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==} - engines: {node: '>=6'} - - delay@5.0.0: - resolution: {integrity: sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==} - engines: {node: '>=10'} - - diff@3.5.0: - resolution: {integrity: sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==} - engines: {node: '>=0.3.1'} - - diff@5.2.0: - resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} - engines: {node: '>=0.3.1'} - - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - - es6-promise@4.2.8: - resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} - - es6-promisify@5.0.0: - resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==} - - escalade@3.2.0: - resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} - engines: {node: '>=6'} - - escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - - eventemitter3@5.0.1: - resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} - - eyes@0.1.8: - resolution: {integrity: sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==} - engines: {node: '> 0.1.90'} - - fast-stable-stringify@1.0.0: - resolution: {integrity: sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==} - - file-uri-to-path@1.0.0: - resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} - - fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} - - find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - - flat@5.0.2: - resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} - hasBin: true - - fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - - get-func-name@2.0.2: - resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} - - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - - glob@8.1.0: - resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} - engines: {node: '>=12'} - deprecated: Glob versions prior to v9 are no longer supported - - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - - he@1.2.0: - resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} - hasBin: true - - humanize-ms@1.2.1: - resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} - - ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - - inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. - - inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - - is-plain-obj@2.1.0: - resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} - engines: {node: '>=8'} - - is-unicode-supported@0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} - engines: {node: '>=10'} - - isomorphic-ws@4.0.1: - resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==} - peerDependencies: - ws: '*' - - jayson@4.1.2: - resolution: {integrity: sha512-5nzMWDHy6f+koZOuYsArh2AXs73NfWYVlFyJJuCedr93GpY+Ku8qq10ropSXVfHK+H0T6paA88ww+/dV+1fBNA==} - engines: {node: '>=8'} - hasBin: true - - js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true - - json-stringify-safe@5.0.1: - resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} - - json5@1.0.2: - resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} - hasBin: true - - jsonparse@1.3.1: - resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} - engines: {'0': node >= 0.2.0} - - locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - - log-symbols@4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} - engines: {node: '>=10'} - - loupe@2.3.7: - resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} - - make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - - minimatch@5.1.6: - resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} - engines: {node: '>=10'} - - minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - - mkdirp@0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} - hasBin: true - - mocha@10.7.3: - resolution: {integrity: sha512-uQWxAu44wwiACGqjbPYmjo7Lg8sFrS3dQe7PP2FQI+woptP4vZXSMcfMyFL/e1yFEeEpV4RtyTpZROOKmxis+A==} - engines: {node: '>= 14.0.0'} - hasBin: true - - ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - - node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - - node-gyp-build@4.8.2: - resolution: {integrity: sha512-IRUxE4BVsHWXkV/SFOut4qTlagw2aM8T5/vnTsmrHJvVoKueJHRc/JaFND7QDDc61kLYUJ6qlZM3sqTSyx2dTw==} - hasBin: true - - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - - once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - - p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - - p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - - path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - - pathval@1.1.1: - resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} - - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - - randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - - regenerator-runtime@0.14.1: - resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - - require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - - rpc-websockets@9.0.4: - resolution: {integrity: sha512-yWZWN0M+bivtoNLnaDbtny4XchdAIF5Q4g/ZsC5UC61Ckbp0QczwO8fg44rV3uYmY4WHd+EZQbn90W1d8ojzqQ==} - - safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - - serialize-javascript@6.0.2: - resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} - - solana-bankrun-darwin-arm64@0.4.0: - resolution: {integrity: sha512-6dz78Teoz7ez/3lpRLDjktYLJb79FcmJk2me4/YaB8WiO6W43OdExU4h+d2FyuAryO2DgBPXaBoBNY/8J1HJmw==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - - solana-bankrun-darwin-universal@0.4.0: - resolution: {integrity: sha512-zSSw/Jx3KNU42pPMmrEWABd0nOwGJfsj7nm9chVZ3ae7WQg3Uty0hHAkn5NSDCj3OOiN0py9Dr1l9vmRJpOOxg==} - engines: {node: '>= 10'} - os: [darwin] - - solana-bankrun-darwin-x64@0.4.0: - resolution: {integrity: sha512-LWjs5fsgHFtyr7YdJR6r0Ho5zrtzI6CY4wvwPXr8H2m3b4pZe6RLIZjQtabCav4cguc14G0K8yQB2PTMuGub8w==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - - solana-bankrun-linux-x64-gnu@0.4.0: - resolution: {integrity: sha512-SrlVrb82UIxt21Zr/XZFHVV/h9zd2/nP25PMpLJVLD7Pgl2yhkhfi82xj3OjxoQqWe+zkBJ+uszA0EEKr67yNw==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - solana-bankrun-linux-x64-musl@0.4.0: - resolution: {integrity: sha512-Nv328ZanmURdYfcLL+jwB1oMzX4ZzK57NwIcuJjGlf0XSNLq96EoaO5buEiUTo4Ls7MqqMyLbClHcrPE7/aKyA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - solana-bankrun@0.4.0: - resolution: {integrity: sha512-NMmXUipPBkt8NgnyNO3SCnPERP6xT/AMNMBooljGA3+rG6NN8lmXJsKeLqQTiFsDeWD74U++QM/DgcueSWvrIg==} - engines: {node: '>= 10'} - - source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - - source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - - strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - - strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - - superstruct@2.0.2: - resolution: {integrity: sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A==} - engines: {node: '>=14.0.0'} - - supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - - supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} - - text-encoding-utf-8@1.0.2: - resolution: {integrity: sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==} - - through@2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - - tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - - ts-mocha@10.0.0: - resolution: {integrity: sha512-VRfgDO+iiuJFlNB18tzOfypJ21xn2xbuZyDvJvqpTbWgkAgD17ONGr8t+Tl8rcBtOBdjXp5e/Rk+d39f7XBHRw==} - engines: {node: '>= 6.X.X'} - hasBin: true - peerDependencies: - mocha: ^3.X.X || ^4.X.X || ^5.X.X || ^6.X.X || ^7.X.X || ^8.X.X || ^9.X.X || ^10.X.X - - ts-node@7.0.1: - resolution: {integrity: sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==} - engines: {node: '>=4.2.0'} - hasBin: true - - tsconfig-paths@3.15.0: - resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} - - tslib@2.8.0: - resolution: {integrity: sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==} - - type-detect@4.1.0: - resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==} - engines: {node: '>=4'} - - typescript@5.6.3: - resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} - engines: {node: '>=14.17'} - hasBin: true - - undici-types@6.19.8: - resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} - - utf-8-validate@5.0.10: - resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==} - engines: {node: '>=6.14.2'} - - uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - hasBin: true - - webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - - whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - - workerpool@6.5.1: - resolution: {integrity: sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==} - - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - - wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - - ws@7.5.10: - resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} - engines: {node: '>=8.3.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - ws@8.18.0: - resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - - yargs-parser@20.2.9: - resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} - engines: {node: '>=10'} - - yargs-unparser@2.0.0: - resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} - engines: {node: '>=10'} - - yargs@16.2.0: - resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} - engines: {node: '>=10'} - - yn@2.0.0: - resolution: {integrity: sha512-uTv8J/wiWTgUTg+9vLTi//leUl5vDQS6uii/emeTb2ssY7vl6QWf2fFbIIGjnhjvbdKlU0ed7QPgY1htTC86jQ==} - engines: {node: '>=4'} - - yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - -snapshots: - - '@babel/runtime@7.26.0': - dependencies: - regenerator-runtime: 0.14.1 - - '@noble/curves@1.6.0': - dependencies: - '@noble/hashes': 1.5.0 - - '@noble/hashes@1.5.0': {} - - '@solana/buffer-layout@4.0.1': - dependencies: - buffer: 6.0.3 - - '@solana/web3.js@1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10)': - dependencies: - '@babel/runtime': 7.26.0 - '@noble/curves': 1.6.0 - '@noble/hashes': 1.5.0 - '@solana/buffer-layout': 4.0.1 - agentkeepalive: 4.5.0 - bigint-buffer: 1.1.5 - bn.js: 5.2.1 - borsh: 0.7.0 - bs58: 4.0.1 - buffer: 6.0.3 - fast-stable-stringify: 1.0.0 - jayson: 4.1.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) - node-fetch: 2.7.0 - rpc-websockets: 9.0.4 - superstruct: 2.0.2 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - - '@swc/helpers@0.5.13': - dependencies: - tslib: 2.8.0 - - '@types/chai@4.3.20': {} - - '@types/connect@3.4.38': - dependencies: - '@types/node': 22.8.1 - - '@types/json5@0.0.29': - optional: true - - '@types/mocha@10.0.9': {} - - '@types/node@12.20.55': {} - - '@types/node@22.8.1': - dependencies: - undici-types: 6.19.8 - - '@types/uuid@8.3.4': {} - - '@types/ws@7.4.7': - dependencies: - '@types/node': 22.8.1 - - '@types/ws@8.5.12': - dependencies: - '@types/node': 22.8.1 - - JSONStream@1.3.5: - dependencies: - jsonparse: 1.3.1 - through: 2.3.8 - - agentkeepalive@4.5.0: - dependencies: - humanize-ms: 1.2.1 - - ansi-colors@4.1.3: {} - - ansi-regex@5.0.1: {} - - ansi-styles@4.3.0: - dependencies: - color-convert: 2.0.1 - - anymatch@3.1.3: - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - - argparse@2.0.1: {} - - arrify@1.0.1: {} - - assertion-error@1.1.0: {} - - balanced-match@1.0.2: {} - - base-x@3.0.10: - dependencies: - safe-buffer: 5.2.1 - - base64-js@1.5.1: {} - - bigint-buffer@1.1.5: - dependencies: - bindings: 1.5.0 - - binary-extensions@2.3.0: {} - - bindings@1.5.0: - dependencies: - file-uri-to-path: 1.0.0 - - bn.js@5.2.1: {} - - borsh@0.7.0: - dependencies: - bn.js: 5.2.1 - bs58: 4.0.1 - text-encoding-utf-8: 1.0.2 - - brace-expansion@2.0.1: - dependencies: - balanced-match: 1.0.2 - - braces@3.0.3: - dependencies: - fill-range: 7.1.1 - - browser-stdout@1.3.1: {} - - bs58@4.0.1: - dependencies: - base-x: 3.0.10 - - buffer-from@1.1.2: {} - - buffer@6.0.3: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - - bufferutil@4.0.8: - dependencies: - node-gyp-build: 4.8.2 - optional: true - - camelcase@6.3.0: {} - - chai@4.5.0: - dependencies: - assertion-error: 1.1.0 - check-error: 1.0.3 - deep-eql: 4.1.4 - get-func-name: 2.0.2 - loupe: 2.3.7 - pathval: 1.1.1 - type-detect: 4.1.0 - - chalk@4.1.2: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - - check-error@1.0.3: - dependencies: - get-func-name: 2.0.2 - - chokidar@3.6.0: - dependencies: - anymatch: 3.1.3 - braces: 3.0.3 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - - cliui@7.0.4: - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - - color-convert@2.0.1: - dependencies: - color-name: 1.1.4 - - color-name@1.1.4: {} - - commander@2.20.3: {} - - debug@4.3.7(supports-color@8.1.1): - dependencies: - ms: 2.1.3 - optionalDependencies: - supports-color: 8.1.1 - - decamelize@4.0.0: {} - - deep-eql@4.1.4: - dependencies: - type-detect: 4.1.0 - - delay@5.0.0: {} - - diff@3.5.0: {} - - diff@5.2.0: {} - - emoji-regex@8.0.0: {} - - es6-promise@4.2.8: {} - - es6-promisify@5.0.0: - dependencies: - es6-promise: 4.2.8 - - escalade@3.2.0: {} - - escape-string-regexp@4.0.0: {} - - eventemitter3@5.0.1: {} - - eyes@0.1.8: {} - - fast-stable-stringify@1.0.0: {} - - file-uri-to-path@1.0.0: {} - - fill-range@7.1.1: - dependencies: - to-regex-range: 5.0.1 - - find-up@5.0.0: - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - - flat@5.0.2: {} - - fs.realpath@1.0.0: {} - - fsevents@2.3.3: - optional: true - - get-caller-file@2.0.5: {} - - get-func-name@2.0.2: {} - - glob-parent@5.1.2: - dependencies: - is-glob: 4.0.3 - - glob@8.1.0: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 5.1.6 - once: 1.4.0 - - has-flag@4.0.0: {} - - he@1.2.0: {} - - humanize-ms@1.2.1: - dependencies: - ms: 2.1.3 - - ieee754@1.2.1: {} - - inflight@1.0.6: - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - - inherits@2.0.4: {} - - is-binary-path@2.1.0: - dependencies: - binary-extensions: 2.3.0 - - is-extglob@2.1.1: {} - - is-fullwidth-code-point@3.0.0: {} - - is-glob@4.0.3: - dependencies: - is-extglob: 2.1.1 - - is-number@7.0.0: {} - - is-plain-obj@2.1.0: {} - - is-unicode-supported@0.1.0: {} - - isomorphic-ws@4.0.1(ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10)): - dependencies: - ws: 7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) - - jayson@4.1.2(bufferutil@4.0.8)(utf-8-validate@5.0.10): - dependencies: - '@types/connect': 3.4.38 - '@types/node': 12.20.55 - '@types/ws': 7.4.7 - JSONStream: 1.3.5 - commander: 2.20.3 - delay: 5.0.0 - es6-promisify: 5.0.0 - eyes: 0.1.8 - isomorphic-ws: 4.0.1(ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10)) - json-stringify-safe: 5.0.1 - uuid: 8.3.2 - ws: 7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - js-yaml@4.1.0: - dependencies: - argparse: 2.0.1 - - json-stringify-safe@5.0.1: {} - - json5@1.0.2: - dependencies: - minimist: 1.2.8 - optional: true - - jsonparse@1.3.1: {} - - locate-path@6.0.0: - dependencies: - p-locate: 5.0.0 - - log-symbols@4.1.0: - dependencies: - chalk: 4.1.2 - is-unicode-supported: 0.1.0 - - loupe@2.3.7: - dependencies: - get-func-name: 2.0.2 - - make-error@1.3.6: {} - - minimatch@5.1.6: - dependencies: - brace-expansion: 2.0.1 - - minimist@1.2.8: {} - - mkdirp@0.5.6: - dependencies: - minimist: 1.2.8 - - mocha@10.7.3: - dependencies: - ansi-colors: 4.1.3 - browser-stdout: 1.3.1 - chokidar: 3.6.0 - debug: 4.3.7(supports-color@8.1.1) - diff: 5.2.0 - escape-string-regexp: 4.0.0 - find-up: 5.0.0 - glob: 8.1.0 - he: 1.2.0 - js-yaml: 4.1.0 - log-symbols: 4.1.0 - minimatch: 5.1.6 - ms: 2.1.3 - serialize-javascript: 6.0.2 - strip-json-comments: 3.1.1 - supports-color: 8.1.1 - workerpool: 6.5.1 - yargs: 16.2.0 - yargs-parser: 20.2.9 - yargs-unparser: 2.0.0 - - ms@2.1.3: {} - - node-fetch@2.7.0: - dependencies: - whatwg-url: 5.0.0 - - node-gyp-build@4.8.2: - optional: true - - normalize-path@3.0.0: {} - - once@1.4.0: - dependencies: - wrappy: 1.0.2 - - p-limit@3.1.0: - dependencies: - yocto-queue: 0.1.0 - - p-locate@5.0.0: - dependencies: - p-limit: 3.1.0 - - path-exists@4.0.0: {} - - pathval@1.1.1: {} - - picomatch@2.3.1: {} - - randombytes@2.1.0: - dependencies: - safe-buffer: 5.2.1 - - readdirp@3.6.0: - dependencies: - picomatch: 2.3.1 - - regenerator-runtime@0.14.1: {} - - require-directory@2.1.1: {} - - rpc-websockets@9.0.4: - dependencies: - '@swc/helpers': 0.5.13 - '@types/uuid': 8.3.4 - '@types/ws': 8.5.12 - buffer: 6.0.3 - eventemitter3: 5.0.1 - uuid: 8.3.2 - ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - optionalDependencies: - bufferutil: 4.0.8 - utf-8-validate: 5.0.10 - - safe-buffer@5.2.1: {} - - serialize-javascript@6.0.2: - dependencies: - randombytes: 2.1.0 - - solana-bankrun-darwin-arm64@0.4.0: - optional: true - - solana-bankrun-darwin-universal@0.4.0: - optional: true - - solana-bankrun-darwin-x64@0.4.0: - optional: true - - solana-bankrun-linux-x64-gnu@0.4.0: - optional: true - - solana-bankrun-linux-x64-musl@0.4.0: - optional: true - - solana-bankrun@0.4.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): - dependencies: - '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) - bs58: 4.0.1 - optionalDependencies: - solana-bankrun-darwin-arm64: 0.4.0 - solana-bankrun-darwin-universal: 0.4.0 - solana-bankrun-darwin-x64: 0.4.0 - solana-bankrun-linux-x64-gnu: 0.4.0 - solana-bankrun-linux-x64-musl: 0.4.0 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - - source-map-support@0.5.21: - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - - source-map@0.6.1: {} - - string-width@4.2.3: - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - - strip-ansi@6.0.1: - dependencies: - ansi-regex: 5.0.1 - - strip-bom@3.0.0: - optional: true - - strip-json-comments@3.1.1: {} - - superstruct@2.0.2: {} - - supports-color@7.2.0: - dependencies: - has-flag: 4.0.0 - - supports-color@8.1.1: - dependencies: - has-flag: 4.0.0 - - text-encoding-utf-8@1.0.2: {} - - through@2.3.8: {} - - to-regex-range@5.0.1: - dependencies: - is-number: 7.0.0 - - tr46@0.0.3: {} - - ts-mocha@10.0.0(mocha@10.7.3): - dependencies: - mocha: 10.7.3 - ts-node: 7.0.1 - optionalDependencies: - tsconfig-paths: 3.15.0 - - ts-node@7.0.1: - dependencies: - arrify: 1.0.1 - buffer-from: 1.1.2 - diff: 3.5.0 - make-error: 1.3.6 - minimist: 1.2.8 - mkdirp: 0.5.6 - source-map-support: 0.5.21 - yn: 2.0.0 - - tsconfig-paths@3.15.0: - dependencies: - '@types/json5': 0.0.29 - json5: 1.0.2 - minimist: 1.2.8 - strip-bom: 3.0.0 - optional: true - - tslib@2.8.0: {} - - type-detect@4.1.0: {} - - typescript@5.6.3: {} - - undici-types@6.19.8: {} - - utf-8-validate@5.0.10: - dependencies: - node-gyp-build: 4.8.2 - optional: true - - uuid@8.3.2: {} - - webidl-conversions@3.0.1: {} - - whatwg-url@5.0.0: - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - - workerpool@6.5.1: {} - - wrap-ansi@7.0.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - wrappy@1.0.2: {} - - ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10): - optionalDependencies: - bufferutil: 4.0.8 - utf-8-validate: 5.0.10 - - ws@8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): - optionalDependencies: - bufferutil: 4.0.8 - utf-8-validate: 5.0.10 - - y18n@5.0.8: {} - - yargs-parser@20.2.9: {} - - yargs-unparser@2.0.0: - dependencies: - camelcase: 6.3.0 - decamelize: 4.0.0 - flat: 5.0.2 - is-plain-obj: 2.1.0 - - yargs@16.2.0: - dependencies: - cliui: 7.0.4 - escalade: 3.2.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 20.2.9 - - yn@2.0.0: {} - - yocto-queue@0.1.0: {} diff --git a/basics/create-account/steel/program/Cargo.toml b/basics/create-account/steel/program/Cargo.toml deleted file mode 100644 index f6cc88648..000000000 --- a/basics/create-account/steel/program/Cargo.toml +++ /dev/null @@ -1,19 +0,0 @@ -[package] -name = "create-account-program" -description = "" -version.workspace = true -edition.workspace = true -license.workspace = true -homepage.workspace = true -documentation.workspace = true -repository.workspace = true -readme.workspace = true -keywords.workspace = true - -[lib] -crate-type = ["cdylib", "lib"] - -[dependencies] -create-account-api.workspace = true -solana-program.workspace = true -steel.workspace = true diff --git a/basics/create-account/steel/program/src/initialize.rs b/basics/create-account/steel/program/src/initialize.rs deleted file mode 100644 index 578262f08..000000000 --- a/basics/create-account/steel/program/src/initialize.rs +++ /dev/null @@ -1,45 +0,0 @@ -use create_account_api::prelude::*; -use solana_program::msg; -use steel::sysvar::rent::Rent; -use steel::*; - -pub fn process_initialize(accounts: &[AccountInfo<'_>]) -> ProgramResult { - // Load accounts - let [payer, new_account, system_program] = accounts else { - msg!("Not enough accounts provided"); - return Err(ProgramError::NotEnoughAccountKeys); - }; - - // Validate accounts - payer - .is_signer() - .map_err(|_| ProgramError::MissingRequiredSignature)?; - - new_account.is_signer()?.is_empty()?.is_writable()?; - - system_program.is_program(&system_program::ID)?; - - // The helper "create_account" will create an account - // owned by our program and not the system program - - // Calculate the minimum balance needed for the account - // Space required is the size of our NewAccount struct - let space_required = std::mem::size_of::() as u64; - let lamports_required = (Rent::get()?).minimum_balance(space_required as usize); - - // Create the account by invoking a create_account system instruction - solana_program::program::invoke( - &solana_program::system_instruction::create_account( - payer.key, - new_account.key, - lamports_required, - space_required, - &system_program::ID, - ), - &[payer.clone(), new_account.clone(), system_program.clone()], - )?; - - msg!("A new account has been created and initialized!"); - - Ok(()) -} diff --git a/basics/create-account/steel/program/src/lib.rs b/basics/create-account/steel/program/src/lib.rs deleted file mode 100644 index 09971e91b..000000000 --- a/basics/create-account/steel/program/src/lib.rs +++ /dev/null @@ -1,24 +0,0 @@ -mod initialize; - -use create_account_api::prelude::*; -use initialize::*; -use steel::*; - -/// Process the input before sending it over -/// to our main program to use. -pub fn process_instruction( - program_id: &Pubkey, - accounts: &[AccountInfo], - data: &[u8], -) -> ProgramResult { - let (ix, _data) = parse_instruction(&create_account_api::ID, program_id, data)?; - - match ix { - CreateAccountInstruction::InitializeAccount => process_initialize(accounts)?, - } - - Ok(()) -} - -// Declare entrypoint for our program -entrypoint!(process_instruction); diff --git a/basics/create-account/steel/tests/main.test.ts b/basics/create-account/steel/tests/main.test.ts deleted file mode 100644 index afea0dca1..000000000 --- a/basics/create-account/steel/tests/main.test.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { type Blockhash, Keypair, LAMPORTS_PER_SOL, PublicKey, SystemProgram, Transaction, TransactionInstruction } from '@solana/web3.js'; -import { assert } from 'chai'; -import { before, describe, it } from 'mocha'; -import { type BanksClient, type ProgramTestContext, start } from 'solana-bankrun'; - -const PROGRAM_ID = new PublicKey('12rpZ18eGj7BeKvSFRZ45cni97HctTbKziBnW3MsH3NG'); - -const instructionDiscriminators = { - InitializeAccount: Buffer.from([0]), -}; - -describe('Create a system account', () => { - let context: ProgramTestContext; - let lastBlock: Blockhash; - let client: BanksClient; - let payer: Keypair; - - before(async () => { - context = await start([{ name: 'create_account_program', programId: PROGRAM_ID }], []); - client = context.banksClient; - payer = context.payer; - lastBlock = context.lastBlockhash; - }); - - it('should create the account via a cross program invocation', async () => { - const newAccount = Keypair.generate(); - - const ix = new TransactionInstruction({ - keys: [ - { pubkey: payer.publicKey, isSigner: true, isWritable: true }, - { pubkey: newAccount.publicKey, isSigner: true, isWritable: true }, - { pubkey: SystemProgram.programId, isSigner: false, isWritable: false }, - ], - programId: PROGRAM_ID, - data: Buffer.concat([instructionDiscriminators.InitializeAccount]), - }); - - const tx = new Transaction(); - tx.recentBlockhash = lastBlock; - tx.add(ix).sign(payer, newAccount); - - // No other tests required besides confirming if the transaction is processed - // Since transactions are atomic, we can be certain the account was created - await client.processTransaction(tx); - }); -}); diff --git a/basics/create-account/steel/tsconfig.json b/basics/create-account/steel/tsconfig.json deleted file mode 100644 index f7e571235..000000000 --- a/basics/create-account/steel/tsconfig.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "compilerOptions": { - "types": ["mocha", "chai", "node"], - "typeRoots": ["./node_modules/@types"], - "lib": ["es2015"], - "module": "commonjs", - "target": "es6", - "moduleResolution": "node", - "esModuleInterop": true, - "strict": true, - "sourceMap": true, - "outDir": "./dist", - "baseUrl": "." - } -} diff --git a/basics/cross-program-invocation/steel/README.md b/basics/cross-program-invocation/steel/README.md deleted file mode 100644 index 56465a6e4..000000000 --- a/basics/cross-program-invocation/steel/README.md +++ /dev/null @@ -1,6 +0,0 @@ -## Cross Program Invocation steel example - -### Programs - -- [Hand](./hand/README.md) -- [Lever](./lever/README.md) diff --git a/basics/cross-program-invocation/steel/hand/.gitignore b/basics/cross-program-invocation/steel/hand/.gitignore deleted file mode 100644 index 052739dbc..000000000 --- a/basics/cross-program-invocation/steel/hand/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -target -test-ledger diff --git a/basics/cross-program-invocation/steel/hand/Cargo.toml b/basics/cross-program-invocation/steel/hand/Cargo.toml deleted file mode 100644 index ff6a6ab87..000000000 --- a/basics/cross-program-invocation/steel/hand/Cargo.toml +++ /dev/null @@ -1,25 +0,0 @@ -[workspace] -resolver = "2" -members = ["api", "program"] - -[workspace.package] -version = "0.1.0" -edition = "2021" -license = "Apache-2.0" -homepage = "" -documentation = "" -repository = "" -readme = "./README.md" -keywords = ["solana"] - -[workspace.dependencies] -hand-api = { path = "./api", version = "0.1.0" } -lever-api = { path = "../lever/api", version = "0.1.0" } -lever-program = { path = "../lever/program", version = "0.1.0", features = [ - "cpi", -] } -bytemuck = "1.14" -num_enum = "0.7" -solana-program = "2.1" -steel = "3.0" -thiserror = "1.0" diff --git a/basics/cross-program-invocation/steel/hand/README.md b/basics/cross-program-invocation/steel/hand/README.md deleted file mode 100644 index 6ef2fade1..000000000 --- a/basics/cross-program-invocation/steel/hand/README.md +++ /dev/null @@ -1,21 +0,0 @@ -# Hand - -**Hand** is a ... - -## API -- [`Instruction`](api/src/instruction.rs) – Declared instructions. - -## Instructions -- [`PullLever`](program/src/pull_lever.rs) – Pull Lever ... - -## Get started - -Compile your program: -```sh -steel build -``` - -Run unit and integration tests: -```sh -steel test -``` diff --git a/basics/cross-program-invocation/steel/hand/api/Cargo.toml b/basics/cross-program-invocation/steel/hand/api/Cargo.toml deleted file mode 100644 index 10404f391..000000000 --- a/basics/cross-program-invocation/steel/hand/api/Cargo.toml +++ /dev/null @@ -1,19 +0,0 @@ -[package] -name = "hand-api" -description = "API for interacting with the Hand program" -version.workspace = true -edition.workspace = true -license.workspace = true -homepage.workspace = true -documentation.workspace = true -repository.workspace = true -readme.workspace = true -keywords.workspace = true - -[dependencies] -bytemuck.workspace = true -num_enum.workspace = true -solana-program.workspace = true -steel.workspace = true -thiserror.workspace = true -lever-api.workspace = true diff --git a/basics/cross-program-invocation/steel/hand/api/src/instruction.rs b/basics/cross-program-invocation/steel/hand/api/src/instruction.rs deleted file mode 100644 index 1bc8f9d96..000000000 --- a/basics/cross-program-invocation/steel/hand/api/src/instruction.rs +++ /dev/null @@ -1,15 +0,0 @@ -use steel::*; - -#[repr(u8)] -#[derive(Clone, Copy, Debug, Eq, PartialEq, TryFromPrimitive)] -pub enum HandInstruction { - PullLever = 0, -} - -#[repr(C)] -#[derive(Clone, Copy, Debug, Pod, Zeroable)] -pub struct PullLever { - pub name: [u8; 32], -} - -instruction!(HandInstruction, PullLever); diff --git a/basics/cross-program-invocation/steel/hand/api/src/lib.rs b/basics/cross-program-invocation/steel/hand/api/src/lib.rs deleted file mode 100644 index ac968003f..000000000 --- a/basics/cross-program-invocation/steel/hand/api/src/lib.rs +++ /dev/null @@ -1,12 +0,0 @@ -pub mod instruction; -pub mod sdk; - -pub mod prelude { - pub use crate::instruction::*; - pub use crate::sdk::*; -} - -use steel::*; - -// TODO Set program id -declare_id!("Bi5N7SUQhpGknVcqPTzdFFVueQoxoUu8YTLz75J6fT8A"); diff --git a/basics/cross-program-invocation/steel/hand/api/src/sdk.rs b/basics/cross-program-invocation/steel/hand/api/src/sdk.rs deleted file mode 100644 index dd0bd361e..000000000 --- a/basics/cross-program-invocation/steel/hand/api/src/sdk.rs +++ /dev/null @@ -1,20 +0,0 @@ -use lever_api::prelude::*; -use steel::*; - -use crate::prelude::*; - -pub fn pull_lever(power_account: Pubkey, name: &str) -> Instruction { - // pub fn pull_lever(power_account: Pubkey, lever_program: Pubkey, name: &str) -> Instruction { - Instruction { - program_id: crate::ID, - accounts: vec![ - AccountMeta::new(power_account, false), - // AccountMeta::new(lever_program, false), - AccountMeta::new_readonly(lever_api::ID, false), - ], - data: PullLever { - name: str_to_bytes(name), - } - .to_bytes(), - } -} diff --git a/basics/cross-program-invocation/steel/hand/program/Cargo.toml b/basics/cross-program-invocation/steel/hand/program/Cargo.toml deleted file mode 100644 index 957f017d3..000000000 --- a/basics/cross-program-invocation/steel/hand/program/Cargo.toml +++ /dev/null @@ -1,28 +0,0 @@ -[package] -name = "hand-program" -description = "" -version.workspace = true -edition.workspace = true -license.workspace = true -homepage.workspace = true -documentation.workspace = true -repository.workspace = true -readme.workspace = true -keywords.workspace = true - -[lib] -crate-type = ["cdylib", "lib"] - -[dependencies] -hand-api.workspace = true -lever-api.workspace = true -lever-program.workspace = true -solana-program.workspace = true -steel.workspace = true - -[dev-dependencies] -base64 = "0.21" -rand = "0.8.5" -solana-program-test = "1.18" -solana-sdk = "1.18" -tokio = { version = "1.35", features = ["full"] } diff --git a/basics/cross-program-invocation/steel/hand/program/src/lib.rs b/basics/cross-program-invocation/steel/hand/program/src/lib.rs deleted file mode 100644 index 7251912e2..000000000 --- a/basics/cross-program-invocation/steel/hand/program/src/lib.rs +++ /dev/null @@ -1,22 +0,0 @@ -mod pull_lever; - -use pull_lever::*; - -use hand_api::prelude::*; -use steel::*; - -pub fn process_instruction( - program_id: &Pubkey, - accounts: &[AccountInfo], - data: &[u8], -) -> ProgramResult { - let (ix, data) = parse_instruction(&hand_api::ID, program_id, data)?; - - match ix { - HandInstruction::PullLever => process_pull_lever(accounts, data)?, - } - - Ok(()) -} - -entrypoint!(process_instruction); diff --git a/basics/cross-program-invocation/steel/hand/program/src/pull_lever.rs b/basics/cross-program-invocation/steel/hand/program/src/pull_lever.rs deleted file mode 100644 index 2668f2d6e..000000000 --- a/basics/cross-program-invocation/steel/hand/program/src/pull_lever.rs +++ /dev/null @@ -1,22 +0,0 @@ -use hand_api::prelude::*; -use lever_api::prelude::*; -use steel::*; - -pub fn process_pull_lever(accounts: &[AccountInfo<'_>], data: &[u8]) -> ProgramResult { - // Parse args. - let args = PullLever::try_from_bytes(data)?; - let name = bytes_to_str(&args.name); - - // Load accounts. - let [power_info, lever_program] = accounts else { - return Err(ProgramError::NotEnoughAccountKeys); - }; - - power_info.is_writable()?; - - let ix = switch_power(*power_info.key, &name); - - solana_program::program::invoke(&ix, &[power_info.clone(), lever_program.clone()])?; - - Ok(()) -} diff --git a/basics/cross-program-invocation/steel/hand/program/tests/test.rs b/basics/cross-program-invocation/steel/hand/program/tests/test.rs deleted file mode 100644 index fc6b34d4e..000000000 --- a/basics/cross-program-invocation/steel/hand/program/tests/test.rs +++ /dev/null @@ -1,51 +0,0 @@ -use hand_api::prelude::*; -use lever_api::prelude::*; -use solana_program::hash::Hash; -use solana_program_test::{processor, BanksClient, ProgramTest}; -use solana_sdk::{signature::Keypair, signer::Signer, transaction::Transaction}; - -async fn setup() -> (BanksClient, Keypair, Hash) { - let mut program_test = ProgramTest::new( - "hand_program", - hand_api::ID, - processor!(hand_program::process_instruction), - ); - - program_test.add_program( - "lever_program", - lever_api::ID, - processor!(lever_program::process_instruction), - ); - - program_test.prefer_bpf(true); - program_test.start().await -} - -#[tokio::test] -async fn run_test() { - // Setup test - let (mut banks, payer, blockhash) = setup().await; - let power_account = Keypair::new(); - - // Submit initialize transaction. - let ix = initialize(payer.pubkey(), power_account.pubkey()); - let tx = Transaction::new_signed_with_payer( - &[ix], - Some(&payer.pubkey()), - &[&payer, &power_account], - blockhash, - ); - let res = banks.process_transaction(tx).await; - assert!(res.is_ok()); - - // Submit pull_lever transaction. - let ix = pull_lever(power_account.pubkey(), "Chris"); - let tx = Transaction::new_signed_with_payer(&[ix], Some(&payer.pubkey()), &[&payer], blockhash); - let res = banks.process_transaction(tx).await; - assert!(res.is_ok()); - - let ix = pull_lever(power_account.pubkey(), "Ashley"); - let tx = Transaction::new_signed_with_payer(&[ix], Some(&payer.pubkey()), &[&payer], blockhash); - let res = banks.process_transaction(tx).await; - assert!(res.is_ok()); -} diff --git a/basics/cross-program-invocation/steel/lever/.gitignore b/basics/cross-program-invocation/steel/lever/.gitignore deleted file mode 100644 index 052739dbc..000000000 --- a/basics/cross-program-invocation/steel/lever/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -target -test-ledger diff --git a/basics/cross-program-invocation/steel/lever/Cargo.toml b/basics/cross-program-invocation/steel/lever/Cargo.toml deleted file mode 100644 index d3ec86678..000000000 --- a/basics/cross-program-invocation/steel/lever/Cargo.toml +++ /dev/null @@ -1,21 +0,0 @@ -[workspace] -resolver = "2" -members = ["api", "program"] - -[workspace.package] -version = "0.1.0" -edition = "2021" -license = "Apache-2.0" -homepage = "" -documentation = "" -repository = "" -readme = "./README.md" -keywords = ["solana"] - -[workspace.dependencies] -lever-api = { path = "./api", version = "0.1.0" } -bytemuck = "1.14" -num_enum = "0.7" -solana-program = "2.1" -steel = "3.0" -thiserror = "1.0" diff --git a/basics/cross-program-invocation/steel/lever/README.md b/basics/cross-program-invocation/steel/lever/README.md deleted file mode 100644 index 4b01b5852..000000000 --- a/basics/cross-program-invocation/steel/lever/README.md +++ /dev/null @@ -1,28 +0,0 @@ -# Lever - -**Lever** is a ... - -## API -- [`Consts`](api/src/consts.rs) – Program constants. -- [`Error`](api/src/error.rs) – Custom program errors. -- [`Event`](api/src/event.rs) – Custom program events. -- [`Instruction`](api/src/instruction.rs) – Declared instructions. - -## Instructions -- [`SwitchPower`](program/src/switch_power.rs) – Switch Power ... -- [`Initialize`](program/src/initialize.rs) – Initialize ... - -## State -- [`PowerStatus`](api/src/state/power_status.rs) – Power status ... - -## Get started - -Compile your program: -```sh -steel build -``` - -Run unit and integration tests: -```sh -steel test -``` diff --git a/basics/cross-program-invocation/steel/lever/api/Cargo.toml b/basics/cross-program-invocation/steel/lever/api/Cargo.toml deleted file mode 100644 index 159b3dedf..000000000 --- a/basics/cross-program-invocation/steel/lever/api/Cargo.toml +++ /dev/null @@ -1,18 +0,0 @@ -[package] -name = "lever-api" -description = "API for interacting with the Lever program" -version.workspace = true -edition.workspace = true -license.workspace = true -homepage.workspace = true -documentation.workspace = true -repository.workspace = true -readme.workspace = true -keywords.workspace = true - -[dependencies] -bytemuck.workspace = true -num_enum.workspace = true -solana-program.workspace = true -steel.workspace = true -thiserror.workspace = true diff --git a/basics/cross-program-invocation/steel/lever/api/src/consts.rs b/basics/cross-program-invocation/steel/lever/api/src/consts.rs deleted file mode 100644 index af20c1a11..000000000 --- a/basics/cross-program-invocation/steel/lever/api/src/consts.rs +++ /dev/null @@ -1,2 +0,0 @@ -/// Seed of the counter account PDA. -pub const COUNTER: &[u8] = b"counter"; diff --git a/basics/cross-program-invocation/steel/lever/api/src/error.rs b/basics/cross-program-invocation/steel/lever/api/src/error.rs deleted file mode 100644 index a6b46c777..000000000 --- a/basics/cross-program-invocation/steel/lever/api/src/error.rs +++ /dev/null @@ -1,10 +0,0 @@ -use steel::*; - -#[derive(Debug, Error, Clone, Copy, PartialEq, Eq, IntoPrimitive)] -#[repr(u32)] -pub enum LeverError { - #[error("This is a dummy error")] - Dummy = 0, -} - -error!(LeverError); diff --git a/basics/cross-program-invocation/steel/lever/api/src/instruction.rs b/basics/cross-program-invocation/steel/lever/api/src/instruction.rs deleted file mode 100644 index 45bd9dad3..000000000 --- a/basics/cross-program-invocation/steel/lever/api/src/instruction.rs +++ /dev/null @@ -1,21 +0,0 @@ -use steel::*; - -#[repr(u8)] -#[derive(Clone, Copy, Debug, Eq, PartialEq, TryFromPrimitive)] -pub enum LeverInstruction { - Initialize = 0, - SetPowerStatus = 1, -} - -#[repr(C)] -#[derive(Clone, Copy, Debug, Pod, Zeroable)] -pub struct Initialize {} - -#[repr(C)] -#[derive(Clone, Copy, Debug, Pod, Zeroable)] -pub struct SetPowerStatus { - pub name: [u8; 32], -} - -instruction!(LeverInstruction, Initialize); -instruction!(LeverInstruction, SetPowerStatus); diff --git a/basics/cross-program-invocation/steel/lever/api/src/lib.rs b/basics/cross-program-invocation/steel/lever/api/src/lib.rs deleted file mode 100644 index 1974d1b96..000000000 --- a/basics/cross-program-invocation/steel/lever/api/src/lib.rs +++ /dev/null @@ -1,20 +0,0 @@ -pub mod consts; -pub mod error; -pub mod instruction; -pub mod sdk; -pub mod state; -pub mod utils; - -pub mod prelude { - pub use crate::consts::*; - pub use crate::error::*; - pub use crate::instruction::*; - pub use crate::sdk::*; - pub use crate::state::*; - pub use crate::utils::*; -} - -use steel::*; - -// TODO Set program id -declare_id!("E64FVeubGC4NPNF2UBJYX4AkrVowf74fRJD9q6YhwstN"); diff --git a/basics/cross-program-invocation/steel/lever/api/src/sdk.rs b/basics/cross-program-invocation/steel/lever/api/src/sdk.rs deleted file mode 100644 index ce5ab8fb3..000000000 --- a/basics/cross-program-invocation/steel/lever/api/src/sdk.rs +++ /dev/null @@ -1,26 +0,0 @@ -use steel::*; - -use crate::prelude::*; - -pub fn initialize(user: Pubkey, power_account: Pubkey) -> Instruction { - Instruction { - program_id: crate::ID, - accounts: vec![ - AccountMeta::new(user, true), - AccountMeta::new(power_account, true), - AccountMeta::new_readonly(system_program::ID, false), - ], - data: Initialize {}.to_bytes(), - } -} - -pub fn switch_power(power_account: Pubkey, name: &str) -> Instruction { - Instruction { - program_id: crate::ID, - accounts: vec![AccountMeta::new(power_account, false)], - data: SetPowerStatus { - name: str_to_bytes(name), - } - .to_bytes(), - } -} diff --git a/basics/cross-program-invocation/steel/lever/api/src/state/mod.rs b/basics/cross-program-invocation/steel/lever/api/src/state/mod.rs deleted file mode 100644 index ae4d12439..000000000 --- a/basics/cross-program-invocation/steel/lever/api/src/state/mod.rs +++ /dev/null @@ -1,16 +0,0 @@ -mod power_status; - -pub use power_status::*; - -use steel::*; - -#[repr(u8)] -#[derive(Clone, Copy, Debug, Eq, PartialEq, IntoPrimitive, TryFromPrimitive)] -pub enum LeverAccount { - PowerStatus = 0, -} - -// /// Fetch PDA of the counter account. -// pub fn counter_pda() -> (Pubkey, u8) { -// Pubkey::find_program_address(&[COUNTER], &crate::id()) -// } diff --git a/basics/cross-program-invocation/steel/lever/api/src/state/power_status.rs b/basics/cross-program-invocation/steel/lever/api/src/state/power_status.rs deleted file mode 100644 index b30fc5c69..000000000 --- a/basics/cross-program-invocation/steel/lever/api/src/state/power_status.rs +++ /dev/null @@ -1,11 +0,0 @@ -use steel::*; - -use super::LeverAccount; - -#[repr(C)] -#[derive(Clone, Copy, Debug, PartialEq, Pod, Zeroable)] -pub struct PowerStatus { - pub is_on: u8, -} - -account!(LeverAccount, PowerStatus); diff --git a/basics/cross-program-invocation/steel/lever/api/src/utils.rs b/basics/cross-program-invocation/steel/lever/api/src/utils.rs deleted file mode 100644 index d39d4b0a8..000000000 --- a/basics/cross-program-invocation/steel/lever/api/src/utils.rs +++ /dev/null @@ -1,13 +0,0 @@ -pub fn str_to_bytes(name: &str) -> [u8; 32] { - let mut name_bytes = [0u8; 32]; - name_bytes[..name.len()].copy_from_slice(name.as_bytes()); - name_bytes -} - -pub fn bytes_to_str(bytes: &[u8; 32]) -> String { - // Find the first occurrence of 0 (null terminator) or take all bytes if no null found - let length = bytes.iter().position(|&x| x == 0).unwrap_or(bytes.len()); - - // Convert the slice up to the null terminator (or full length) to a string - String::from_utf8_lossy(&bytes[..length]).into_owned() -} diff --git a/basics/cross-program-invocation/steel/lever/program/Cargo.toml b/basics/cross-program-invocation/steel/lever/program/Cargo.toml deleted file mode 100644 index 08fdfd845..000000000 --- a/basics/cross-program-invocation/steel/lever/program/Cargo.toml +++ /dev/null @@ -1,30 +0,0 @@ -[package] -name = "lever-program" -description = "" -version.workspace = true -edition.workspace = true -license.workspace = true -homepage.workspace = true -documentation.workspace = true -repository.workspace = true -readme.workspace = true -keywords.workspace = true - -[lib] -crate-type = ["cdylib", "lib"] - -[features] -no-entrypoint = [] -cpi = ["no-entrypoint"] - -[dependencies] -lever-api.workspace = true -solana-program.workspace = true -steel.workspace = true - -[dev-dependencies] -base64 = "0.21" -rand = "0.8.5" -solana-program-test = "1.18" -solana-sdk = "1.18" -tokio = { version = "1.35", features = ["full"] } diff --git a/basics/cross-program-invocation/steel/lever/program/src/initialize.rs b/basics/cross-program-invocation/steel/lever/program/src/initialize.rs deleted file mode 100644 index 76f4874df..000000000 --- a/basics/cross-program-invocation/steel/lever/program/src/initialize.rs +++ /dev/null @@ -1,17 +0,0 @@ -use lever_api::prelude::*; -use steel::*; - -pub fn process_initialize(accounts: &[AccountInfo<'_>], _data: &[u8]) -> ProgramResult { - // Load accounts. - let [signer_info, power_info, system_program] = accounts else { - return Err(ProgramError::NotEnoughAccountKeys); - }; - signer_info.is_signer()?; - power_info.is_empty()?.is_writable()?; - system_program.is_program(&system_program::ID)?; - - // Initialize power. - create_account::(power_info, system_program, signer_info, &lever_api::ID, &[])?; - - Ok(()) -} diff --git a/basics/cross-program-invocation/steel/lever/program/src/lib.rs b/basics/cross-program-invocation/steel/lever/program/src/lib.rs deleted file mode 100644 index 0aa3ab168..000000000 --- a/basics/cross-program-invocation/steel/lever/program/src/lib.rs +++ /dev/null @@ -1,25 +0,0 @@ -mod initialize; -mod switch_power; - -use initialize::*; -use switch_power::*; - -use lever_api::prelude::*; -use steel::*; - -pub fn process_instruction( - program_id: &Pubkey, - accounts: &[AccountInfo], - data: &[u8], -) -> ProgramResult { - let (ix, data) = parse_instruction(&lever_api::ID, program_id, data)?; - - match ix { - LeverInstruction::Initialize => process_initialize(accounts, data)?, - LeverInstruction::SetPowerStatus => process_switch_power(accounts, data)?, - } - - Ok(()) -} - -entrypoint!(process_instruction); diff --git a/basics/cross-program-invocation/steel/lever/program/src/switch_power.rs b/basics/cross-program-invocation/steel/lever/program/src/switch_power.rs deleted file mode 100644 index d3f1869f9..000000000 --- a/basics/cross-program-invocation/steel/lever/program/src/switch_power.rs +++ /dev/null @@ -1,36 +0,0 @@ -use lever_api::prelude::*; -use solana_program::msg; -use steel::*; - -pub fn process_switch_power(accounts: &[AccountInfo<'_>], data: &[u8]) -> ProgramResult { - // Parse args. - let args = SetPowerStatus::try_from_bytes(data)?; - let name = bytes_to_str(&args.name); - - // Load accounts. - let [power_info] = accounts else { - return Err(ProgramError::NotEnoughAccountKeys); - }; - - power_info.is_writable()?; - - let power = power_info - .as_account_mut::(&lever_api::ID)? - .assert_mut(|c| c.is_on <= 1)?; - - match power.is_on { - 0 => power.is_on = 1, - 1 => power.is_on = 0, - _ => panic!("Invalid boolean value"), - } - - msg!("{} is pulling the power switch!", &name); - - match power.is_on { - 1 => msg!("The power is now on."), - 0 => msg!("The power is now off!"), - _ => panic!("Invalid boolean value"), - }; - - Ok(()) -} diff --git a/basics/cross-program-invocation/steel/lever/program/tests/test.rs b/basics/cross-program-invocation/steel/lever/program/tests/test.rs deleted file mode 100644 index 2756b2644..000000000 --- a/basics/cross-program-invocation/steel/lever/program/tests/test.rs +++ /dev/null @@ -1,52 +0,0 @@ -use lever_api::prelude::*; -use solana_program::hash::Hash; -use solana_program_test::{processor, BanksClient, ProgramTest}; -use solana_sdk::{signature::Keypair, signer::Signer, transaction::Transaction}; -use steel::*; - -async fn setup() -> (BanksClient, Keypair, Hash) { - let mut program_test = ProgramTest::new( - "lever_program", - lever_api::ID, - processor!(lever_program::process_instruction), - ); - program_test.prefer_bpf(true); - program_test.start().await -} - -#[tokio::test] -async fn run_test() { - let (mut banks, payer, blockhash) = setup().await; - - let power_account = Keypair::new(); - - // Submit initialize transaction. - let ix = initialize(payer.pubkey(), power_account.pubkey()); - let tx = Transaction::new_signed_with_payer( - &[ix], - Some(&payer.pubkey()), - &[&payer, &power_account], - blockhash, - ); - let res = banks.process_transaction(tx).await; - assert!(res.is_ok()); - - // Verify power account was initialized. - let power_address = power_account.pubkey(); - let power_account = banks.get_account(power_address).await.unwrap().unwrap(); - let power_status = PowerStatus::try_from_bytes(&power_account.data).unwrap(); - assert_eq!(power_account.owner, lever_api::ID); - assert_eq!(power_status.is_on, 0); - - // Submit switch_power transaction. - let ix = switch_power(power_address, "Chris"); - let tx = Transaction::new_signed_with_payer(&[ix], Some(&payer.pubkey()), &[&payer], blockhash); - let res = banks.process_transaction(tx).await; - assert!(res.is_ok()); - - // // Verify power_status was changed. - let power_account = banks.get_account(power_address).await.unwrap().unwrap(); - let power_status = PowerStatus::try_from_bytes(&power_account.data).unwrap(); - assert_eq!(power_account.owner, lever_api::ID); - assert_eq!(power_status.is_on, 1); -} diff --git a/basics/favorites/steel/.gitignore b/basics/favorites/steel/.gitignore deleted file mode 100644 index 052739dbc..000000000 --- a/basics/favorites/steel/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -target -test-ledger diff --git a/basics/favorites/steel/Cargo.toml b/basics/favorites/steel/Cargo.toml deleted file mode 100644 index 2c00a539a..000000000 --- a/basics/favorites/steel/Cargo.toml +++ /dev/null @@ -1,21 +0,0 @@ -[workspace] -resolver = "2" -members = ["api", "program"] - -[workspace.package] -version = "0.1.0" -edition = "2021" -license = "Apache-2.0" -homepage = "" -documentation = "" -respository = "" -readme = "./README.md" -keywords = ["solana"] - -[workspace.dependencies] -steel-api = { path = "./api", version = "0.1.0" } -bytemuck = "1.14" -num_enum = "0.7" -solana-program = "2.1" -steel = "3.0" -thiserror = "1.0" diff --git a/basics/favorites/steel/README.md b/basics/favorites/steel/README.md deleted file mode 100644 index 4f4fe2a54..000000000 --- a/basics/favorites/steel/README.md +++ /dev/null @@ -1,22 +0,0 @@ -# Steel - -**Steel** is a ... - -## API -- [`Consts`](api/src/consts.rs) – Program constants. -- [`Error`](api/src/error.rs) – Custom program errors. -- [`Event`](api/src/event.rs) – Custom program events. -- [`Instruction`](api/src/instruction.rs) – Declared instructions. - -## Instructions -- [`Hello`](program/src/hello.rs) – Hello ... - -## State -- [`User`](api/src/state/user.rs) – User ... - -## Tests - -To run the test suit, use the Solana toolchain: -``` -cargo test-sbf -``` diff --git a/basics/favorites/steel/api/Cargo.toml b/basics/favorites/steel/api/Cargo.toml deleted file mode 100644 index 34b563782..000000000 --- a/basics/favorites/steel/api/Cargo.toml +++ /dev/null @@ -1,11 +0,0 @@ -[package] -name = "steel-api" -version = "0.1.0" -edition = "2021" - -[dependencies] -bytemuck.workspace = true -num_enum.workspace = true -solana-program.workspace = true -steel.workspace = true -thiserror.workspace = true diff --git a/basics/favorites/steel/api/src/consts.rs b/basics/favorites/steel/api/src/consts.rs deleted file mode 100644 index c263203b1..000000000 --- a/basics/favorites/steel/api/src/consts.rs +++ /dev/null @@ -1,2 +0,0 @@ -/// Seed of the favorites account PDA. -pub const FAVORITES: &[u8] = b"favorites"; diff --git a/basics/favorites/steel/api/src/error.rs b/basics/favorites/steel/api/src/error.rs deleted file mode 100644 index 96e84da4d..000000000 --- a/basics/favorites/steel/api/src/error.rs +++ /dev/null @@ -1,10 +0,0 @@ -use steel::*; - -#[derive(Debug, Error, Clone, Copy, PartialEq, Eq, IntoPrimitive)] -#[repr(u32)] -pub enum SteelError { - #[error("This is a dummy error")] - Dummy = 0, -} - -error!(SteelError); diff --git a/basics/favorites/steel/api/src/instruction.rs b/basics/favorites/steel/api/src/instruction.rs deleted file mode 100644 index 539638583..000000000 --- a/basics/favorites/steel/api/src/instruction.rs +++ /dev/null @@ -1,19 +0,0 @@ -use steel::*; - -#[repr(u8)] -#[derive(Clone, Copy, Debug, Eq, PartialEq, TryFromPrimitive)] -pub enum SteelInstruction { - SetFavorites = 0, -} - -#[repr(C)] -#[derive(Clone, Copy, Debug, Pod, Zeroable)] -pub struct SetFavorites { - pub number: [u8; 8], - - pub color: [u8; 32], - - pub hobbies: [[u8; 32]; 3], -} - -instruction!(SteelInstruction, SetFavorites); diff --git a/basics/favorites/steel/api/src/lib.rs b/basics/favorites/steel/api/src/lib.rs deleted file mode 100644 index 76867dc34..000000000 --- a/basics/favorites/steel/api/src/lib.rs +++ /dev/null @@ -1,20 +0,0 @@ -pub mod consts; -pub mod error; -pub mod instruction; -pub mod sdk; -pub mod state; -pub mod utils; - -pub mod prelude { - pub use crate::consts::*; - pub use crate::error::*; - pub use crate::instruction::*; - pub use crate::sdk::*; - pub use crate::state::*; - pub use crate::utils::*; -} - -use steel::*; - -// TODO Set program id -declare_id!("z7msBPQHDJjTvdQRoEcKyENgXDhSRYeHieN1ZMTqo35"); diff --git a/basics/favorites/steel/api/src/sdk.rs b/basics/favorites/steel/api/src/sdk.rs deleted file mode 100644 index 6f5d875bd..000000000 --- a/basics/favorites/steel/api/src/sdk.rs +++ /dev/null @@ -1,24 +0,0 @@ -use steel::*; - -use crate::prelude::*; - -pub fn set_favorites(signer: Pubkey, number: u64, color: &str, hobbies: Vec<&str>) -> Instruction { - let color_bytes: [u8; 32] = string_to_bytes32_padded(color).unwrap(); - - let hobbies_bytes = strings_to_bytes32_array_padded(hobbies).unwrap(); - - Instruction { - program_id: crate::ID, - accounts: vec![ - AccountMeta::new(signer, true), - AccountMeta::new(favorites_pda().0, false), - AccountMeta::new_readonly(system_program::ID, false), - ], - data: SetFavorites { - number: number.to_le_bytes(), - color: color_bytes, - hobbies: hobbies_bytes, - } - .to_bytes(), - } -} diff --git a/basics/favorites/steel/api/src/state/favorites.rs b/basics/favorites/steel/api/src/state/favorites.rs deleted file mode 100644 index 6f912c586..000000000 --- a/basics/favorites/steel/api/src/state/favorites.rs +++ /dev/null @@ -1,15 +0,0 @@ -use steel::*; - -use super::SteelAccount; - -#[repr(C)] -#[derive(Clone, Copy, Debug, PartialEq, Pod, Zeroable)] -pub struct Favorites { - pub number: u64, - - pub color: [u8; 32], - - pub hobbies: [[u8; 32]; 3], -} - -account!(SteelAccount, Favorites); diff --git a/basics/favorites/steel/api/src/state/mod.rs b/basics/favorites/steel/api/src/state/mod.rs deleted file mode 100644 index 72eb8dd98..000000000 --- a/basics/favorites/steel/api/src/state/mod.rs +++ /dev/null @@ -1,18 +0,0 @@ -mod favorites; - -pub use favorites::*; - -use steel::*; - -use crate::consts::*; - -#[repr(u8)] -#[derive(Clone, Copy, Debug, Eq, PartialEq, IntoPrimitive, TryFromPrimitive)] -pub enum SteelAccount { - Favorites = 0, -} - -/// Fetch PDA of the favorites account. -pub fn favorites_pda() -> (Pubkey, u8) { - Pubkey::find_program_address(&[FAVORITES], &crate::id()) -} diff --git a/basics/favorites/steel/api/src/utils.rs b/basics/favorites/steel/api/src/utils.rs deleted file mode 100644 index a590bf2f9..000000000 --- a/basics/favorites/steel/api/src/utils.rs +++ /dev/null @@ -1,85 +0,0 @@ -use std::error::Error; -use std::fmt; - -#[derive(Debug)] -pub enum ConversionError { - StringTooLong(usize), - StringTooShort(usize), - VecLengthMismatch { expected: usize, actual: usize }, - InvalidUtf8, -} - -impl fmt::Display for ConversionError { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - match self { - ConversionError::StringTooLong(len) => { - write!(f, "String length {} exceeds 32 bytes", len) - } - ConversionError::StringTooShort(len) => { - write!(f, "String length {} is less than 32 bytes", len) - } - ConversionError::VecLengthMismatch { expected, actual } => { - write!( - f, - "Vector length mismatch: expected {}, got {}", - expected, actual - ) - } - ConversionError::InvalidUtf8 => write!(f, "Invalid UTF-8 sequence in bytes"), - } - } -} - -impl Error for ConversionError {} - -// Convert string to bytes with padding -pub fn string_to_bytes32_padded(input: &str) -> Result<[u8; 32], ConversionError> { - let bytes = input.as_bytes(); - let len = bytes.len(); - - if len > 32 { - return Err(ConversionError::StringTooLong(len)); - } - - let mut result = [0u8; 32]; - result[..len].copy_from_slice(bytes); - Ok(result) -} - -// Convert bytes back to string, trimming trailing zeros -pub fn bytes32_to_string(bytes: &[u8; 32]) -> Result { - // Find the actual length by looking for the first zero or taking full length - let actual_len = bytes.iter().position(|&b| b == 0).unwrap_or(32); - - // Convert the slice up to actual_len to a string - String::from_utf8(bytes[..actual_len].to_vec()).map_err(|_| ConversionError::InvalidUtf8) -} - -// Convert vec of strings to byte arrays with padding -pub fn strings_to_bytes32_array_padded( - inputs: Vec<&str>, -) -> Result<[[u8; 32]; N], ConversionError> { - if inputs.len() != N { - return Err(ConversionError::VecLengthMismatch { - expected: N, - actual: inputs.len(), - }); - } - - let mut result = [[0u8; 32]; N]; - for (i, input) in inputs.iter().enumerate() { - result[i] = string_to_bytes32_padded(input)?; - } - Ok(result) -} - -// Convert array of byte arrays back to vec of strings -pub fn bytes32_array_to_strings( - bytes_array: &[[u8; 32]; N], -) -> Result, ConversionError> { - let mut result = Vec::with_capacity(N); - for bytes in bytes_array.iter() { - result.push(bytes32_to_string(bytes)?); - } - Ok(result) -} diff --git a/basics/favorites/steel/program/Cargo.toml b/basics/favorites/steel/program/Cargo.toml deleted file mode 100644 index db99b68cc..000000000 --- a/basics/favorites/steel/program/Cargo.toml +++ /dev/null @@ -1,19 +0,0 @@ -[package] -name = "steel-program" -version = "0.1.0" -edition = "2021" - -[lib] -crate-type = ["cdylib", "lib"] - -[dependencies] -steel-api.workspace = true -solana-program.workspace = true -steel.workspace = true - -[dev-dependencies] -base64 = "0.21" -rand = "0.8.5" -solana-program-test = "1.18" -solana-sdk = "1.18" -tokio = { version = "1.35", features = ["full"] } diff --git a/basics/favorites/steel/program/src/lib.rs b/basics/favorites/steel/program/src/lib.rs deleted file mode 100644 index a6b8cd616..000000000 --- a/basics/favorites/steel/program/src/lib.rs +++ /dev/null @@ -1,22 +0,0 @@ -mod set_favorites; - -pub use set_favorites::*; - -use steel::*; -use steel_api::prelude::*; - -pub fn process_instruction( - program_id: &Pubkey, - accounts: &[AccountInfo], - data: &[u8], -) -> ProgramResult { - let (ix, data) = parse_instruction(&steel_api::ID, program_id, data)?; - - match ix { - SteelInstruction::SetFavorites => process_set_favorites(accounts, data)?, - } - - Ok(()) -} - -entrypoint!(process_instruction); diff --git a/basics/favorites/steel/program/src/set_favorites.rs b/basics/favorites/steel/program/src/set_favorites.rs deleted file mode 100644 index cc86aef40..000000000 --- a/basics/favorites/steel/program/src/set_favorites.rs +++ /dev/null @@ -1,49 +0,0 @@ -use solana_program::msg; -use steel::*; -use steel_api::prelude::*; - -pub fn process_set_favorites(accounts: &[AccountInfo<'_>], data: &[u8]) -> ProgramResult { - // Parse args. - let args = SetFavorites::try_from_bytes(data)?; - let number = u64::from_le_bytes(args.number); - let color = bytes32_to_string(&args.color).unwrap(); - let hobbies = bytes32_array_to_strings(&args.hobbies).unwrap(); - - // Get expected pda bump. - let favorites_bump = favorites_pda().1; - - // Load accounts. - let [user_info, favorites_info, system_program] = accounts else { - return Err(ProgramError::NotEnoughAccountKeys); - }; - user_info.is_signer()?; - favorites_info.is_empty()?.is_writable()?.has_seeds( - &[FAVORITES], - favorites_bump, - &steel_api::ID, - )?; - system_program.is_program(&system_program::ID)?; - - // Initialize favorites. - create_account::( - favorites_info, - &steel_api::ID, - &[FAVORITES, &[favorites_bump]], - system_program, - user_info, - )?; - - msg!("Greetings from {}", &steel_api::ID); - let user_public_key = user_info.key; - - msg!( - "User {user_public_key}'s favorite number is {number}, favorite color is: {color}, and their hobbies are {hobbies:?}", - ); - - let favorites = favorites_info.to_account_mut::(&steel_api::ID)?; - favorites.number = number; - favorites.color = args.color; - favorites.hobbies = args.hobbies; - - Ok(()) -} diff --git a/basics/favorites/steel/program/src/utils.rs b/basics/favorites/steel/program/src/utils.rs deleted file mode 100644 index 2af1c9fd1..000000000 --- a/basics/favorites/steel/program/src/utils.rs +++ /dev/null @@ -1,137 +0,0 @@ -use std::error::Error; -use std::fmt; - -#[derive(Debug)] -pub enum ConversionError { - StringTooLong(usize), - StringTooShort(usize), - VecLengthMismatch { expected: usize, actual: usize }, - InvalidUtf8, -} - -impl fmt::Display for ConversionError { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - match self { - ConversionError::StringTooLong(len) => { - write!(f, "String length {} exceeds 32 bytes", len) - } - ConversionError::StringTooShort(len) => { - write!(f, "String length {} is less than 32 bytes", len) - } - ConversionError::VecLengthMismatch { expected, actual } => { - write!( - f, - "Vector length mismatch: expected {}, got {}", - expected, actual - ) - } - ConversionError::InvalidUtf8 => write!(f, "Invalid UTF-8 sequence in bytes"), - } - } -} - -impl Error for ConversionError {} - -// Convert string to bytes with padding -pub fn string_to_bytes32_padded(input: &str) -> Result<[u8; 32], ConversionError> { - let bytes = input.as_bytes(); - let len = bytes.len(); - - if len > 32 { - return Err(ConversionError::StringTooLong(len)); - } - - let mut result = [0u8; 32]; - result[..len].copy_from_slice(bytes); - Ok(result) -} - -// NEW: Convert bytes back to string, trimming trailing zeros -pub fn bytes32_to_string(bytes: &[u8; 32]) -> Result { - // Find the actual length by looking for the first zero or taking full length - let actual_len = bytes.iter().position(|&b| b == 0).unwrap_or(32); - - // Convert the slice up to actual_len to a string - String::from_utf8(bytes[..actual_len].to_vec()).map_err(|_| ConversionError::InvalidUtf8) -} - -// Convert vec of strings to byte arrays with padding -pub fn strings_to_bytes32_array_padded( - inputs: Vec<&str>, -) -> Result<[[u8; 32]; N], ConversionError> { - if inputs.len() != N { - return Err(ConversionError::VecLengthMismatch { - expected: N, - actual: inputs.len(), - }); - } - - let mut result = [[0u8; 32]; N]; - for (i, input) in inputs.iter().enumerate() { - result[i] = string_to_bytes32_padded(input)?; - } - Ok(result) -} - -// NEW: Convert array of byte arrays back to vec of strings -pub fn bytes32_array_to_strings( - bytes_array: &[[u8; 32]; N], -) -> Result, ConversionError> { - let mut result = Vec::with_capacity(N); - for bytes in bytes_array.iter() { - result.push(bytes32_to_string(bytes)?); - } - Ok(result) -} - -// // Convert string to bytes with padding -// pub fn string_to_bytes32_padded(input: &str) -> Result<[u8; 32], ConversionError> { -// let bytes = input.as_bytes(); -// let len = bytes.len(); - -// if len > 32 { -// return Err(ConversionError::StringTooLong(len)); -// } - -// let mut result = [0u8; 32]; -// result[..len].copy_from_slice(bytes); -// Ok(result) -// } - -// // NEW: Convert bytes back to string, trimming trailing zeros -// pub fn bytes32_to_string(bytes: &[u8; 32]) -> Result { -// // Find the actual length by looking for the first zero or taking full length -// let actual_len = bytes.iter().position(|&b| b == 0).unwrap_or(32); - -// // Convert the slice up to actual_len to a string -// String::from_utf8(bytes[..actual_len].to_vec()).map_err(|_| ConversionError::InvalidUtf8) -// } - -// // Convert vec of strings to byte arrays with padding -// pub fn strings_to_bytes32_array_padded( -// inputs: Vec<&str>, -// ) -> Result<[[u8; 32]; N], ConversionError> { -// if inputs.len() != N { -// return Err(ConversionError::VecLengthMismatch { -// expected: N, -// actual: inputs.len(), -// }); -// } - -// let mut result = [[0u8; 32]; N]; -// for (i, input) in inputs.iter().enumerate() { -// result[i] = string_to_bytes32_padded(input)?; -// } -// Ok(result) -// } - -// // NEW: Convert array of byte arrays back to vec of strings -// pub fn bytes32_array_to_strings( -// bytes_array: &[[u8; 32]; N], -// ) -> Result, ConversionError> { -// let mut result = Vec::with_capacity(N); -// for bytes in bytes_array.iter() { -// result.push(bytes32_to_string(bytes)?); -// } -// Ok(result) -// } diff --git a/basics/favorites/steel/program/tests/test.rs b/basics/favorites/steel/program/tests/test.rs deleted file mode 100644 index b501372a6..000000000 --- a/basics/favorites/steel/program/tests/test.rs +++ /dev/null @@ -1,53 +0,0 @@ -use solana_program::hash::Hash; -use solana_program_test::{processor, BanksClient, ProgramTest}; -use solana_sdk::{signature::Keypair, signer::Signer, transaction::Transaction}; -use steel::*; -use steel_api::prelude::*; - -async fn setup() -> (BanksClient, Keypair, Hash) { - let mut program_test = ProgramTest::new( - "steel_program", - steel_api::ID, - processor!(steel_program::process_instruction), - ); - program_test.prefer_bpf(true); - program_test.start().await -} - -#[tokio::test] -async fn run_test() { - // Setup test - let (mut banks, payer, blockhash) = setup().await; - - let favorite_number: u64 = 23; - let favorite_color: &str = "purple"; - let mut favorite_hobbies: Vec<&str> = Vec::new(); - favorite_hobbies.push("skiing"); - favorite_hobbies.push("skydiving"); - favorite_hobbies.push("biking"); - - // Submit set favorites transaction. - let ix = set_favorites( - payer.pubkey(), - favorite_number, - favorite_color, - favorite_hobbies, - ); - let tx = Transaction::new_signed_with_payer(&[ix], Some(&payer.pubkey()), &[&payer], blockhash); - let res = banks.process_transaction(tx).await; - assert!(res.is_ok()); - - // Verify favorites was updated. - let favorites_address = favorites_pda().0; - let favorites_account = banks.get_account(favorites_address).await.unwrap().unwrap(); - let favorites = Favorites::try_from_bytes(&favorites_account.data).unwrap(); - - let favorites_number = favorites.number; - let favorites_color = bytes32_to_string(&favorites.color).unwrap(); - let favorites_hobbies = bytes32_array_to_strings(&favorites.hobbies).unwrap(); - - assert_eq!(favorites_account.owner, steel_api::ID); - assert_eq!(favorites_number, 23); - assert_eq!(favorites_color, "purple"); - assert_eq!(favorites_hobbies[0], "skiing"); -} diff --git a/basics/hello-solana/seahorse/hello_solana/.gitignore b/basics/hello-solana/seahorse/hello_solana/.gitignore deleted file mode 100644 index 9e8cc7d4f..000000000 --- a/basics/hello-solana/seahorse/hello_solana/.gitignore +++ /dev/null @@ -1,7 +0,0 @@ - -../../../../.anchor -.DS_Store -target -**/*.rs.bk -node_modules -test-ledger diff --git a/basics/hello-solana/seahorse/hello_solana/.prettierignore b/basics/hello-solana/seahorse/hello_solana/.prettierignore deleted file mode 100644 index c1a0b75f0..000000000 --- a/basics/hello-solana/seahorse/hello_solana/.prettierignore +++ /dev/null @@ -1,8 +0,0 @@ - -.anchor -.DS_Store -target -node_modules -dist -build -test-ledger diff --git a/basics/hello-solana/seahorse/hello_solana/Anchor.toml b/basics/hello-solana/seahorse/hello_solana/Anchor.toml deleted file mode 100644 index e8a989da5..000000000 --- a/basics/hello-solana/seahorse/hello_solana/Anchor.toml +++ /dev/null @@ -1,14 +0,0 @@ -[features] -seeds = true -[programs.localnet] -hello_solana = "Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS" - -[registry] -url = "https://anchor.projectserum.com" - -[provider] -cluster = "localnet" -wallet = "/home/thefunnyintrovert/.config/solana/id.json" - -[scripts] -test = "pnpm ts-mocha -p ./tsconfig.json -t 1000000 tests/**/*.ts" diff --git a/basics/hello-solana/seahorse/hello_solana/Cargo.toml b/basics/hello-solana/seahorse/hello_solana/Cargo.toml deleted file mode 100644 index 946f3922e..000000000 --- a/basics/hello-solana/seahorse/hello_solana/Cargo.toml +++ /dev/null @@ -1,5 +0,0 @@ -[workspace] -members = [ - "programs/*" -] -resolver = "2" diff --git a/basics/hello-solana/seahorse/hello_solana/README.md b/basics/hello-solana/seahorse/hello_solana/README.md deleted file mode 100644 index 678a3cc05..000000000 --- a/basics/hello-solana/seahorse/hello_solana/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# hello_solana - -This project was created by Seahorse 0.1.5. - -To get started, just add your code to **programs_py/hello_solana.py** and run `seahorse build`. diff --git a/basics/hello-solana/seahorse/hello_solana/migrations/deploy.ts b/basics/hello-solana/seahorse/hello_solana/migrations/deploy.ts deleted file mode 100644 index 64a1c3599..000000000 --- a/basics/hello-solana/seahorse/hello_solana/migrations/deploy.ts +++ /dev/null @@ -1,12 +0,0 @@ -// Migrations are an early feature. Currently, they're nothing more than this -// single deploy script that's invoked from the CLI, injecting a provider -// configured from the workspace's Anchor.toml. - -const anchor = require('@coral-xyz/anchor'); - -module.exports = async (provider) => { - // Configure client to use the provider. - anchor.setProvider(provider); - - // Add your deploy script here. -}; diff --git a/basics/hello-solana/seahorse/hello_solana/package.json b/basics/hello-solana/seahorse/hello_solana/package.json deleted file mode 100644 index 6a11c071b..000000000 --- a/basics/hello-solana/seahorse/hello_solana/package.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "scripts": { - "lint:fix": "prettier */*.js \"*/**/*{.js,.ts}\" -w", - "lint": "prettier */*.js \"*/**/*{.js,.ts}\" --check" - }, - "dependencies": { - "@coral-xyz/anchor": "^0.30.0" - }, - "devDependencies": { - "@types/bn.js": "^5.1.0", - "@types/chai": "^4.3.0", - "@types/mocha": "^9.0.0", - "chai": "^4.3.4", - "mocha": "^9.0.3", - "prettier": "^2.6.2", - "ts-mocha": "^10.0.0", - "typescript": "^4.3.5" - } -} diff --git a/basics/hello-solana/seahorse/hello_solana/programs/hello_solana/Cargo.toml b/basics/hello-solana/seahorse/hello_solana/programs/hello_solana/Cargo.toml deleted file mode 100644 index affa4adf2..000000000 --- a/basics/hello-solana/seahorse/hello_solana/programs/hello_solana/Cargo.toml +++ /dev/null @@ -1,24 +0,0 @@ -[package] -name = "hello_solana" -version = "0.1.0" -description = "Created with Anchor" -edition = "2021" - -[lib] -crate-type = ["cdylib", "lib"] -name = "hello_solana" - -[features] -default = [] -cpi = ["no-entrypoint"] -no-entrypoint = [] -no-idl = [] -no-log-ix-name = [] -idl-build = ["anchor-lang/idl-build"] - -[profile.release] -overflow-checks = true - -[dependencies] -anchor-lang = "0.24.2" -anchor-spl = "0.24.2" diff --git a/basics/hello-solana/seahorse/hello_solana/programs/hello_solana/Xargo.toml b/basics/hello-solana/seahorse/hello_solana/programs/hello_solana/Xargo.toml deleted file mode 100644 index 475fb71ed..000000000 --- a/basics/hello-solana/seahorse/hello_solana/programs/hello_solana/Xargo.toml +++ /dev/null @@ -1,2 +0,0 @@ -[target.bpfel-unknown-unknown.dependencies.std] -features = [] diff --git a/basics/hello-solana/seahorse/hello_solana/programs/hello_solana/src/lib.rs b/basics/hello-solana/seahorse/hello_solana/programs/hello_solana/src/lib.rs deleted file mode 100644 index d01e3176e..000000000 --- a/basics/hello-solana/seahorse/hello_solana/programs/hello_solana/src/lib.rs +++ /dev/null @@ -1,72 +0,0 @@ -use anchor_lang::prelude::*; -use anchor_lang::solana_program; -use anchor_spl::token; -use std::convert::TryFrom; - -declare_id!("Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS"); - -#[derive(Debug)] -#[account] -pub struct Counter { - authority: Pubkey, - value: u8, -} - -pub fn initialize_handler(mut ctx: Context) -> Result<()> { - let mut authority = &mut ctx.accounts.authority; - let mut counter = &mut ctx.accounts.counter; - let mut counter = counter; - - counter.authority = authority.key(); - - counter.value = 0; - - msg!("{}", "Hello, Solana from Seahorse!"); - - Ok(()) -} - -pub fn increment_handler(mut ctx: Context) -> Result<()> { - let mut authority = &mut ctx.accounts.authority; - let mut counter = &mut ctx.accounts.counter; - - counter.value += 1; - - Ok(()) -} - -#[derive(Accounts)] -pub struct Initialize<'info> { - #[account(mut)] - pub authority: Signer<'info>, - #[account( - init, - payer = authority, - seeds = ["new_delhi_hh".as_bytes().as_ref(), authority.key().as_ref()], - bump, - space = 8 + std::mem::size_of::() - )] - pub counter: Box>, - pub system_program: Program<'info, System>, -} - -#[derive(Accounts)] -pub struct Increment<'info> { - #[account(mut)] - pub authority: Signer<'info>, - #[account(mut)] - pub counter: Box>, -} - -#[program] -pub mod hello_solana { - use super::*; - - pub fn initialize(ctx: Context) -> Result<()> { - initialize_handler(ctx) - } - - pub fn increment(ctx: Context) -> Result<()> { - increment_handler(ctx) - } -} diff --git a/basics/hello-solana/seahorse/hello_solana/programs_py/hello_solana.py b/basics/hello-solana/seahorse/hello_solana/programs_py/hello_solana.py deleted file mode 100644 index 06c892e5f..000000000 --- a/basics/hello-solana/seahorse/hello_solana/programs_py/hello_solana.py +++ /dev/null @@ -1,32 +0,0 @@ -from seahorse.prelude import * - -declare_id('Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS') - -class Counter(Account): - authority: Pubkey - value: u8 - - -@instruction -def initialize( - authority: Signer, - counter: Empty[Counter] -): - # Initialize the counter and set the authority - counter = counter.init( - payer = authority, - seeds = ['new_delhi_hh', authority] - ) - - counter.authority = authority.key() - counter.value = 0 - - print("Hello, Solana from Seahorse!") - - -@instruction -def increment( - authority: Signer, - counter: Counter -): - counter.value += 1 \ No newline at end of file diff --git a/basics/hello-solana/seahorse/hello_solana/programs_py/seahorse/__init__.py b/basics/hello-solana/seahorse/hello_solana/programs_py/seahorse/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/basics/hello-solana/seahorse/hello_solana/programs_py/seahorse/prelude.py b/basics/hello-solana/seahorse/hello_solana/programs_py/seahorse/prelude.py deleted file mode 100644 index de2f03748..000000000 --- a/basics/hello-solana/seahorse/hello_solana/programs_py/seahorse/prelude.py +++ /dev/null @@ -1,330 +0,0 @@ -# seahorse.prelude: the basis for writing Seahorse programs. -# -# NOTE: this file just contains types and documentation for your editor. This -# is NOT executable code, and you won't be able to change the behavior of your -# Seahorse programs by editing this file. - -from typing import * -from math import floor, ceil - -T = TypeVar('T') -N = TypeVar('N') - - -# =========================================================== -# Internal types - here for completeness, but not really used -# =========================================================== - -class ProgramResult: - """Result from executing an instruction - either a success, or a failure with an error message.""" - - -# ========== -# Rust types -# ========== - -class u8: - """Single-byte unsigned integer.""" - - def __init__(self, _: Any): - return self - - def __add__(self, _: Any): - return self - - def __radd__(self, _: Any): - return self - - def __iadd__(self, _: Any): - return self - - def __sub__(self, _: Any): - return self - - def __rsub__(self, _: Any): - return self - - def __isub__(self, _: Any): - return self - - def __mul__(self, _: Any): - return self - - def __rmul__(self, _: Any): - return self - - def __imul__(self, _: Any): - return self - - def __div__(self, _: Any): - return self - - def __rdiv__(self, _: Any): - return self - - def __idiv__(self, _: Any): - return self - -class u64: - """64-bit unsigned integer.""" - - def __init__(self, _: Any): - return self - - def __add__(self, _: Any): - return self - - def __radd__(self, _: Any): - return self - - def __iadd__(self, _: Any): - return self - - def __sub__(self, _: Any): - return self - - def __rsub__(self, _: Any): - return self - - def __isub__(self, _: Any): - return self - - def __mul__(self, _: Any): - return self - - def __rmul__(self, _: Any): - return self - - def __imul__(self, _: Any): - return self - - def __div__(self, _: Any): - return self - - def __rdiv__(self, _: Any): - return self - - def __idiv__(self, _: Any): - return self - -class i64: - """64-bit signed integer.""" - - def __init__(self, _: Any): - return self - - def __add__(self, _: Any): - return self - - def __radd__(self, _: Any): - return self - - def __iadd__(self, _: Any): - return self - - def __sub__(self, _: Any): - return self - - def __rsub__(self, _: Any): - return self - - def __isub__(self, _: Any): - return self - - def __mul__(self, _: Any): - return self - - def __rmul__(self, _: Any): - return self - - def __imul__(self, _: Any): - return self - - def __div__(self, _: Any): - return self - - def __rdiv__(self, _: Any): - return self - - def __idiv__(self, _: Any): - return self - -class f64: - """64-bit floating point number.""" - - def __add__(self, _: Any): - return self - - def __radd__(self, _: Any): - return self - - def __iadd__(self, _: Any): - return self - - def __sub__(self, _: Any): - return self - - def __rsub__(self, _: Any): - return self - - def __isub__(self, _: Any): - return self - - def __mul__(self, _: Any): - return self - - def __rmul__(self, _: Any): - return self - - def __imul__(self, _: Any): - return self - - def __div__(self, _: Any): - return self - - def __rdiv__(self, _: Any): - return self - - def __idiv__(self, _: Any): - return self - - -class Array(Generic[T, N]): - """A fixed-length array: contains type T and has size N. - - Lists (Python builtin type) can coerce to this type. Example: - - ``` - class MyData(Account): - data: Array[u64, 4] - - @instruction - def set_data(my_data: MyData): - # Will successfully set `data` to [0, 1, 2, 3] - my_data.data = [i for i in range(0, 4)] - # Will attempt (and fail, crashing the instruction at runtime!) to set `data` to [0, 1, 2, 3, 4] - my_data.data = [i for i in range(0, 5)] - ``` - """ - -class Enum: - """A type that can have one of multiple named values. - - Note that unlike Rust enums, these cannot contain any data (other than the variant itself). Example: - - ``` - class MyEnum(Enum): - ONE = 1 - TWO = 2 - THREE = 3 - - @instruction - def use_enum(code: MyEnum): - if code == MyEnum.ONE: - print(1) - # ... - ``` - """ - -# ============ -# Solana types -# ============ - -class Pubkey: - """32-byte account identifier.""" - -class SolanaAccount: - """Generic Solana account.""" - - def key(self) -> Pubkey: - """Get this account's key.""" - - def transfer_lamports(self, to: SolanaAccount, amount: u64): - """Transfer some SOL (as an amount of lamports) to another account. - - Note: this will successfully transfer from a program-owned account without needing to - provide the seeds for a PDA, so no signer field is required (unlike the SPL methods). - """ - -class Account(SolanaAccount): - """User-defined Solana account.""" - -class Signer(SolanaAccount): - """Instruction signer.""" - -class Empty(Generic[T]): - """An account that needs to be initialized.""" - - def bump(self) -> u8: - """Get this account's bump, needed if you want to use this account to sign CPI calls.""" - - def init(self, payer: Signer, seeds: List[Union[str, Account, u8]], mint: TokenMint, authority: Account) -> T: - """ - Initialize the account. - - @param payer: The account that will pay for the rent cost of the initialized account. Must be an instruction signer. - @param seeds: A list of parameters to uniquely identify this account among all accounts created by your program. These may be string literals or other accounts. - @param mint: If initializing a TokenAccount, this is the mint that the account belongs to. - @param decimals: If initializing a TokenMint, this is the number of decimals the new token has. - @param authority: If initializing a TokenAccount/TokenMint, this is the account that has authority over the account. - @returns: The new, initialized account. All of the data in this account will be set to 0. - """ - -class TokenAccount(SolanaAccount): - """SPL token account.""" - - def authority(self) -> Pubkey: - """Get the owner of this token account.""" - - def amount(self) -> u64: - """Get the amount of token stored in this account.""" - - def transfer(self, authority: SolanaAccount, to: TokenAccount, amount: u64, signer: List[Union[str, Account, u8]] = None): - """ - Transfer funds from this SPL token account to another. - - @param authority: The account that owns this TokenAccount. Must be an instruction signer or the account given by the `signer` param. - @param to: The recipient TokenAccount. - @param amount: How much (in *native* token units) to transfer. - @param signer: (Optional) seeds for the signature of a PDA. - """ - -class TokenMint(SolanaAccount): - """SPL token mint.""" - - def authority(self) -> Pubkey: - """Get the owner of this token account.""" - - def mint(self, authority: SolanaAccount, to: TokenAccount, amount: u64, signer: List[Union[str, Account, u8]] = None): - """ - Mint new tokens to a token account. - - @param authority: The account that owns this TokenMint. Must be an instruction signer or the account given by the `signer` param. - @param to: The recipient TokenAccount. - @param amount: How much (in *native* token units) to mint. - @param signer: (Optional) seeds for the signature of a PDA. - """ - - def burn(self, authority: SolanaAccount, holder: TokenAccount, amount: u64, signer: List[Union[str, Account, u8]] = None): - """ - Burn tokens from a token account. - - @param authority: The account that owns the `holder` TokenAccount. Must be an instruction signer or the account given by the `signer` param. - @param holder: The TokenAccount to burn from. - @param amount: How much (in *native* token units) to burn. - @param signer: (Optional) seeds for the signature of a PDA. - """ - - -# ================ -# Helper functions -# ================ - -def declare_id(id: str): - """Inform Anchor what this program's ID is. - - @param id: The program's ID, generated by Anchor in /target/idl/.json. This must be copied-pasted straight from there as a string literal. - """ - -def instruction(function: Callable[..., None]) -> Callable[..., ProgramResult]: - """Decorator to turn a function into a program instruction.""" diff --git a/basics/hello-solana/seahorse/hello_solana/tests/hello_solana.ts b/basics/hello-solana/seahorse/hello_solana/tests/hello_solana.ts deleted file mode 100644 index b0f273827..000000000 --- a/basics/hello-solana/seahorse/hello_solana/tests/hello_solana.ts +++ /dev/null @@ -1,22 +0,0 @@ -import * as anchor from '@coral-xyz/anchor'; -import type { HelloSolana } from '../target/types/hello_solana'; - -describe('hello_solana', () => { - // Configure the client to use the local cluster. - const provider = anchor.AnchorProvider.env(); - anchor.setProvider(provider); - const program = anchor.workspace.HelloSolana as anchor.Program; - const payer = provider.wallet as anchor.Wallet; - - it('Say hello!', async () => { - // Just run Anchor's IDL method to build a transaction - // and sign it via a signer. - await program.methods - .hello() - .accounts({ - signer: provider.wallet.publicKey, - }) - .signers([payer.payer]) - .rpc(); - }); -}); diff --git a/basics/hello-solana/seahorse/hello_solana/tsconfig.json b/basics/hello-solana/seahorse/hello_solana/tsconfig.json deleted file mode 100644 index cd5d2e3d0..000000000 --- a/basics/hello-solana/seahorse/hello_solana/tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "compilerOptions": { - "types": ["mocha", "chai"], - "typeRoots": ["./node_modules/@types"], - "lib": ["es2015"], - "module": "commonjs", - "target": "es6", - "esModuleInterop": true - } -} diff --git a/basics/hello-solana/steel/Cargo.toml b/basics/hello-solana/steel/Cargo.toml deleted file mode 100644 index 0698b60ce..000000000 --- a/basics/hello-solana/steel/Cargo.toml +++ /dev/null @@ -1,22 +0,0 @@ -[workspace] -resolver = "2" -members = ["program"] - -[workspace.package] -version = "0.1.0" -edition = "2021" -license = "Apache-2.0" -homepage = "" -documentation = "" -repository = "" -readme = "./README.md" -keywords = ["solana"] - -[workspace.dependencies] -hello-solana-api = { path = "./api", version = "0.1.0" } -bytemuck = "1.14" -num_enum = "0.7" -solana-program = "2.1" -steel = "2.0" -thiserror = "1.0" -solana-sdk = "1.18" diff --git a/basics/hello-solana/steel/package.json b/basics/hello-solana/steel/package.json deleted file mode 100644 index 7b16847c5..000000000 --- a/basics/hello-solana/steel/package.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "name": "steel-hello-solana", - "version": "1.0.0", - "description": "hello world with steel framework for solana", - "scripts": { - "test": "pnpm ts-mocha -p ./tsconfig.json -t 1000000 ./tests/index.test.ts", - "build-and-test": "cargo build-sbf --manifest-path=./program/Cargo.toml --sbf-out-dir=./tests/fixtures && pnpm test", - "build": "cargo build-sbf --manifest-path=./program/Cargo.toml --sbf-out-dir=./program/target/so", - "deploy": "solana program deploy ./program/target/so/hello_solana_program.so" - }, - "keywords": [], - "author": "Ayush Chauhan", - "license": "ISC", - "devDependencies": { - "@types/bn.js": "^5.1.0", - "@types/chai": "^4.3.1", - "@types/mocha": "^9.1.1", - "@types/node": "^22.7.4", - "chai": "^4.3.4", - "mocha": "^9.0.3", - "solana-bankrun": "^0.3.0", - "ts-mocha": "^10.0.0", - "typescript": "^4.3.5" - }, - "dependencies": { - "@solana/web3.js": "^1.95.3" - } -} diff --git a/basics/hello-solana/steel/pnpm-lock.yaml b/basics/hello-solana/steel/pnpm-lock.yaml deleted file mode 100644 index 768835516..000000000 --- a/basics/hello-solana/steel/pnpm-lock.yaml +++ /dev/null @@ -1,1336 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -importers: - - .: - dependencies: - '@solana/web3.js': - specifier: ^1.95.3 - version: 1.95.3(bufferutil@4.0.8)(utf-8-validate@5.0.10) - devDependencies: - '@types/bn.js': - specifier: ^5.1.0 - version: 5.1.6 - '@types/chai': - specifier: ^4.3.1 - version: 4.3.20 - '@types/mocha': - specifier: ^9.1.1 - version: 9.1.1 - '@types/node': - specifier: ^22.7.4 - version: 22.7.4 - chai: - specifier: ^4.3.4 - version: 4.5.0 - mocha: - specifier: ^9.0.3 - version: 9.2.2 - solana-bankrun: - specifier: ^0.3.0 - version: 0.3.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) - ts-mocha: - specifier: ^10.0.0 - version: 10.0.0(mocha@9.2.2) - typescript: - specifier: ^4.3.5 - version: 4.9.5 - -packages: - - '@babel/runtime@7.25.7': - resolution: {integrity: sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w==} - engines: {node: '>=6.9.0'} - - '@noble/curves@1.6.0': - resolution: {integrity: sha512-TlaHRXDehJuRNR9TfZDNQ45mMEd5dwUwmicsafcIX4SsNiqnCHKjE/1alYPd/lDRVhxdhUAlv8uEhMCI5zjIJQ==} - engines: {node: ^14.21.3 || >=16} - - '@noble/hashes@1.5.0': - resolution: {integrity: sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==} - engines: {node: ^14.21.3 || >=16} - - '@solana/buffer-layout@4.0.1': - resolution: {integrity: sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==} - engines: {node: '>=5.10'} - - '@solana/web3.js@1.95.3': - resolution: {integrity: sha512-O6rPUN0w2fkNqx/Z3QJMB9L225Ex10PRDH8bTaIUPZXMPV0QP8ZpPvjQnXK+upUczlRgzHzd6SjKIha1p+I6og==} - - '@swc/helpers@0.5.13': - resolution: {integrity: sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==} - - '@types/bn.js@5.1.6': - resolution: {integrity: sha512-Xh8vSwUeMKeYYrj3cX4lGQgFSF/N03r+tv4AiLl1SucqV+uTQpxRcnM8AkXKHwYP9ZPXOYXRr2KPXpVlIvqh9w==} - - '@types/chai@4.3.20': - resolution: {integrity: sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==} - - '@types/connect@3.4.38': - resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} - - '@types/json5@0.0.29': - resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - - '@types/mocha@9.1.1': - resolution: {integrity: sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==} - - '@types/node@12.20.55': - resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - - '@types/node@22.7.4': - resolution: {integrity: sha512-y+NPi1rFzDs1NdQHHToqeiX2TIS79SWEAw9GYhkkx8bD0ChpfqC+n2j5OXOCpzfojBEBt6DnEnnG9MY0zk1XLg==} - - '@types/uuid@8.3.4': - resolution: {integrity: sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==} - - '@types/ws@7.4.7': - resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==} - - '@types/ws@8.5.12': - resolution: {integrity: sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==} - - '@ungap/promise-all-settled@1.1.2': - resolution: {integrity: sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==} - - JSONStream@1.3.5: - resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} - hasBin: true - - agentkeepalive@4.5.0: - resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} - engines: {node: '>= 8.0.0'} - - ansi-colors@4.1.1: - resolution: {integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==} - engines: {node: '>=6'} - - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - - argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - - arrify@1.0.1: - resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} - engines: {node: '>=0.10.0'} - - assertion-error@1.1.0: - resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} - - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - base-x@3.0.10: - resolution: {integrity: sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==} - - base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - - bigint-buffer@1.1.5: - resolution: {integrity: sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA==} - engines: {node: '>= 10.0.0'} - - binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} - - bindings@1.5.0: - resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} - - bn.js@5.2.1: - resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} - - borsh@0.7.0: - resolution: {integrity: sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==} - - brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - - braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} - - browser-stdout@1.3.1: - resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} - - bs58@4.0.1: - resolution: {integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==} - - buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - - buffer@6.0.3: - resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} - - bufferutil@4.0.8: - resolution: {integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==} - engines: {node: '>=6.14.2'} - - camelcase@6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} - - chai@4.5.0: - resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==} - engines: {node: '>=4'} - - chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - - check-error@1.0.3: - resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} - - chokidar@3.5.3: - resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} - engines: {node: '>= 8.10.0'} - - cliui@7.0.4: - resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} - - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - - concat-map@0.0.1: - resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} - - debug@4.3.3: - resolution: {integrity: sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - decamelize@4.0.0: - resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} - engines: {node: '>=10'} - - deep-eql@4.1.4: - resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==} - engines: {node: '>=6'} - - delay@5.0.0: - resolution: {integrity: sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==} - engines: {node: '>=10'} - - diff@3.5.0: - resolution: {integrity: sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==} - engines: {node: '>=0.3.1'} - - diff@5.0.0: - resolution: {integrity: sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==} - engines: {node: '>=0.3.1'} - - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - - es6-promise@4.2.8: - resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} - - es6-promisify@5.0.0: - resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==} - - escalade@3.2.0: - resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} - engines: {node: '>=6'} - - escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - - eventemitter3@5.0.1: - resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} - - eyes@0.1.8: - resolution: {integrity: sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==} - engines: {node: '> 0.1.90'} - - fast-stable-stringify@1.0.0: - resolution: {integrity: sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==} - - file-uri-to-path@1.0.0: - resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} - - fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} - - find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - - flat@5.0.2: - resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} - hasBin: true - - fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - - get-func-name@2.0.2: - resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} - - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - - glob@7.2.0: - resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==} - deprecated: Glob versions prior to v9 are no longer supported - - growl@1.10.5: - resolution: {integrity: sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==} - engines: {node: '>=4.x'} - - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - - he@1.2.0: - resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} - hasBin: true - - humanize-ms@1.2.1: - resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} - - ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - - inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. - - inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - - is-plain-obj@2.1.0: - resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} - engines: {node: '>=8'} - - is-unicode-supported@0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} - engines: {node: '>=10'} - - isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - - isomorphic-ws@4.0.1: - resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==} - peerDependencies: - ws: '*' - - jayson@4.1.2: - resolution: {integrity: sha512-5nzMWDHy6f+koZOuYsArh2AXs73NfWYVlFyJJuCedr93GpY+Ku8qq10ropSXVfHK+H0T6paA88ww+/dV+1fBNA==} - engines: {node: '>=8'} - hasBin: true - - js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true - - json-stringify-safe@5.0.1: - resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} - - json5@1.0.2: - resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} - hasBin: true - - jsonparse@1.3.1: - resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} - engines: {'0': node >= 0.2.0} - - locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - - log-symbols@4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} - engines: {node: '>=10'} - - loupe@2.3.7: - resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} - - make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - - minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - - minimatch@4.2.1: - resolution: {integrity: sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==} - engines: {node: '>=10'} - - minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - - mkdirp@0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} - hasBin: true - - mocha@9.2.2: - resolution: {integrity: sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==} - engines: {node: '>= 12.0.0'} - hasBin: true - - ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - - ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - - nanoid@3.3.1: - resolution: {integrity: sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - - node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - - node-gyp-build@4.8.2: - resolution: {integrity: sha512-IRUxE4BVsHWXkV/SFOut4qTlagw2aM8T5/vnTsmrHJvVoKueJHRc/JaFND7QDDc61kLYUJ6qlZM3sqTSyx2dTw==} - hasBin: true - - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - - once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - - p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - - p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - - path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - - path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - - pathval@1.1.1: - resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} - - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - - randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - - regenerator-runtime@0.14.1: - resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - - require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - - rpc-websockets@9.0.4: - resolution: {integrity: sha512-yWZWN0M+bivtoNLnaDbtny4XchdAIF5Q4g/ZsC5UC61Ckbp0QczwO8fg44rV3uYmY4WHd+EZQbn90W1d8ojzqQ==} - - safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - - serialize-javascript@6.0.0: - resolution: {integrity: sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==} - - solana-bankrun-darwin-arm64@0.3.1: - resolution: {integrity: sha512-9LWtH/3/WR9fs8Ve/srdo41mpSqVHmRqDoo69Dv1Cupi+o1zMU6HiEPUHEvH2Tn/6TDbPEDf18MYNfReLUqE6A==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - - solana-bankrun-darwin-universal@0.3.1: - resolution: {integrity: sha512-muGHpVYWT7xCd8ZxEjs/bmsbMp8XBqroYGbE4lQPMDUuLvsJEIrjGqs3MbxEFr71sa58VpyvgywWd5ifI7sGIg==} - engines: {node: '>= 10'} - os: [darwin] - - solana-bankrun-darwin-x64@0.3.1: - resolution: {integrity: sha512-oCaxfHyt7RC3ZMldrh5AbKfy4EH3YRMl8h6fSlMZpxvjQx7nK7PxlRwMeflMnVdkKKp7U8WIDak1lilIPd3/lg==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - - solana-bankrun-linux-x64-gnu@0.3.1: - resolution: {integrity: sha512-PfRFhr7igGFNt2Ecfdzh3li9eFPB3Xhmk0Eib17EFIB62YgNUg3ItRnQQFaf0spazFjjJLnglY1TRKTuYlgSVA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - solana-bankrun-linux-x64-musl@0.3.1: - resolution: {integrity: sha512-6r8i0NuXg3CGURql8ISMIUqhE7Hx/O7MlIworK4oN08jYrP0CXdLeB/hywNn7Z8d1NXrox/NpYUgvRm2yIzAsQ==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - solana-bankrun@0.3.1: - resolution: {integrity: sha512-inRwON7fBU5lPC36HdEqPeDg15FXJYcf77+o0iz9amvkUMJepcwnRwEfTNyMVpVYdgjTOBW5vg+596/3fi1kGA==} - engines: {node: '>= 10'} - - source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - - source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - - strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - - strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - - superstruct@2.0.2: - resolution: {integrity: sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A==} - engines: {node: '>=14.0.0'} - - supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - - supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} - - text-encoding-utf-8@1.0.2: - resolution: {integrity: sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==} - - through@2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - - tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - - ts-mocha@10.0.0: - resolution: {integrity: sha512-VRfgDO+iiuJFlNB18tzOfypJ21xn2xbuZyDvJvqpTbWgkAgD17ONGr8t+Tl8rcBtOBdjXp5e/Rk+d39f7XBHRw==} - engines: {node: '>= 6.X.X'} - hasBin: true - peerDependencies: - mocha: ^3.X.X || ^4.X.X || ^5.X.X || ^6.X.X || ^7.X.X || ^8.X.X || ^9.X.X || ^10.X.X - - ts-node@7.0.1: - resolution: {integrity: sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==} - engines: {node: '>=4.2.0'} - hasBin: true - - tsconfig-paths@3.15.0: - resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} - - tslib@2.7.0: - resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} - - type-detect@4.1.0: - resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==} - engines: {node: '>=4'} - - typescript@4.9.5: - resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} - engines: {node: '>=4.2.0'} - hasBin: true - - undici-types@6.19.8: - resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} - - utf-8-validate@5.0.10: - resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==} - engines: {node: '>=6.14.2'} - - uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - hasBin: true - - webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - - whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - - which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - - workerpool@6.2.0: - resolution: {integrity: sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==} - - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - - wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - - ws@7.5.10: - resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} - engines: {node: '>=8.3.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - ws@8.18.0: - resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - - yargs-parser@20.2.4: - resolution: {integrity: sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==} - engines: {node: '>=10'} - - yargs-parser@20.2.9: - resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} - engines: {node: '>=10'} - - yargs-unparser@2.0.0: - resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} - engines: {node: '>=10'} - - yargs@16.2.0: - resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} - engines: {node: '>=10'} - - yn@2.0.0: - resolution: {integrity: sha512-uTv8J/wiWTgUTg+9vLTi//leUl5vDQS6uii/emeTb2ssY7vl6QWf2fFbIIGjnhjvbdKlU0ed7QPgY1htTC86jQ==} - engines: {node: '>=4'} - - yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - -snapshots: - - '@babel/runtime@7.25.7': - dependencies: - regenerator-runtime: 0.14.1 - - '@noble/curves@1.6.0': - dependencies: - '@noble/hashes': 1.5.0 - - '@noble/hashes@1.5.0': {} - - '@solana/buffer-layout@4.0.1': - dependencies: - buffer: 6.0.3 - - '@solana/web3.js@1.95.3(bufferutil@4.0.8)(utf-8-validate@5.0.10)': - dependencies: - '@babel/runtime': 7.25.7 - '@noble/curves': 1.6.0 - '@noble/hashes': 1.5.0 - '@solana/buffer-layout': 4.0.1 - agentkeepalive: 4.5.0 - bigint-buffer: 1.1.5 - bn.js: 5.2.1 - borsh: 0.7.0 - bs58: 4.0.1 - buffer: 6.0.3 - fast-stable-stringify: 1.0.0 - jayson: 4.1.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) - node-fetch: 2.7.0 - rpc-websockets: 9.0.4 - superstruct: 2.0.2 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - - '@swc/helpers@0.5.13': - dependencies: - tslib: 2.7.0 - - '@types/bn.js@5.1.6': - dependencies: - '@types/node': 22.7.4 - - '@types/chai@4.3.20': {} - - '@types/connect@3.4.38': - dependencies: - '@types/node': 22.7.4 - - '@types/json5@0.0.29': - optional: true - - '@types/mocha@9.1.1': {} - - '@types/node@12.20.55': {} - - '@types/node@22.7.4': - dependencies: - undici-types: 6.19.8 - - '@types/uuid@8.3.4': {} - - '@types/ws@7.4.7': - dependencies: - '@types/node': 22.7.4 - - '@types/ws@8.5.12': - dependencies: - '@types/node': 22.7.4 - - '@ungap/promise-all-settled@1.1.2': {} - - JSONStream@1.3.5: - dependencies: - jsonparse: 1.3.1 - through: 2.3.8 - - agentkeepalive@4.5.0: - dependencies: - humanize-ms: 1.2.1 - - ansi-colors@4.1.1: {} - - ansi-regex@5.0.1: {} - - ansi-styles@4.3.0: - dependencies: - color-convert: 2.0.1 - - anymatch@3.1.3: - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - - argparse@2.0.1: {} - - arrify@1.0.1: {} - - assertion-error@1.1.0: {} - - balanced-match@1.0.2: {} - - base-x@3.0.10: - dependencies: - safe-buffer: 5.2.1 - - base64-js@1.5.1: {} - - bigint-buffer@1.1.5: - dependencies: - bindings: 1.5.0 - - binary-extensions@2.3.0: {} - - bindings@1.5.0: - dependencies: - file-uri-to-path: 1.0.0 - - bn.js@5.2.1: {} - - borsh@0.7.0: - dependencies: - bn.js: 5.2.1 - bs58: 4.0.1 - text-encoding-utf-8: 1.0.2 - - brace-expansion@1.1.11: - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - - braces@3.0.3: - dependencies: - fill-range: 7.1.1 - - browser-stdout@1.3.1: {} - - bs58@4.0.1: - dependencies: - base-x: 3.0.10 - - buffer-from@1.1.2: {} - - buffer@6.0.3: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - - bufferutil@4.0.8: - dependencies: - node-gyp-build: 4.8.2 - optional: true - - camelcase@6.3.0: {} - - chai@4.5.0: - dependencies: - assertion-error: 1.1.0 - check-error: 1.0.3 - deep-eql: 4.1.4 - get-func-name: 2.0.2 - loupe: 2.3.7 - pathval: 1.1.1 - type-detect: 4.1.0 - - chalk@4.1.2: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - - check-error@1.0.3: - dependencies: - get-func-name: 2.0.2 - - chokidar@3.5.3: - dependencies: - anymatch: 3.1.3 - braces: 3.0.3 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - - cliui@7.0.4: - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - - color-convert@2.0.1: - dependencies: - color-name: 1.1.4 - - color-name@1.1.4: {} - - commander@2.20.3: {} - - concat-map@0.0.1: {} - - debug@4.3.3(supports-color@8.1.1): - dependencies: - ms: 2.1.2 - optionalDependencies: - supports-color: 8.1.1 - - decamelize@4.0.0: {} - - deep-eql@4.1.4: - dependencies: - type-detect: 4.1.0 - - delay@5.0.0: {} - - diff@3.5.0: {} - - diff@5.0.0: {} - - emoji-regex@8.0.0: {} - - es6-promise@4.2.8: {} - - es6-promisify@5.0.0: - dependencies: - es6-promise: 4.2.8 - - escalade@3.2.0: {} - - escape-string-regexp@4.0.0: {} - - eventemitter3@5.0.1: {} - - eyes@0.1.8: {} - - fast-stable-stringify@1.0.0: {} - - file-uri-to-path@1.0.0: {} - - fill-range@7.1.1: - dependencies: - to-regex-range: 5.0.1 - - find-up@5.0.0: - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - - flat@5.0.2: {} - - fs.realpath@1.0.0: {} - - fsevents@2.3.3: - optional: true - - get-caller-file@2.0.5: {} - - get-func-name@2.0.2: {} - - glob-parent@5.1.2: - dependencies: - is-glob: 4.0.3 - - glob@7.2.0: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - - growl@1.10.5: {} - - has-flag@4.0.0: {} - - he@1.2.0: {} - - humanize-ms@1.2.1: - dependencies: - ms: 2.1.3 - - ieee754@1.2.1: {} - - inflight@1.0.6: - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - - inherits@2.0.4: {} - - is-binary-path@2.1.0: - dependencies: - binary-extensions: 2.3.0 - - is-extglob@2.1.1: {} - - is-fullwidth-code-point@3.0.0: {} - - is-glob@4.0.3: - dependencies: - is-extglob: 2.1.1 - - is-number@7.0.0: {} - - is-plain-obj@2.1.0: {} - - is-unicode-supported@0.1.0: {} - - isexe@2.0.0: {} - - isomorphic-ws@4.0.1(ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10)): - dependencies: - ws: 7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) - - jayson@4.1.2(bufferutil@4.0.8)(utf-8-validate@5.0.10): - dependencies: - '@types/connect': 3.4.38 - '@types/node': 12.20.55 - '@types/ws': 7.4.7 - JSONStream: 1.3.5 - commander: 2.20.3 - delay: 5.0.0 - es6-promisify: 5.0.0 - eyes: 0.1.8 - isomorphic-ws: 4.0.1(ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10)) - json-stringify-safe: 5.0.1 - uuid: 8.3.2 - ws: 7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - js-yaml@4.1.0: - dependencies: - argparse: 2.0.1 - - json-stringify-safe@5.0.1: {} - - json5@1.0.2: - dependencies: - minimist: 1.2.8 - optional: true - - jsonparse@1.3.1: {} - - locate-path@6.0.0: - dependencies: - p-locate: 5.0.0 - - log-symbols@4.1.0: - dependencies: - chalk: 4.1.2 - is-unicode-supported: 0.1.0 - - loupe@2.3.7: - dependencies: - get-func-name: 2.0.2 - - make-error@1.3.6: {} - - minimatch@3.1.2: - dependencies: - brace-expansion: 1.1.11 - - minimatch@4.2.1: - dependencies: - brace-expansion: 1.1.11 - - minimist@1.2.8: {} - - mkdirp@0.5.6: - dependencies: - minimist: 1.2.8 - - mocha@9.2.2: - dependencies: - '@ungap/promise-all-settled': 1.1.2 - ansi-colors: 4.1.1 - browser-stdout: 1.3.1 - chokidar: 3.5.3 - debug: 4.3.3(supports-color@8.1.1) - diff: 5.0.0 - escape-string-regexp: 4.0.0 - find-up: 5.0.0 - glob: 7.2.0 - growl: 1.10.5 - he: 1.2.0 - js-yaml: 4.1.0 - log-symbols: 4.1.0 - minimatch: 4.2.1 - ms: 2.1.3 - nanoid: 3.3.1 - serialize-javascript: 6.0.0 - strip-json-comments: 3.1.1 - supports-color: 8.1.1 - which: 2.0.2 - workerpool: 6.2.0 - yargs: 16.2.0 - yargs-parser: 20.2.4 - yargs-unparser: 2.0.0 - - ms@2.1.2: {} - - ms@2.1.3: {} - - nanoid@3.3.1: {} - - node-fetch@2.7.0: - dependencies: - whatwg-url: 5.0.0 - - node-gyp-build@4.8.2: - optional: true - - normalize-path@3.0.0: {} - - once@1.4.0: - dependencies: - wrappy: 1.0.2 - - p-limit@3.1.0: - dependencies: - yocto-queue: 0.1.0 - - p-locate@5.0.0: - dependencies: - p-limit: 3.1.0 - - path-exists@4.0.0: {} - - path-is-absolute@1.0.1: {} - - pathval@1.1.1: {} - - picomatch@2.3.1: {} - - randombytes@2.1.0: - dependencies: - safe-buffer: 5.2.1 - - readdirp@3.6.0: - dependencies: - picomatch: 2.3.1 - - regenerator-runtime@0.14.1: {} - - require-directory@2.1.1: {} - - rpc-websockets@9.0.4: - dependencies: - '@swc/helpers': 0.5.13 - '@types/uuid': 8.3.4 - '@types/ws': 8.5.12 - buffer: 6.0.3 - eventemitter3: 5.0.1 - uuid: 8.3.2 - ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - optionalDependencies: - bufferutil: 4.0.8 - utf-8-validate: 5.0.10 - - safe-buffer@5.2.1: {} - - serialize-javascript@6.0.0: - dependencies: - randombytes: 2.1.0 - - solana-bankrun-darwin-arm64@0.3.1: - optional: true - - solana-bankrun-darwin-universal@0.3.1: - optional: true - - solana-bankrun-darwin-x64@0.3.1: - optional: true - - solana-bankrun-linux-x64-gnu@0.3.1: - optional: true - - solana-bankrun-linux-x64-musl@0.3.1: - optional: true - - solana-bankrun@0.3.1(bufferutil@4.0.8)(utf-8-validate@5.0.10): - dependencies: - '@solana/web3.js': 1.95.3(bufferutil@4.0.8)(utf-8-validate@5.0.10) - bs58: 4.0.1 - optionalDependencies: - solana-bankrun-darwin-arm64: 0.3.1 - solana-bankrun-darwin-universal: 0.3.1 - solana-bankrun-darwin-x64: 0.3.1 - solana-bankrun-linux-x64-gnu: 0.3.1 - solana-bankrun-linux-x64-musl: 0.3.1 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - - source-map-support@0.5.21: - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - - source-map@0.6.1: {} - - string-width@4.2.3: - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - - strip-ansi@6.0.1: - dependencies: - ansi-regex: 5.0.1 - - strip-bom@3.0.0: - optional: true - - strip-json-comments@3.1.1: {} - - superstruct@2.0.2: {} - - supports-color@7.2.0: - dependencies: - has-flag: 4.0.0 - - supports-color@8.1.1: - dependencies: - has-flag: 4.0.0 - - text-encoding-utf-8@1.0.2: {} - - through@2.3.8: {} - - to-regex-range@5.0.1: - dependencies: - is-number: 7.0.0 - - tr46@0.0.3: {} - - ts-mocha@10.0.0(mocha@9.2.2): - dependencies: - mocha: 9.2.2 - ts-node: 7.0.1 - optionalDependencies: - tsconfig-paths: 3.15.0 - - ts-node@7.0.1: - dependencies: - arrify: 1.0.1 - buffer-from: 1.1.2 - diff: 3.5.0 - make-error: 1.3.6 - minimist: 1.2.8 - mkdirp: 0.5.6 - source-map-support: 0.5.21 - yn: 2.0.0 - - tsconfig-paths@3.15.0: - dependencies: - '@types/json5': 0.0.29 - json5: 1.0.2 - minimist: 1.2.8 - strip-bom: 3.0.0 - optional: true - - tslib@2.7.0: {} - - type-detect@4.1.0: {} - - typescript@4.9.5: {} - - undici-types@6.19.8: {} - - utf-8-validate@5.0.10: - dependencies: - node-gyp-build: 4.8.2 - optional: true - - uuid@8.3.2: {} - - webidl-conversions@3.0.1: {} - - whatwg-url@5.0.0: - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - - which@2.0.2: - dependencies: - isexe: 2.0.0 - - workerpool@6.2.0: {} - - wrap-ansi@7.0.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - wrappy@1.0.2: {} - - ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10): - optionalDependencies: - bufferutil: 4.0.8 - utf-8-validate: 5.0.10 - - ws@8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): - optionalDependencies: - bufferutil: 4.0.8 - utf-8-validate: 5.0.10 - - y18n@5.0.8: {} - - yargs-parser@20.2.4: {} - - yargs-parser@20.2.9: {} - - yargs-unparser@2.0.0: - dependencies: - camelcase: 6.3.0 - decamelize: 4.0.0 - flat: 5.0.2 - is-plain-obj: 2.1.0 - - yargs@16.2.0: - dependencies: - cliui: 7.0.4 - escalade: 3.2.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 20.2.9 - - yn@2.0.0: {} - - yocto-queue@0.1.0: {} diff --git a/basics/hello-solana/steel/program/Cargo.toml b/basics/hello-solana/steel/program/Cargo.toml deleted file mode 100644 index f6908924f..000000000 --- a/basics/hello-solana/steel/program/Cargo.toml +++ /dev/null @@ -1,11 +0,0 @@ -[package] -name = "steel-hello-solana" -version = "0.1.0" -edition = "2021" - -[lib] -crate-type = ["cdylib", "lib"] - -[dependencies] -solana-program = "=2.0.13" -steel = "=2.1.1" diff --git a/basics/hello-solana/steel/program/src/lib.rs b/basics/hello-solana/steel/program/src/lib.rs deleted file mode 100644 index e0e9b453d..000000000 --- a/basics/hello-solana/steel/program/src/lib.rs +++ /dev/null @@ -1,16 +0,0 @@ -use solana_program::msg; -use steel::*; - -entrypoint!(process_instruction); - -fn process_instruction( - program_id: &Pubkey, - _accounts: &[AccountInfo], - _instruction_data: &[u8], -) -> ProgramResult { - msg!("Hello, Solana!"); - - msg!("Our program's Program ID: {}", &program_id); - - Ok(()) -} diff --git a/basics/hello-solana/steel/tests/index.test.ts b/basics/hello-solana/steel/tests/index.test.ts deleted file mode 100644 index 4e3a04531..000000000 --- a/basics/hello-solana/steel/tests/index.test.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { describe, test } from 'node:test'; -import { PublicKey, Transaction, TransactionInstruction } from '@solana/web3.js'; -import { assert } from 'chai'; -import { start } from 'solana-bankrun'; - -describe('hello-solana', async () => { - // load program in solana-bankrun - const PROGRAM_ID = PublicKey.unique(); - const context = await start([{ name: 'steel_hello_solana', programId: PROGRAM_ID }], []); - const client = context.banksClient; - const payer = context.payer; - - test('Say hello!', async () => { - const blockhash = context.lastBlockhash; - // We set up our instruction first. - const ix = new TransactionInstruction({ - keys: [{ pubkey: payer.publicKey, isSigner: true, isWritable: true }], - programId: PROGRAM_ID, - data: Buffer.alloc(0), // No data - }); - - const tx = new Transaction(); - tx.recentBlockhash = blockhash; - tx.add(ix).sign(payer); - - // Now we process the transaction - const transaction = await client.processTransaction(tx); - - assert(transaction.logMessages[0].startsWith(`Program ${PROGRAM_ID}`)); - assert(transaction.logMessages[1] === 'Program log: Hello, Solana!'); - assert(transaction.logMessages[2] === `Program log: Our program's Program ID: ${PROGRAM_ID}`); - assert(transaction.logMessages[3].startsWith(`Program ${PROGRAM_ID} consumed`)); - assert(transaction.logMessages[4] === `Program ${PROGRAM_ID} success`); - assert(transaction.logMessages.length === 5); - }); -}); diff --git a/basics/hello-solana/steel/tsconfig.json b/basics/hello-solana/steel/tsconfig.json deleted file mode 100644 index 8c20b2236..000000000 --- a/basics/hello-solana/steel/tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "compilerOptions": { - "types": ["mocha", "chai", "node"], - "typeRoots": ["./node_modules/@types"], - "lib": ["es2015"], - "module": "commonjs", - "target": "es6", - "esModuleInterop": true - } -} diff --git a/basics/pda-rent-payer/steel/.gitignore b/basics/pda-rent-payer/steel/.gitignore deleted file mode 100644 index 1fae5e12b..000000000 --- a/basics/pda-rent-payer/steel/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -target -test-ledger -node_modules diff --git a/basics/pda-rent-payer/steel/Cargo.toml b/basics/pda-rent-payer/steel/Cargo.toml deleted file mode 100644 index 33a580eb3..000000000 --- a/basics/pda-rent-payer/steel/Cargo.toml +++ /dev/null @@ -1,22 +0,0 @@ -[workspace] -resolver = "2" -members = ["api", "program"] - -[workspace.package] -version = "0.1.0" -edition = "2021" -license = "Apache-2.0" -homepage = "" -documentation = "" -repository = "" -readme = "./README.md" -keywords = ["solana"] - -[workspace.dependencies] -pda-rent-payer-api = { path = "./api", version = "0.1.0" } -borsh = "1.5" -bytemuck = "1.14" -num_enum = "0.7" -solana-program = "2.1" -steel = "3.0" -thiserror = "1.0" diff --git a/basics/pda-rent-payer/steel/README.md b/basics/pda-rent-payer/steel/README.md deleted file mode 100644 index 109ffcf66..000000000 --- a/basics/pda-rent-payer/steel/README.md +++ /dev/null @@ -1,28 +0,0 @@ -# PDA Rent Payer - -**PDA Rent Payer** is a program that uses a PDA to pay the rent -for the creation of a system program by simply transferring lamports to it - -## API -- [`Consts`](api/src/consts.rs) – Program constants. -- [`Error`](api/src/error.rs) – Custom program errors. -- [`Instruction`](api/src/instruction.rs) – Declared instructions. - -## Instructions -- [`Add`](program/src/add.rs) – Add ... -- [`Initialize`](program/src/initialize.rs) – Initialize ... - -## State -- [`Counter`](api/src/state/counter.rs) – Counter ... - -## Get started - -Compile your program: -```sh -steel build -``` - -Run unit and integration tests: -```sh -steel test -``` diff --git a/basics/pda-rent-payer/steel/api/Cargo.toml b/basics/pda-rent-payer/steel/api/Cargo.toml deleted file mode 100644 index e49a69932..000000000 --- a/basics/pda-rent-payer/steel/api/Cargo.toml +++ /dev/null @@ -1,19 +0,0 @@ -[package] -name = "pda-rent-payer-api" -description = "API for interacting with the PDA rent payer program" -version.workspace = true -edition.workspace = true -license.workspace = true -homepage.workspace = true -documentation.workspace = true -repository.workspace = true -readme.workspace = true -keywords.workspace = true - -[dependencies] -borsh.workspace = true -bytemuck.workspace = true -num_enum.workspace = true -solana-program.workspace = true -steel.workspace = true -thiserror.workspace = true diff --git a/basics/pda-rent-payer/steel/api/src/consts.rs b/basics/pda-rent-payer/steel/api/src/consts.rs deleted file mode 100644 index 94ba2471b..000000000 --- a/basics/pda-rent-payer/steel/api/src/consts.rs +++ /dev/null @@ -1,5 +0,0 @@ -// Seed of the rent vault account PDA. -pub const RENT_VAULT: &[u8] = b"rent_vault"; - -// Seed of the account PDA to be created. -// pub const NEW_ACCOUNT: &[u8] = b"new_account"; diff --git a/basics/pda-rent-payer/steel/api/src/error.rs b/basics/pda-rent-payer/steel/api/src/error.rs deleted file mode 100644 index bfa5520e9..000000000 --- a/basics/pda-rent-payer/steel/api/src/error.rs +++ /dev/null @@ -1,10 +0,0 @@ -use steel::*; - -#[derive(Debug, Error, Clone, Copy, PartialEq, Eq, IntoPrimitive)] -#[repr(u32)] -pub enum PdaRentPayerError { - #[error("Rent vault account already initialized")] - RentVaultInitialized = 0, -} - -error!(PdaRentPayerError); diff --git a/basics/pda-rent-payer/steel/api/src/instruction.rs b/basics/pda-rent-payer/steel/api/src/instruction.rs deleted file mode 100644 index 94249e540..000000000 --- a/basics/pda-rent-payer/steel/api/src/instruction.rs +++ /dev/null @@ -1,22 +0,0 @@ -use borsh::{BorshDeserialize, BorshSerialize}; -use steel::*; - -#[repr(u8)] -#[derive(Clone, Copy, Debug, Eq, PartialEq, TryFromPrimitive)] -pub enum PdaRentPayerInstruction { - InitializeRentVault = 0, - CreateNewAccount = 1, -} - -#[repr(C)] -#[derive(BorshSerialize, BorshDeserialize, Clone, Copy, Debug, Pod, Zeroable)] -pub struct InitializeRentVault { - pub amount: u64, -} - -#[repr(C)] -#[derive(Clone, Copy, Debug, Pod, Zeroable)] -pub struct CreateNewAccount {} - -instruction!(PdaRentPayerInstruction, InitializeRentVault); -instruction!(PdaRentPayerInstruction, CreateNewAccount); diff --git a/basics/pda-rent-payer/steel/api/src/lib.rs b/basics/pda-rent-payer/steel/api/src/lib.rs deleted file mode 100644 index c250ef1d5..000000000 --- a/basics/pda-rent-payer/steel/api/src/lib.rs +++ /dev/null @@ -1,18 +0,0 @@ -pub mod consts; -pub mod error; -pub mod instruction; -pub mod sdk; -pub mod state; - -pub mod prelude { - pub use crate::consts::*; - pub use crate::error::*; - pub use crate::instruction::*; - pub use crate::sdk::*; - pub use crate::state::*; -} - -use steel::*; - -// TODO Set program id -declare_id!("HK5TuboXztZv7anSa3GptyCZ5wMYiqbY8kNSVEtqWDuD"); diff --git a/basics/pda-rent-payer/steel/api/src/sdk.rs b/basics/pda-rent-payer/steel/api/src/sdk.rs deleted file mode 100644 index 799f3a50a..000000000 --- a/basics/pda-rent-payer/steel/api/src/sdk.rs +++ /dev/null @@ -1,26 +0,0 @@ -use steel::*; - -use crate::prelude::*; - -pub fn init_rent_vault(signer_info: Pubkey, system_program: Pubkey, amount: u64) -> Instruction { - Instruction { - program_id: crate::ID, - accounts: vec![ - AccountMeta::new(signer_info, true), - AccountMeta::new(rent_vault_pda().0, false), - AccountMeta::new_readonly(system_program, false), - ], - data: InitializeRentVault { amount }.to_bytes(), - } -} - -pub fn create_new_account(rent_vault: Pubkey, new_account: Pubkey) -> Instruction { - Instruction { - program_id: crate::ID, - accounts: vec![ - AccountMeta::new(rent_vault, false), - AccountMeta::new(new_account, true), - ], - data: CreateNewAccount {}.to_bytes(), - } -} diff --git a/basics/pda-rent-payer/steel/api/src/state/accounts.rs b/basics/pda-rent-payer/steel/api/src/state/accounts.rs deleted file mode 100644 index c2f103cb4..000000000 --- a/basics/pda-rent-payer/steel/api/src/state/accounts.rs +++ /dev/null @@ -1,16 +0,0 @@ -use super::PdaRentPayerAccountDiscriminator; -use steel::*; - -/// This empty struct represents the payer vault account -#[repr(C)] -#[derive(Clone, Copy, Debug, PartialEq, Pod, Zeroable)] -pub struct RentVault {} - -/// This empty struct represents the account -/// that the vault will pay for -#[repr(C)] -#[derive(Clone, Copy, Debug, PartialEq, Pod, Zeroable)] -pub struct NewAccount {} - -account!(PdaRentPayerAccountDiscriminator, RentVault); -account!(PdaRentPayerAccountDiscriminator, NewAccount); diff --git a/basics/pda-rent-payer/steel/api/src/state/mod.rs b/basics/pda-rent-payer/steel/api/src/state/mod.rs deleted file mode 100644 index cd29b1718..000000000 --- a/basics/pda-rent-payer/steel/api/src/state/mod.rs +++ /dev/null @@ -1,19 +0,0 @@ -mod accounts; - -use crate::consts::*; -pub use accounts::*; -use steel::*; - -/// This enum represents the discriminator for the -/// accounts this program can interact with -#[repr(u8)] -#[derive(Clone, Copy, Debug, Eq, PartialEq, IntoPrimitive, TryFromPrimitive)] -pub enum PdaRentPayerAccountDiscriminator { - RentVault = 0, - NewAccount = 1, -} - -/// Fetch PDA of the rent_vault account. -pub fn rent_vault_pda() -> (Pubkey, u8) { - Pubkey::find_program_address(&[RENT_VAULT], &crate::id()) -} diff --git a/basics/pda-rent-payer/steel/cicd.sh b/basics/pda-rent-payer/steel/cicd.sh deleted file mode 100644 index 505a158f1..000000000 --- a/basics/pda-rent-payer/steel/cicd.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash - -# Buld and deploy this program with ease using a single command -# Run this script with "bash cicd.sh" or "./cicd.sh" -# Note: Try running "chmod +x cicd.sh" if you face any issues. - -# Check if cargo is installed -if ! command -v cargo &> /dev/null -then - echo "Cargo could not be found. Please install Rust." - exit 1 -fi - -# Check if solana CLI is installed -if ! command -v solana &> /dev/null -then - echo "Solana CLI could not be found. Please install Solana." - exit 1 -fi - - -# Build -cargo build-sbf --manifest-path=./program/Cargo.toml --sbf-out-dir=./program/target/so - -# Deploy -solana program deploy ./program/target/so/pda_rent_payer_program.so diff --git a/basics/pda-rent-payer/steel/package.json b/basics/pda-rent-payer/steel/package.json deleted file mode 100644 index c8c2f55d2..000000000 --- a/basics/pda-rent-payer/steel/package.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "name": "pda-rent-payer-program", - "version": "1.0.0", - "type": "module", - "description": "Use a PDA to pay the rent for the creation of a new account.", - "scripts": { - "test": "pnpm ts-mocha -p ./tsconfig.json -t 1000000 ./tests/*.test.ts", - "build-and-test": "cargo build-sbf --manifest-path=./program/Cargo.toml --sbf-out-dir=./tests/fixtures && pnpm test", - "build": "cargo build-sbf --manifest-path=./program/Cargo.toml --sbf-out-dir=./program/target/so", - "deploy": "solana program deploy ./program/target/so/pda_rent_payer_program.so" - }, - "keywords": ["solana"], - "author": "", - "license": "MIT", - "dependencies": { - "@solana/web3.js": "^1.95.4" - }, - "devDependencies": { - "@types/chai": "^4.3.20", - "@types/mocha": "^10.0.9", - "@types/node": "^22.8.5", - "borsh": "^2.0.0", - "chai": "^4.5.0", - "mocha": "^10.8.2", - "solana-bankrun": "^0.4.0", - "ts-mocha": "^10.0.0", - "typescript": "^5.6.3" - } -} diff --git a/basics/pda-rent-payer/steel/pnpm-lock.yaml b/basics/pda-rent-payer/steel/pnpm-lock.yaml deleted file mode 100644 index 1da79b894..000000000 --- a/basics/pda-rent-payer/steel/pnpm-lock.yaml +++ /dev/null @@ -1,1268 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -importers: - - .: - dependencies: - '@solana/web3.js': - specifier: ^1.95.4 - version: 1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) - devDependencies: - '@types/chai': - specifier: ^4.3.20 - version: 4.3.20 - '@types/mocha': - specifier: ^10.0.9 - version: 10.0.9 - '@types/node': - specifier: ^22.8.5 - version: 22.8.5 - borsh: - specifier: ^2.0.0 - version: 2.0.0 - chai: - specifier: ^4.5.0 - version: 4.5.0 - mocha: - specifier: ^10.8.2 - version: 10.8.2 - solana-bankrun: - specifier: ^0.4.0 - version: 0.4.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - ts-mocha: - specifier: ^10.0.0 - version: 10.0.0(mocha@10.8.2) - typescript: - specifier: ^5.6.3 - version: 5.6.3 - -packages: - - '@babel/runtime@7.26.0': - resolution: {integrity: sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==} - engines: {node: '>=6.9.0'} - - '@noble/curves@1.6.0': - resolution: {integrity: sha512-TlaHRXDehJuRNR9TfZDNQ45mMEd5dwUwmicsafcIX4SsNiqnCHKjE/1alYPd/lDRVhxdhUAlv8uEhMCI5zjIJQ==} - engines: {node: ^14.21.3 || >=16} - - '@noble/hashes@1.5.0': - resolution: {integrity: sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==} - engines: {node: ^14.21.3 || >=16} - - '@solana/buffer-layout@4.0.1': - resolution: {integrity: sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==} - engines: {node: '>=5.10'} - - '@solana/web3.js@1.95.4': - resolution: {integrity: sha512-sdewnNEA42ZSMxqkzdwEWi6fDgzwtJHaQa5ndUGEJYtoOnM6X5cvPmjoTUp7/k7bRrVAxfBgDnvQQHD6yhlLYw==} - - '@swc/helpers@0.5.13': - resolution: {integrity: sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==} - - '@types/chai@4.3.20': - resolution: {integrity: sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==} - - '@types/connect@3.4.38': - resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} - - '@types/json5@0.0.29': - resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - - '@types/mocha@10.0.9': - resolution: {integrity: sha512-sicdRoWtYevwxjOHNMPTl3vSfJM6oyW8o1wXeI7uww6b6xHg8eBznQDNSGBCDJmsE8UMxP05JgZRtsKbTqt//Q==} - - '@types/node@12.20.55': - resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - - '@types/node@22.8.5': - resolution: {integrity: sha512-5iYk6AMPtsMbkZqCO1UGF9W5L38twq11S2pYWkybGHH2ogPUvXWNlQqJBzuEZWKj/WRH+QTeiv6ySWqJtvIEgA==} - - '@types/uuid@8.3.4': - resolution: {integrity: sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==} - - '@types/ws@7.4.7': - resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==} - - '@types/ws@8.5.12': - resolution: {integrity: sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==} - - JSONStream@1.3.5: - resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} - hasBin: true - - agentkeepalive@4.5.0: - resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} - engines: {node: '>= 8.0.0'} - - ansi-colors@4.1.3: - resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} - engines: {node: '>=6'} - - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - - argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - - arrify@1.0.1: - resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} - engines: {node: '>=0.10.0'} - - assertion-error@1.1.0: - resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} - - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - base-x@3.0.10: - resolution: {integrity: sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==} - - base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - - bigint-buffer@1.1.5: - resolution: {integrity: sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA==} - engines: {node: '>= 10.0.0'} - - binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} - - bindings@1.5.0: - resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} - - bn.js@5.2.1: - resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} - - borsh@0.7.0: - resolution: {integrity: sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==} - - borsh@2.0.0: - resolution: {integrity: sha512-kc9+BgR3zz9+cjbwM8ODoUB4fs3X3I5A/HtX7LZKxCLaMrEeDFoBpnhZY//DTS1VZBSs6S5v46RZRbZjRFspEg==} - - brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - - braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} - - browser-stdout@1.3.1: - resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} - - bs58@4.0.1: - resolution: {integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==} - - buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - - buffer@6.0.3: - resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} - - bufferutil@4.0.8: - resolution: {integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==} - engines: {node: '>=6.14.2'} - - camelcase@6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} - - chai@4.5.0: - resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==} - engines: {node: '>=4'} - - chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - - check-error@1.0.3: - resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} - - chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} - - cliui@7.0.4: - resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} - - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - - debug@4.3.7: - resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - decamelize@4.0.0: - resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} - engines: {node: '>=10'} - - deep-eql@4.1.4: - resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==} - engines: {node: '>=6'} - - delay@5.0.0: - resolution: {integrity: sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==} - engines: {node: '>=10'} - - diff@3.5.0: - resolution: {integrity: sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==} - engines: {node: '>=0.3.1'} - - diff@5.2.0: - resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} - engines: {node: '>=0.3.1'} - - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - - es6-promise@4.2.8: - resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} - - es6-promisify@5.0.0: - resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==} - - escalade@3.2.0: - resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} - engines: {node: '>=6'} - - escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - - eventemitter3@5.0.1: - resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} - - eyes@0.1.8: - resolution: {integrity: sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==} - engines: {node: '> 0.1.90'} - - fast-stable-stringify@1.0.0: - resolution: {integrity: sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==} - - file-uri-to-path@1.0.0: - resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} - - fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} - - find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - - flat@5.0.2: - resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} - hasBin: true - - fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - - get-func-name@2.0.2: - resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} - - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - - glob@8.1.0: - resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} - engines: {node: '>=12'} - deprecated: Glob versions prior to v9 are no longer supported - - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - - he@1.2.0: - resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} - hasBin: true - - humanize-ms@1.2.1: - resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} - - ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - - inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. - - inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - - is-plain-obj@2.1.0: - resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} - engines: {node: '>=8'} - - is-unicode-supported@0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} - engines: {node: '>=10'} - - isomorphic-ws@4.0.1: - resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==} - peerDependencies: - ws: '*' - - jayson@4.1.2: - resolution: {integrity: sha512-5nzMWDHy6f+koZOuYsArh2AXs73NfWYVlFyJJuCedr93GpY+Ku8qq10ropSXVfHK+H0T6paA88ww+/dV+1fBNA==} - engines: {node: '>=8'} - hasBin: true - - js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true - - json-stringify-safe@5.0.1: - resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} - - json5@1.0.2: - resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} - hasBin: true - - jsonparse@1.3.1: - resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} - engines: {'0': node >= 0.2.0} - - locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - - log-symbols@4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} - engines: {node: '>=10'} - - loupe@2.3.7: - resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} - - make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - - minimatch@5.1.6: - resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} - engines: {node: '>=10'} - - minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - - mkdirp@0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} - hasBin: true - - mocha@10.8.2: - resolution: {integrity: sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==} - engines: {node: '>= 14.0.0'} - hasBin: true - - ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - - node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - - node-gyp-build@4.8.2: - resolution: {integrity: sha512-IRUxE4BVsHWXkV/SFOut4qTlagw2aM8T5/vnTsmrHJvVoKueJHRc/JaFND7QDDc61kLYUJ6qlZM3sqTSyx2dTw==} - hasBin: true - - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - - once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - - p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - - p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - - path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - - pathval@1.1.1: - resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} - - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - - randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - - regenerator-runtime@0.14.1: - resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - - require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - - rpc-websockets@9.0.4: - resolution: {integrity: sha512-yWZWN0M+bivtoNLnaDbtny4XchdAIF5Q4g/ZsC5UC61Ckbp0QczwO8fg44rV3uYmY4WHd+EZQbn90W1d8ojzqQ==} - - safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - - serialize-javascript@6.0.2: - resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} - - solana-bankrun-darwin-arm64@0.4.0: - resolution: {integrity: sha512-6dz78Teoz7ez/3lpRLDjktYLJb79FcmJk2me4/YaB8WiO6W43OdExU4h+d2FyuAryO2DgBPXaBoBNY/8J1HJmw==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - - solana-bankrun-darwin-universal@0.4.0: - resolution: {integrity: sha512-zSSw/Jx3KNU42pPMmrEWABd0nOwGJfsj7nm9chVZ3ae7WQg3Uty0hHAkn5NSDCj3OOiN0py9Dr1l9vmRJpOOxg==} - engines: {node: '>= 10'} - os: [darwin] - - solana-bankrun-darwin-x64@0.4.0: - resolution: {integrity: sha512-LWjs5fsgHFtyr7YdJR6r0Ho5zrtzI6CY4wvwPXr8H2m3b4pZe6RLIZjQtabCav4cguc14G0K8yQB2PTMuGub8w==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - - solana-bankrun-linux-x64-gnu@0.4.0: - resolution: {integrity: sha512-SrlVrb82UIxt21Zr/XZFHVV/h9zd2/nP25PMpLJVLD7Pgl2yhkhfi82xj3OjxoQqWe+zkBJ+uszA0EEKr67yNw==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - solana-bankrun-linux-x64-musl@0.4.0: - resolution: {integrity: sha512-Nv328ZanmURdYfcLL+jwB1oMzX4ZzK57NwIcuJjGlf0XSNLq96EoaO5buEiUTo4Ls7MqqMyLbClHcrPE7/aKyA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - solana-bankrun@0.4.0: - resolution: {integrity: sha512-NMmXUipPBkt8NgnyNO3SCnPERP6xT/AMNMBooljGA3+rG6NN8lmXJsKeLqQTiFsDeWD74U++QM/DgcueSWvrIg==} - engines: {node: '>= 10'} - - source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - - source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - - strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - - strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - - superstruct@2.0.2: - resolution: {integrity: sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A==} - engines: {node: '>=14.0.0'} - - supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - - supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} - - text-encoding-utf-8@1.0.2: - resolution: {integrity: sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==} - - through@2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - - tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - - ts-mocha@10.0.0: - resolution: {integrity: sha512-VRfgDO+iiuJFlNB18tzOfypJ21xn2xbuZyDvJvqpTbWgkAgD17ONGr8t+Tl8rcBtOBdjXp5e/Rk+d39f7XBHRw==} - engines: {node: '>= 6.X.X'} - hasBin: true - peerDependencies: - mocha: ^3.X.X || ^4.X.X || ^5.X.X || ^6.X.X || ^7.X.X || ^8.X.X || ^9.X.X || ^10.X.X - - ts-node@7.0.1: - resolution: {integrity: sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==} - engines: {node: '>=4.2.0'} - hasBin: true - - tsconfig-paths@3.15.0: - resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} - - tslib@2.8.0: - resolution: {integrity: sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==} - - type-detect@4.1.0: - resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==} - engines: {node: '>=4'} - - typescript@5.6.3: - resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} - engines: {node: '>=14.17'} - hasBin: true - - undici-types@6.19.8: - resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} - - utf-8-validate@5.0.10: - resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==} - engines: {node: '>=6.14.2'} - - uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - hasBin: true - - webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - - whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - - workerpool@6.5.1: - resolution: {integrity: sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==} - - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - - wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - - ws@7.5.10: - resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} - engines: {node: '>=8.3.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - ws@8.18.0: - resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - - yargs-parser@20.2.9: - resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} - engines: {node: '>=10'} - - yargs-unparser@2.0.0: - resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} - engines: {node: '>=10'} - - yargs@16.2.0: - resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} - engines: {node: '>=10'} - - yn@2.0.0: - resolution: {integrity: sha512-uTv8J/wiWTgUTg+9vLTi//leUl5vDQS6uii/emeTb2ssY7vl6QWf2fFbIIGjnhjvbdKlU0ed7QPgY1htTC86jQ==} - engines: {node: '>=4'} - - yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - -snapshots: - - '@babel/runtime@7.26.0': - dependencies: - regenerator-runtime: 0.14.1 - - '@noble/curves@1.6.0': - dependencies: - '@noble/hashes': 1.5.0 - - '@noble/hashes@1.5.0': {} - - '@solana/buffer-layout@4.0.1': - dependencies: - buffer: 6.0.3 - - '@solana/web3.js@1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10)': - dependencies: - '@babel/runtime': 7.26.0 - '@noble/curves': 1.6.0 - '@noble/hashes': 1.5.0 - '@solana/buffer-layout': 4.0.1 - agentkeepalive: 4.5.0 - bigint-buffer: 1.1.5 - bn.js: 5.2.1 - borsh: 0.7.0 - bs58: 4.0.1 - buffer: 6.0.3 - fast-stable-stringify: 1.0.0 - jayson: 4.1.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) - node-fetch: 2.7.0 - rpc-websockets: 9.0.4 - superstruct: 2.0.2 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - - '@swc/helpers@0.5.13': - dependencies: - tslib: 2.8.0 - - '@types/chai@4.3.20': {} - - '@types/connect@3.4.38': - dependencies: - '@types/node': 22.8.5 - - '@types/json5@0.0.29': - optional: true - - '@types/mocha@10.0.9': {} - - '@types/node@12.20.55': {} - - '@types/node@22.8.5': - dependencies: - undici-types: 6.19.8 - - '@types/uuid@8.3.4': {} - - '@types/ws@7.4.7': - dependencies: - '@types/node': 22.8.5 - - '@types/ws@8.5.12': - dependencies: - '@types/node': 22.8.5 - - JSONStream@1.3.5: - dependencies: - jsonparse: 1.3.1 - through: 2.3.8 - - agentkeepalive@4.5.0: - dependencies: - humanize-ms: 1.2.1 - - ansi-colors@4.1.3: {} - - ansi-regex@5.0.1: {} - - ansi-styles@4.3.0: - dependencies: - color-convert: 2.0.1 - - anymatch@3.1.3: - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - - argparse@2.0.1: {} - - arrify@1.0.1: {} - - assertion-error@1.1.0: {} - - balanced-match@1.0.2: {} - - base-x@3.0.10: - dependencies: - safe-buffer: 5.2.1 - - base64-js@1.5.1: {} - - bigint-buffer@1.1.5: - dependencies: - bindings: 1.5.0 - - binary-extensions@2.3.0: {} - - bindings@1.5.0: - dependencies: - file-uri-to-path: 1.0.0 - - bn.js@5.2.1: {} - - borsh@0.7.0: - dependencies: - bn.js: 5.2.1 - bs58: 4.0.1 - text-encoding-utf-8: 1.0.2 - - borsh@2.0.0: {} - - brace-expansion@2.0.1: - dependencies: - balanced-match: 1.0.2 - - braces@3.0.3: - dependencies: - fill-range: 7.1.1 - - browser-stdout@1.3.1: {} - - bs58@4.0.1: - dependencies: - base-x: 3.0.10 - - buffer-from@1.1.2: {} - - buffer@6.0.3: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - - bufferutil@4.0.8: - dependencies: - node-gyp-build: 4.8.2 - optional: true - - camelcase@6.3.0: {} - - chai@4.5.0: - dependencies: - assertion-error: 1.1.0 - check-error: 1.0.3 - deep-eql: 4.1.4 - get-func-name: 2.0.2 - loupe: 2.3.7 - pathval: 1.1.1 - type-detect: 4.1.0 - - chalk@4.1.2: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - - check-error@1.0.3: - dependencies: - get-func-name: 2.0.2 - - chokidar@3.6.0: - dependencies: - anymatch: 3.1.3 - braces: 3.0.3 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - - cliui@7.0.4: - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - - color-convert@2.0.1: - dependencies: - color-name: 1.1.4 - - color-name@1.1.4: {} - - commander@2.20.3: {} - - debug@4.3.7(supports-color@8.1.1): - dependencies: - ms: 2.1.3 - optionalDependencies: - supports-color: 8.1.1 - - decamelize@4.0.0: {} - - deep-eql@4.1.4: - dependencies: - type-detect: 4.1.0 - - delay@5.0.0: {} - - diff@3.5.0: {} - - diff@5.2.0: {} - - emoji-regex@8.0.0: {} - - es6-promise@4.2.8: {} - - es6-promisify@5.0.0: - dependencies: - es6-promise: 4.2.8 - - escalade@3.2.0: {} - - escape-string-regexp@4.0.0: {} - - eventemitter3@5.0.1: {} - - eyes@0.1.8: {} - - fast-stable-stringify@1.0.0: {} - - file-uri-to-path@1.0.0: {} - - fill-range@7.1.1: - dependencies: - to-regex-range: 5.0.1 - - find-up@5.0.0: - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - - flat@5.0.2: {} - - fs.realpath@1.0.0: {} - - fsevents@2.3.3: - optional: true - - get-caller-file@2.0.5: {} - - get-func-name@2.0.2: {} - - glob-parent@5.1.2: - dependencies: - is-glob: 4.0.3 - - glob@8.1.0: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 5.1.6 - once: 1.4.0 - - has-flag@4.0.0: {} - - he@1.2.0: {} - - humanize-ms@1.2.1: - dependencies: - ms: 2.1.3 - - ieee754@1.2.1: {} - - inflight@1.0.6: - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - - inherits@2.0.4: {} - - is-binary-path@2.1.0: - dependencies: - binary-extensions: 2.3.0 - - is-extglob@2.1.1: {} - - is-fullwidth-code-point@3.0.0: {} - - is-glob@4.0.3: - dependencies: - is-extglob: 2.1.1 - - is-number@7.0.0: {} - - is-plain-obj@2.1.0: {} - - is-unicode-supported@0.1.0: {} - - isomorphic-ws@4.0.1(ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10)): - dependencies: - ws: 7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) - - jayson@4.1.2(bufferutil@4.0.8)(utf-8-validate@5.0.10): - dependencies: - '@types/connect': 3.4.38 - '@types/node': 12.20.55 - '@types/ws': 7.4.7 - JSONStream: 1.3.5 - commander: 2.20.3 - delay: 5.0.0 - es6-promisify: 5.0.0 - eyes: 0.1.8 - isomorphic-ws: 4.0.1(ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10)) - json-stringify-safe: 5.0.1 - uuid: 8.3.2 - ws: 7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - js-yaml@4.1.0: - dependencies: - argparse: 2.0.1 - - json-stringify-safe@5.0.1: {} - - json5@1.0.2: - dependencies: - minimist: 1.2.8 - optional: true - - jsonparse@1.3.1: {} - - locate-path@6.0.0: - dependencies: - p-locate: 5.0.0 - - log-symbols@4.1.0: - dependencies: - chalk: 4.1.2 - is-unicode-supported: 0.1.0 - - loupe@2.3.7: - dependencies: - get-func-name: 2.0.2 - - make-error@1.3.6: {} - - minimatch@5.1.6: - dependencies: - brace-expansion: 2.0.1 - - minimist@1.2.8: {} - - mkdirp@0.5.6: - dependencies: - minimist: 1.2.8 - - mocha@10.8.2: - dependencies: - ansi-colors: 4.1.3 - browser-stdout: 1.3.1 - chokidar: 3.6.0 - debug: 4.3.7(supports-color@8.1.1) - diff: 5.2.0 - escape-string-regexp: 4.0.0 - find-up: 5.0.0 - glob: 8.1.0 - he: 1.2.0 - js-yaml: 4.1.0 - log-symbols: 4.1.0 - minimatch: 5.1.6 - ms: 2.1.3 - serialize-javascript: 6.0.2 - strip-json-comments: 3.1.1 - supports-color: 8.1.1 - workerpool: 6.5.1 - yargs: 16.2.0 - yargs-parser: 20.2.9 - yargs-unparser: 2.0.0 - - ms@2.1.3: {} - - node-fetch@2.7.0: - dependencies: - whatwg-url: 5.0.0 - - node-gyp-build@4.8.2: - optional: true - - normalize-path@3.0.0: {} - - once@1.4.0: - dependencies: - wrappy: 1.0.2 - - p-limit@3.1.0: - dependencies: - yocto-queue: 0.1.0 - - p-locate@5.0.0: - dependencies: - p-limit: 3.1.0 - - path-exists@4.0.0: {} - - pathval@1.1.1: {} - - picomatch@2.3.1: {} - - randombytes@2.1.0: - dependencies: - safe-buffer: 5.2.1 - - readdirp@3.6.0: - dependencies: - picomatch: 2.3.1 - - regenerator-runtime@0.14.1: {} - - require-directory@2.1.1: {} - - rpc-websockets@9.0.4: - dependencies: - '@swc/helpers': 0.5.13 - '@types/uuid': 8.3.4 - '@types/ws': 8.5.12 - buffer: 6.0.3 - eventemitter3: 5.0.1 - uuid: 8.3.2 - ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - optionalDependencies: - bufferutil: 4.0.8 - utf-8-validate: 5.0.10 - - safe-buffer@5.2.1: {} - - serialize-javascript@6.0.2: - dependencies: - randombytes: 2.1.0 - - solana-bankrun-darwin-arm64@0.4.0: - optional: true - - solana-bankrun-darwin-universal@0.4.0: - optional: true - - solana-bankrun-darwin-x64@0.4.0: - optional: true - - solana-bankrun-linux-x64-gnu@0.4.0: - optional: true - - solana-bankrun-linux-x64-musl@0.4.0: - optional: true - - solana-bankrun@0.4.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): - dependencies: - '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) - bs58: 4.0.1 - optionalDependencies: - solana-bankrun-darwin-arm64: 0.4.0 - solana-bankrun-darwin-universal: 0.4.0 - solana-bankrun-darwin-x64: 0.4.0 - solana-bankrun-linux-x64-gnu: 0.4.0 - solana-bankrun-linux-x64-musl: 0.4.0 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - - source-map-support@0.5.21: - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - - source-map@0.6.1: {} - - string-width@4.2.3: - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - - strip-ansi@6.0.1: - dependencies: - ansi-regex: 5.0.1 - - strip-bom@3.0.0: - optional: true - - strip-json-comments@3.1.1: {} - - superstruct@2.0.2: {} - - supports-color@7.2.0: - dependencies: - has-flag: 4.0.0 - - supports-color@8.1.1: - dependencies: - has-flag: 4.0.0 - - text-encoding-utf-8@1.0.2: {} - - through@2.3.8: {} - - to-regex-range@5.0.1: - dependencies: - is-number: 7.0.0 - - tr46@0.0.3: {} - - ts-mocha@10.0.0(mocha@10.8.2): - dependencies: - mocha: 10.8.2 - ts-node: 7.0.1 - optionalDependencies: - tsconfig-paths: 3.15.0 - - ts-node@7.0.1: - dependencies: - arrify: 1.0.1 - buffer-from: 1.1.2 - diff: 3.5.0 - make-error: 1.3.6 - minimist: 1.2.8 - mkdirp: 0.5.6 - source-map-support: 0.5.21 - yn: 2.0.0 - - tsconfig-paths@3.15.0: - dependencies: - '@types/json5': 0.0.29 - json5: 1.0.2 - minimist: 1.2.8 - strip-bom: 3.0.0 - optional: true - - tslib@2.8.0: {} - - type-detect@4.1.0: {} - - typescript@5.6.3: {} - - undici-types@6.19.8: {} - - utf-8-validate@5.0.10: - dependencies: - node-gyp-build: 4.8.2 - optional: true - - uuid@8.3.2: {} - - webidl-conversions@3.0.1: {} - - whatwg-url@5.0.0: - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - - workerpool@6.5.1: {} - - wrap-ansi@7.0.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - wrappy@1.0.2: {} - - ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10): - optionalDependencies: - bufferutil: 4.0.8 - utf-8-validate: 5.0.10 - - ws@8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): - optionalDependencies: - bufferutil: 4.0.8 - utf-8-validate: 5.0.10 - - y18n@5.0.8: {} - - yargs-parser@20.2.9: {} - - yargs-unparser@2.0.0: - dependencies: - camelcase: 6.3.0 - decamelize: 4.0.0 - flat: 5.0.2 - is-plain-obj: 2.1.0 - - yargs@16.2.0: - dependencies: - cliui: 7.0.4 - escalade: 3.2.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 20.2.9 - - yn@2.0.0: {} - - yocto-queue@0.1.0: {} diff --git a/basics/pda-rent-payer/steel/program/Cargo.toml b/basics/pda-rent-payer/steel/program/Cargo.toml deleted file mode 100644 index 79ae1fde0..000000000 --- a/basics/pda-rent-payer/steel/program/Cargo.toml +++ /dev/null @@ -1,26 +0,0 @@ -[package] -name = "pda-rent-payer-program" -description = "" -version.workspace = true -edition.workspace = true -license.workspace = true -homepage.workspace = true -documentation.workspace = true -repository.workspace = true -readme.workspace = true -keywords.workspace = true - -[lib] -crate-type = ["cdylib", "lib"] - -[dependencies] -borsh.workspace = true -pda-rent-payer-api.workspace = true -solana-program.workspace = true -steel.workspace = true - -[dev-dependencies] -base64 = "0.21" -rand = "0.8.5" -solana-program-test = "1.18" -solana-sdk = "1.18" diff --git a/basics/pda-rent-payer/steel/program/src/create_new_account.rs b/basics/pda-rent-payer/steel/program/src/create_new_account.rs deleted file mode 100644 index 72a1b112d..000000000 --- a/basics/pda-rent-payer/steel/program/src/create_new_account.rs +++ /dev/null @@ -1,38 +0,0 @@ -use pda_rent_payer_api::prelude::*; -use solana_program::msg; -use steel::sysvar::rent::Rent; -use steel::*; - -pub fn process_create_account(accounts: &[AccountInfo<'_>]) -> ProgramResult { - // Load accounts - let [rent_vault_info, new_account_info, system_program] = accounts else { - return Err(ProgramError::NotEnoughAccountKeys); - }; - - // Validate accounts - new_account_info.is_signer()?.is_empty()?.is_writable()?; - rent_vault_info - .is_writable()? - .has_seeds(&[RENT_VAULT], &pda_rent_payer_api::ID)?; - system_program.is_program(&system_program::ID)?; - - let vault_balance = rent_vault_info.lamports(); - - msg!("Vault balance: {}", vault_balance); - // First we get the lamports required for rent - // assuming this account has no inner data - let lamports_required_for_rent = (Rent::get()?).minimum_balance(0); - - if vault_balance < lamports_required_for_rent { - return Err(ProgramError::InsufficientFunds); - } - - // Then we create a new account by simply sending a - // token amount to the new account. - rent_vault_info.send(lamports_required_for_rent, new_account_info); - - msg!("Created new account."); - msg!("New account: {:?}", new_account_info.key); - - Ok(()) -} diff --git a/basics/pda-rent-payer/steel/program/src/init_rent_vault.rs b/basics/pda-rent-payer/steel/program/src/init_rent_vault.rs deleted file mode 100644 index 54b74dfeb..000000000 --- a/basics/pda-rent-payer/steel/program/src/init_rent_vault.rs +++ /dev/null @@ -1,61 +0,0 @@ -use borsh::BorshDeserialize; -use pda_rent_payer_api::prelude::*; -use solana_program::msg; -use steel::*; - -pub fn process_initialize_vault(accounts: &[AccountInfo<'_>], data: &[u8]) -> ProgramResult { - // Parse args - let args = InitializeRentVault::try_from_slice(data)?; - - // Load and validate accounts. - let [payer_info, rent_vault_info, system_program] = accounts else { - return Err(ProgramError::NotEnoughAccountKeys); - }; - payer_info.is_signer()?; - rent_vault_info - .is_empty()? - .is_writable()? - .has_seeds(&[RENT_VAULT], &pda_rent_payer_api::ID)?; - system_program.is_program(&system_program::ID)?; - - // Initialize vault. - create_account::( - rent_vault_info, - system_program, - payer_info, - &pda_rent_payer_api::ID, - &[RENT_VAULT], - )?; - - let (_, bump) = rent_vault_pda(); - - // Get account to see if it's created - let _vault = rent_vault_info.as_account_mut::(&pda_rent_payer_api::ID)?; - - let transfer = solana_program::program::invoke_signed( - &solana_program::system_instruction::transfer( - payer_info.key, - rent_vault_info.key, - args.amount, - ), - &[ - payer_info.clone(), - rent_vault_info.clone(), - system_program.clone(), - ], - &[&[RENT_VAULT, &[bump]]], - ); - - let vault_balance = rent_vault_info.lamports(); - msg!("Updated vault balance: {}", vault_balance); - - match transfer { - Ok(_) => (), - Err(e) => return Err(e), - } - - msg!("Initialized rent vault."); - msg!("PDA: {:?}", rent_vault_info.key); - - Ok(()) -} diff --git a/basics/pda-rent-payer/steel/program/src/lib.rs b/basics/pda-rent-payer/steel/program/src/lib.rs deleted file mode 100644 index a325d17dc..000000000 --- a/basics/pda-rent-payer/steel/program/src/lib.rs +++ /dev/null @@ -1,27 +0,0 @@ -mod create_new_account; -mod init_rent_vault; - -use create_new_account::*; -use init_rent_vault::*; - -use pda_rent_payer_api::prelude::*; -use steel::*; - -pub fn process_instruction( - program_id: &Pubkey, - accounts: &[AccountInfo], - data: &[u8], -) -> ProgramResult { - // Parse instruction automatically detects which instruction is being called - // based on the discriminator and returns the instruction and the data - let (ix, data) = parse_instruction(&pda_rent_payer_api::ID, program_id, data)?; - - match ix { - PdaRentPayerInstruction::InitializeRentVault => process_initialize_vault(accounts, data)?, - PdaRentPayerInstruction::CreateNewAccount => process_create_account(accounts)?, - } - - Ok(()) -} - -entrypoint!(process_instruction); diff --git a/basics/pda-rent-payer/steel/tests/main.test.ts b/basics/pda-rent-payer/steel/tests/main.test.ts deleted file mode 100644 index d2947e9da..000000000 --- a/basics/pda-rent-payer/steel/tests/main.test.ts +++ /dev/null @@ -1,122 +0,0 @@ -import { type Blockhash, Keypair, LAMPORTS_PER_SOL, PublicKey, SystemProgram, Transaction, TransactionInstruction } from '@solana/web3.js'; -import * as borsh from 'borsh'; -import { before, describe, it } from 'mocha'; -import { type BanksClient, type ProgramTestContext, start } from 'solana-bankrun'; - -// Constants -const PROGRAM_ID = new PublicKey('HK5TuboXztZv7anSa3GptyCZ5wMYiqbY8kNSVEtqWDuD'); -const VAULT_SEED = Buffer.from('rent_vault'); -const LOAD_LAMPORTS = 1 * LAMPORTS_PER_SOL; // 1 SOL - -const instructionDiscriminators = { - InitializeRentVault: 0, - CreateNewAccount: 1, -}; - -describe('Pay the rent for an account using a PDA', () => { - // Helper classes and methods to serialize instruction data - class Assignable { - constructor(properties) { - for (const [key, value] of Object.entries(properties)) { - this[key] = value; - } - } - } - - class InitializeRentVault extends Assignable { - toBuffer() { - return Buffer.from(borsh.serialize(InitRentVaultSchema, this)); - } - } - const InitRentVaultSchema = { - struct: { - instruction: 'u8', - fund_lamports: 'u64', - }, - }; - - class CreateNewAccount extends Assignable { - toBuffer() { - return Buffer.from(borsh.serialize(CreateNewAccountSchema, this)); - } - } - const CreateNewAccountSchema = { - struct: { - instruction: 'u8', - }, - }; - - const [vault_pda, _] = PublicKey.findProgramAddressSync([VAULT_SEED], PROGRAM_ID); - - let context: ProgramTestContext; - let client: BanksClient; - let payer: Keypair; - - before(async () => { - context = await start([{ name: 'pda_rent_payer_program', programId: PROGRAM_ID }], []); - client = context.banksClient; - payer = context.payer; - }); - - it('should initialize rent vault PDA', async () => { - const ixdata = new InitializeRentVault({ - instruction: instructionDiscriminators.InitializeRentVault, - fund_lamports: BigInt(LOAD_LAMPORTS), - }); - const data = ixdata.toBuffer(); - - const Createix = new TransactionInstruction({ - keys: [ - { pubkey: payer.publicKey, isSigner: true, isWritable: false }, - { pubkey: vault_pda, isSigner: false, isWritable: true }, - { pubkey: SystemProgram.programId, isSigner: false, isWritable: false }, - ], - programId: PROGRAM_ID, - data, - }); - - // const Fundix = SystemProgram.transfer({ - // fromPubkey: payer.publicKey, - // toPubkey: vault_pda, - // lamports: LOAD_LAMPORTS, - // }); - - const tx = new Transaction(); - tx.recentBlockhash = context.lastBlockhash; - tx.add(Createix).sign(payer); - - // Process Transaction with all the instructions - await client.processTransaction(tx); - }); - - it('should create new account using rent vault', async () => { - const newAccount = Keypair.generate(); - - const data = new CreateNewAccount({ - instruction: instructionDiscriminators.CreateNewAccount, - }).toBuffer(); - - const ix = new TransactionInstruction({ - keys: [ - { pubkey: vault_pda, isSigner: false, isWritable: true }, - { pubkey: newAccount.publicKey, isSigner: true, isWritable: true }, - { pubkey: SystemProgram.programId, isSigner: false, isWritable: false }, - ], - programId: PROGRAM_ID, - data, - }); - - const tx = new Transaction(); - tx.recentBlockhash = context.lastBlockhash; - tx.add(ix).sign(newAccount); - - // Process Transaction with all the instructions - await client.processTransaction(tx); - - // assert( - // transaction.logMessages[3].startsWith( - // "Program log: Created new account!", - // ), - // ); - }); -}); diff --git a/basics/pda-rent-payer/steel/tsconfig.json b/basics/pda-rent-payer/steel/tsconfig.json deleted file mode 100644 index f7e571235..000000000 --- a/basics/pda-rent-payer/steel/tsconfig.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "compilerOptions": { - "types": ["mocha", "chai", "node"], - "typeRoots": ["./node_modules/@types"], - "lib": ["es2015"], - "module": "commonjs", - "target": "es6", - "moduleResolution": "node", - "esModuleInterop": true, - "strict": true, - "sourceMap": true, - "outDir": "./dist", - "baseUrl": "." - } -} diff --git a/basics/processing-instructions/steel/.gitignore b/basics/processing-instructions/steel/.gitignore deleted file mode 100644 index 052739dbc..000000000 --- a/basics/processing-instructions/steel/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -target -test-ledger diff --git a/basics/processing-instructions/steel/Cargo.toml b/basics/processing-instructions/steel/Cargo.toml deleted file mode 100644 index 75d93bc2c..000000000 --- a/basics/processing-instructions/steel/Cargo.toml +++ /dev/null @@ -1,21 +0,0 @@ -[workspace] -resolver = "2" -members = ["api", "program"] - -[workspace.package] -version = "0.1.0" -edition = "2021" -license = "Apache-2.0" -homepage = "" -documentation = "" -respository = "" -readme = "./README.md" -keywords = ["solana"] - -[workspace.dependencies] -processing-instructions-api = { path = "./api", version = "0.1.0" } -bytemuck = "1.14" -num_enum = "0.7" -solana-program = "2.1" -steel = "3.0" -thiserror = "1.0" diff --git a/basics/processing-instructions/steel/README.md b/basics/processing-instructions/steel/README.md deleted file mode 100644 index a8d93f26f..000000000 --- a/basics/processing-instructions/steel/README.md +++ /dev/null @@ -1,25 +0,0 @@ -# ProcessingInstructions - -See the [Processing instructions's README](../README.md) for more information. In our case, we cannot use Borsh for serialization, as we're constrained by the `Steel` framework dependency on PODs (Plain Old Data). - -## Building - -```sh -cargo build-sbf - -``` -## Tests - -This project includes both: -- Rust tests: [`program/tests`](/program/tests) directory. -- Node.js tests using [Bankrun](https://kevinheavey.github.io/solana-bankrun/): [`tests`](/tests) directory. - -```sh -# rust tests -cargo test-sbf - -# node tests -pnpm build-and-test # this will also build the program -#or -pnpm test # if you have already built the program -``` diff --git a/basics/processing-instructions/steel/api/Cargo.toml b/basics/processing-instructions/steel/api/Cargo.toml deleted file mode 100644 index 3c8ab69c0..000000000 --- a/basics/processing-instructions/steel/api/Cargo.toml +++ /dev/null @@ -1,11 +0,0 @@ -[package] -name = "processing-instructions-api" -version = "0.1.0" -edition = "2021" - -[dependencies] -bytemuck.workspace = true -num_enum.workspace = true -solana-program.workspace = true -steel.workspace = true -thiserror.workspace = true diff --git a/basics/processing-instructions/steel/api/src/instruction.rs b/basics/processing-instructions/steel/api/src/instruction.rs deleted file mode 100644 index ac608909d..000000000 --- a/basics/processing-instructions/steel/api/src/instruction.rs +++ /dev/null @@ -1,55 +0,0 @@ -use steel::*; - -#[repr(u8)] -#[derive(Clone, Copy, Debug, Eq, PartialEq, TryFromPrimitive)] -pub enum ProcessingInstructionsInstruction { - GoToThePark = 0, -} - -#[repr(C)] -#[derive(Clone, Copy, Debug, Pod, Zeroable, PartialEq)] -pub struct GoToTheParkData { - pub name: [u8; 64], - pub height: [u8; 8], -} - -impl_to_bytes!(GoToTheParkData); - -fn string_to_bytes(s: &str) -> [u8; 64] { - let mut bytes = [0; 64]; - let s_bytes = s.as_bytes(); - let len = s_bytes.len().min(64); - bytes[..len].copy_from_slice(&s_bytes[..len]); - bytes -} - -impl GoToTheParkData { - pub fn new(name: String, height: u64) -> Self { - Self { - name: string_to_bytes(&name), - height: height.to_le_bytes(), - } - } - - pub fn try_from_bytes(data: &[u8]) -> Result<&Self, ProgramError> { - bytemuck::try_from_bytes(data).or(Err(ProgramError::InvalidInstructionData)) - } - - pub fn name(&self) -> String { - String::from_utf8_lossy(&self.name) - .trim_end_matches(char::from(0)) - .to_string() - } - - pub fn height(&self) -> u64 { - u64::from_le_bytes(self.height) - } -} - -#[repr(C)] -#[derive(Clone, Copy, Debug, Pod, Zeroable)] -pub struct GoToThePark { - pub data: GoToTheParkData, -} - -instruction!(ProcessingInstructionsInstruction, GoToThePark); diff --git a/basics/processing-instructions/steel/api/src/lib.rs b/basics/processing-instructions/steel/api/src/lib.rs deleted file mode 100644 index 47ed892e6..000000000 --- a/basics/processing-instructions/steel/api/src/lib.rs +++ /dev/null @@ -1,12 +0,0 @@ -pub mod instruction; -pub mod sdk; - -pub mod prelude { - pub use crate::instruction::*; - pub use crate::sdk::*; -} - -use steel::*; - -// TODO Set program id -declare_id!("z7msBPQHDJjTvdQRoEcKyENgXDhSRYeHieN1ZMTqo35"); diff --git a/basics/processing-instructions/steel/api/src/sdk.rs b/basics/processing-instructions/steel/api/src/sdk.rs deleted file mode 100644 index 0cf5afd7b..000000000 --- a/basics/processing-instructions/steel/api/src/sdk.rs +++ /dev/null @@ -1,11 +0,0 @@ -use steel::*; - -use crate::prelude::*; - -pub fn go_to_the_park(signer: Pubkey, data: GoToTheParkData) -> Instruction { - Instruction { - program_id: crate::ID, - accounts: vec![AccountMeta::new(signer, true)], - data: GoToThePark { data }.to_bytes(), - } -} diff --git a/basics/processing-instructions/steel/package.json b/basics/processing-instructions/steel/package.json deleted file mode 100644 index 73d51707e..000000000 --- a/basics/processing-instructions/steel/package.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "name": "processing-instructions", - "version": "1.0.0", - "description": "", - "scripts": { - "test": "pnpm ts-mocha -p ./tsconfig.json -t 1000000 ./tests/*.test.ts", - "build-and-test": "cargo build-sbf --manifest-path=./program/Cargo.toml --sbf-out-dir=./tests/fixtures && pnpm test", - "build": "cargo build-sbf --manifest-path=./program/Cargo.toml --sbf-out-dir=./program/target/so", - "deploy": "solana program deploy ./program/target/so/processing_instructions_program.so" - }, - "keywords": [], - "author": "", - "license": "ISC", - "dependencies": { - "@solana/web3.js": "^1.95.4" - }, - "devDependencies": { - "@types/chai": "^4.3.7", - "@types/mocha": "10.0.9", - "@types/node": "^22.7.4", - "chai": "^4.3.7", - "mocha": "10.7.3", - "solana-bankrun": "0.4.0", - "ts-mocha": "^10.0.0", - "typescript": "5.6.3" - } -} diff --git a/basics/processing-instructions/steel/pnpm-lock.yaml b/basics/processing-instructions/steel/pnpm-lock.yaml deleted file mode 100644 index 08f17fae3..000000000 --- a/basics/processing-instructions/steel/pnpm-lock.yaml +++ /dev/null @@ -1,1260 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -importers: - - .: - dependencies: - '@solana/web3.js': - specifier: ^1.95.4 - version: 1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) - devDependencies: - '@types/chai': - specifier: ^4.3.7 - version: 4.3.20 - '@types/mocha': - specifier: 10.0.9 - version: 10.0.9 - '@types/node': - specifier: ^22.7.4 - version: 22.7.7 - chai: - specifier: ^4.3.7 - version: 4.5.0 - mocha: - specifier: 10.7.3 - version: 10.7.3 - solana-bankrun: - specifier: 0.4.0 - version: 0.4.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - ts-mocha: - specifier: ^10.0.0 - version: 10.0.0(mocha@10.7.3) - typescript: - specifier: 5.6.3 - version: 5.6.3 - -packages: - - '@babel/runtime@7.25.7': - resolution: {integrity: sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w==} - engines: {node: '>=6.9.0'} - - '@noble/curves@1.6.0': - resolution: {integrity: sha512-TlaHRXDehJuRNR9TfZDNQ45mMEd5dwUwmicsafcIX4SsNiqnCHKjE/1alYPd/lDRVhxdhUAlv8uEhMCI5zjIJQ==} - engines: {node: ^14.21.3 || >=16} - - '@noble/hashes@1.5.0': - resolution: {integrity: sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==} - engines: {node: ^14.21.3 || >=16} - - '@solana/buffer-layout@4.0.1': - resolution: {integrity: sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==} - engines: {node: '>=5.10'} - - '@solana/web3.js@1.95.4': - resolution: {integrity: sha512-sdewnNEA42ZSMxqkzdwEWi6fDgzwtJHaQa5ndUGEJYtoOnM6X5cvPmjoTUp7/k7bRrVAxfBgDnvQQHD6yhlLYw==} - - '@swc/helpers@0.5.13': - resolution: {integrity: sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==} - - '@types/chai@4.3.20': - resolution: {integrity: sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==} - - '@types/connect@3.4.38': - resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} - - '@types/json5@0.0.29': - resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - - '@types/mocha@10.0.9': - resolution: {integrity: sha512-sicdRoWtYevwxjOHNMPTl3vSfJM6oyW8o1wXeI7uww6b6xHg8eBznQDNSGBCDJmsE8UMxP05JgZRtsKbTqt//Q==} - - '@types/node@12.20.55': - resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - - '@types/node@22.7.7': - resolution: {integrity: sha512-SRxCrrg9CL/y54aiMCG3edPKdprgMVGDXjA3gB8UmmBW5TcXzRUYAh8EWzTnSJFAd1rgImPELza+A3bJ+qxz8Q==} - - '@types/uuid@8.3.4': - resolution: {integrity: sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==} - - '@types/ws@7.4.7': - resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==} - - '@types/ws@8.5.12': - resolution: {integrity: sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==} - - JSONStream@1.3.5: - resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} - hasBin: true - - agentkeepalive@4.5.0: - resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} - engines: {node: '>= 8.0.0'} - - ansi-colors@4.1.3: - resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} - engines: {node: '>=6'} - - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - - argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - - arrify@1.0.1: - resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} - engines: {node: '>=0.10.0'} - - assertion-error@1.1.0: - resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} - - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - base-x@3.0.10: - resolution: {integrity: sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==} - - base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - - bigint-buffer@1.1.5: - resolution: {integrity: sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA==} - engines: {node: '>= 10.0.0'} - - binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} - - bindings@1.5.0: - resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} - - bn.js@5.2.1: - resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} - - borsh@0.7.0: - resolution: {integrity: sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==} - - brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - - braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} - - browser-stdout@1.3.1: - resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} - - bs58@4.0.1: - resolution: {integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==} - - buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - - buffer@6.0.3: - resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} - - bufferutil@4.0.8: - resolution: {integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==} - engines: {node: '>=6.14.2'} - - camelcase@6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} - - chai@4.5.0: - resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==} - engines: {node: '>=4'} - - chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - - check-error@1.0.3: - resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} - - chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} - - cliui@7.0.4: - resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} - - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - - debug@4.3.7: - resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - decamelize@4.0.0: - resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} - engines: {node: '>=10'} - - deep-eql@4.1.4: - resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==} - engines: {node: '>=6'} - - delay@5.0.0: - resolution: {integrity: sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==} - engines: {node: '>=10'} - - diff@3.5.0: - resolution: {integrity: sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==} - engines: {node: '>=0.3.1'} - - diff@5.2.0: - resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} - engines: {node: '>=0.3.1'} - - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - - es6-promise@4.2.8: - resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} - - es6-promisify@5.0.0: - resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==} - - escalade@3.2.0: - resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} - engines: {node: '>=6'} - - escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - - eventemitter3@5.0.1: - resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} - - eyes@0.1.8: - resolution: {integrity: sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==} - engines: {node: '> 0.1.90'} - - fast-stable-stringify@1.0.0: - resolution: {integrity: sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==} - - file-uri-to-path@1.0.0: - resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} - - fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} - - find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - - flat@5.0.2: - resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} - hasBin: true - - fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - - get-func-name@2.0.2: - resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} - - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - - glob@8.1.0: - resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} - engines: {node: '>=12'} - deprecated: Glob versions prior to v9 are no longer supported - - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - - he@1.2.0: - resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} - hasBin: true - - humanize-ms@1.2.1: - resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} - - ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - - inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. - - inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - - is-plain-obj@2.1.0: - resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} - engines: {node: '>=8'} - - is-unicode-supported@0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} - engines: {node: '>=10'} - - isomorphic-ws@4.0.1: - resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==} - peerDependencies: - ws: '*' - - jayson@4.1.2: - resolution: {integrity: sha512-5nzMWDHy6f+koZOuYsArh2AXs73NfWYVlFyJJuCedr93GpY+Ku8qq10ropSXVfHK+H0T6paA88ww+/dV+1fBNA==} - engines: {node: '>=8'} - hasBin: true - - js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true - - json-stringify-safe@5.0.1: - resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} - - json5@1.0.2: - resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} - hasBin: true - - jsonparse@1.3.1: - resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} - engines: {'0': node >= 0.2.0} - - locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - - log-symbols@4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} - engines: {node: '>=10'} - - loupe@2.3.7: - resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} - - make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - - minimatch@5.1.6: - resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} - engines: {node: '>=10'} - - minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - - mkdirp@0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} - hasBin: true - - mocha@10.7.3: - resolution: {integrity: sha512-uQWxAu44wwiACGqjbPYmjo7Lg8sFrS3dQe7PP2FQI+woptP4vZXSMcfMyFL/e1yFEeEpV4RtyTpZROOKmxis+A==} - engines: {node: '>= 14.0.0'} - hasBin: true - - ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - - node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - - node-gyp-build@4.8.2: - resolution: {integrity: sha512-IRUxE4BVsHWXkV/SFOut4qTlagw2aM8T5/vnTsmrHJvVoKueJHRc/JaFND7QDDc61kLYUJ6qlZM3sqTSyx2dTw==} - hasBin: true - - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - - once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - - p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - - p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - - path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - - pathval@1.1.1: - resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} - - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - - randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - - regenerator-runtime@0.14.1: - resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - - require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - - rpc-websockets@9.0.4: - resolution: {integrity: sha512-yWZWN0M+bivtoNLnaDbtny4XchdAIF5Q4g/ZsC5UC61Ckbp0QczwO8fg44rV3uYmY4WHd+EZQbn90W1d8ojzqQ==} - - safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - - serialize-javascript@6.0.2: - resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} - - solana-bankrun-darwin-arm64@0.4.0: - resolution: {integrity: sha512-6dz78Teoz7ez/3lpRLDjktYLJb79FcmJk2me4/YaB8WiO6W43OdExU4h+d2FyuAryO2DgBPXaBoBNY/8J1HJmw==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - - solana-bankrun-darwin-universal@0.4.0: - resolution: {integrity: sha512-zSSw/Jx3KNU42pPMmrEWABd0nOwGJfsj7nm9chVZ3ae7WQg3Uty0hHAkn5NSDCj3OOiN0py9Dr1l9vmRJpOOxg==} - engines: {node: '>= 10'} - os: [darwin] - - solana-bankrun-darwin-x64@0.4.0: - resolution: {integrity: sha512-LWjs5fsgHFtyr7YdJR6r0Ho5zrtzI6CY4wvwPXr8H2m3b4pZe6RLIZjQtabCav4cguc14G0K8yQB2PTMuGub8w==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - - solana-bankrun-linux-x64-gnu@0.4.0: - resolution: {integrity: sha512-SrlVrb82UIxt21Zr/XZFHVV/h9zd2/nP25PMpLJVLD7Pgl2yhkhfi82xj3OjxoQqWe+zkBJ+uszA0EEKr67yNw==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - solana-bankrun-linux-x64-musl@0.4.0: - resolution: {integrity: sha512-Nv328ZanmURdYfcLL+jwB1oMzX4ZzK57NwIcuJjGlf0XSNLq96EoaO5buEiUTo4Ls7MqqMyLbClHcrPE7/aKyA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - solana-bankrun@0.4.0: - resolution: {integrity: sha512-NMmXUipPBkt8NgnyNO3SCnPERP6xT/AMNMBooljGA3+rG6NN8lmXJsKeLqQTiFsDeWD74U++QM/DgcueSWvrIg==} - engines: {node: '>= 10'} - - source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - - source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - - strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - - strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - - superstruct@2.0.2: - resolution: {integrity: sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A==} - engines: {node: '>=14.0.0'} - - supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - - supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} - - text-encoding-utf-8@1.0.2: - resolution: {integrity: sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==} - - through@2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - - tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - - ts-mocha@10.0.0: - resolution: {integrity: sha512-VRfgDO+iiuJFlNB18tzOfypJ21xn2xbuZyDvJvqpTbWgkAgD17ONGr8t+Tl8rcBtOBdjXp5e/Rk+d39f7XBHRw==} - engines: {node: '>= 6.X.X'} - hasBin: true - peerDependencies: - mocha: ^3.X.X || ^4.X.X || ^5.X.X || ^6.X.X || ^7.X.X || ^8.X.X || ^9.X.X || ^10.X.X - - ts-node@7.0.1: - resolution: {integrity: sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==} - engines: {node: '>=4.2.0'} - hasBin: true - - tsconfig-paths@3.15.0: - resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} - - tslib@2.8.0: - resolution: {integrity: sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==} - - type-detect@4.1.0: - resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==} - engines: {node: '>=4'} - - typescript@5.6.3: - resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} - engines: {node: '>=14.17'} - hasBin: true - - undici-types@6.19.8: - resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} - - utf-8-validate@5.0.10: - resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==} - engines: {node: '>=6.14.2'} - - uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - hasBin: true - - webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - - whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - - workerpool@6.5.1: - resolution: {integrity: sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==} - - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - - wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - - ws@7.5.10: - resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} - engines: {node: '>=8.3.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - ws@8.18.0: - resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - - yargs-parser@20.2.9: - resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} - engines: {node: '>=10'} - - yargs-unparser@2.0.0: - resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} - engines: {node: '>=10'} - - yargs@16.2.0: - resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} - engines: {node: '>=10'} - - yn@2.0.0: - resolution: {integrity: sha512-uTv8J/wiWTgUTg+9vLTi//leUl5vDQS6uii/emeTb2ssY7vl6QWf2fFbIIGjnhjvbdKlU0ed7QPgY1htTC86jQ==} - engines: {node: '>=4'} - - yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - -snapshots: - - '@babel/runtime@7.25.7': - dependencies: - regenerator-runtime: 0.14.1 - - '@noble/curves@1.6.0': - dependencies: - '@noble/hashes': 1.5.0 - - '@noble/hashes@1.5.0': {} - - '@solana/buffer-layout@4.0.1': - dependencies: - buffer: 6.0.3 - - '@solana/web3.js@1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10)': - dependencies: - '@babel/runtime': 7.25.7 - '@noble/curves': 1.6.0 - '@noble/hashes': 1.5.0 - '@solana/buffer-layout': 4.0.1 - agentkeepalive: 4.5.0 - bigint-buffer: 1.1.5 - bn.js: 5.2.1 - borsh: 0.7.0 - bs58: 4.0.1 - buffer: 6.0.3 - fast-stable-stringify: 1.0.0 - jayson: 4.1.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) - node-fetch: 2.7.0 - rpc-websockets: 9.0.4 - superstruct: 2.0.2 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - - '@swc/helpers@0.5.13': - dependencies: - tslib: 2.8.0 - - '@types/chai@4.3.20': {} - - '@types/connect@3.4.38': - dependencies: - '@types/node': 22.7.7 - - '@types/json5@0.0.29': - optional: true - - '@types/mocha@10.0.9': {} - - '@types/node@12.20.55': {} - - '@types/node@22.7.7': - dependencies: - undici-types: 6.19.8 - - '@types/uuid@8.3.4': {} - - '@types/ws@7.4.7': - dependencies: - '@types/node': 22.7.7 - - '@types/ws@8.5.12': - dependencies: - '@types/node': 22.7.7 - - JSONStream@1.3.5: - dependencies: - jsonparse: 1.3.1 - through: 2.3.8 - - agentkeepalive@4.5.0: - dependencies: - humanize-ms: 1.2.1 - - ansi-colors@4.1.3: {} - - ansi-regex@5.0.1: {} - - ansi-styles@4.3.0: - dependencies: - color-convert: 2.0.1 - - anymatch@3.1.3: - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - - argparse@2.0.1: {} - - arrify@1.0.1: {} - - assertion-error@1.1.0: {} - - balanced-match@1.0.2: {} - - base-x@3.0.10: - dependencies: - safe-buffer: 5.2.1 - - base64-js@1.5.1: {} - - bigint-buffer@1.1.5: - dependencies: - bindings: 1.5.0 - - binary-extensions@2.3.0: {} - - bindings@1.5.0: - dependencies: - file-uri-to-path: 1.0.0 - - bn.js@5.2.1: {} - - borsh@0.7.0: - dependencies: - bn.js: 5.2.1 - bs58: 4.0.1 - text-encoding-utf-8: 1.0.2 - - brace-expansion@2.0.1: - dependencies: - balanced-match: 1.0.2 - - braces@3.0.3: - dependencies: - fill-range: 7.1.1 - - browser-stdout@1.3.1: {} - - bs58@4.0.1: - dependencies: - base-x: 3.0.10 - - buffer-from@1.1.2: {} - - buffer@6.0.3: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - - bufferutil@4.0.8: - dependencies: - node-gyp-build: 4.8.2 - optional: true - - camelcase@6.3.0: {} - - chai@4.5.0: - dependencies: - assertion-error: 1.1.0 - check-error: 1.0.3 - deep-eql: 4.1.4 - get-func-name: 2.0.2 - loupe: 2.3.7 - pathval: 1.1.1 - type-detect: 4.1.0 - - chalk@4.1.2: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - - check-error@1.0.3: - dependencies: - get-func-name: 2.0.2 - - chokidar@3.6.0: - dependencies: - anymatch: 3.1.3 - braces: 3.0.3 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - - cliui@7.0.4: - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - - color-convert@2.0.1: - dependencies: - color-name: 1.1.4 - - color-name@1.1.4: {} - - commander@2.20.3: {} - - debug@4.3.7(supports-color@8.1.1): - dependencies: - ms: 2.1.3 - optionalDependencies: - supports-color: 8.1.1 - - decamelize@4.0.0: {} - - deep-eql@4.1.4: - dependencies: - type-detect: 4.1.0 - - delay@5.0.0: {} - - diff@3.5.0: {} - - diff@5.2.0: {} - - emoji-regex@8.0.0: {} - - es6-promise@4.2.8: {} - - es6-promisify@5.0.0: - dependencies: - es6-promise: 4.2.8 - - escalade@3.2.0: {} - - escape-string-regexp@4.0.0: {} - - eventemitter3@5.0.1: {} - - eyes@0.1.8: {} - - fast-stable-stringify@1.0.0: {} - - file-uri-to-path@1.0.0: {} - - fill-range@7.1.1: - dependencies: - to-regex-range: 5.0.1 - - find-up@5.0.0: - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - - flat@5.0.2: {} - - fs.realpath@1.0.0: {} - - fsevents@2.3.3: - optional: true - - get-caller-file@2.0.5: {} - - get-func-name@2.0.2: {} - - glob-parent@5.1.2: - dependencies: - is-glob: 4.0.3 - - glob@8.1.0: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 5.1.6 - once: 1.4.0 - - has-flag@4.0.0: {} - - he@1.2.0: {} - - humanize-ms@1.2.1: - dependencies: - ms: 2.1.3 - - ieee754@1.2.1: {} - - inflight@1.0.6: - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - - inherits@2.0.4: {} - - is-binary-path@2.1.0: - dependencies: - binary-extensions: 2.3.0 - - is-extglob@2.1.1: {} - - is-fullwidth-code-point@3.0.0: {} - - is-glob@4.0.3: - dependencies: - is-extglob: 2.1.1 - - is-number@7.0.0: {} - - is-plain-obj@2.1.0: {} - - is-unicode-supported@0.1.0: {} - - isomorphic-ws@4.0.1(ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10)): - dependencies: - ws: 7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) - - jayson@4.1.2(bufferutil@4.0.8)(utf-8-validate@5.0.10): - dependencies: - '@types/connect': 3.4.38 - '@types/node': 12.20.55 - '@types/ws': 7.4.7 - JSONStream: 1.3.5 - commander: 2.20.3 - delay: 5.0.0 - es6-promisify: 5.0.0 - eyes: 0.1.8 - isomorphic-ws: 4.0.1(ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10)) - json-stringify-safe: 5.0.1 - uuid: 8.3.2 - ws: 7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - js-yaml@4.1.0: - dependencies: - argparse: 2.0.1 - - json-stringify-safe@5.0.1: {} - - json5@1.0.2: - dependencies: - minimist: 1.2.8 - optional: true - - jsonparse@1.3.1: {} - - locate-path@6.0.0: - dependencies: - p-locate: 5.0.0 - - log-symbols@4.1.0: - dependencies: - chalk: 4.1.2 - is-unicode-supported: 0.1.0 - - loupe@2.3.7: - dependencies: - get-func-name: 2.0.2 - - make-error@1.3.6: {} - - minimatch@5.1.6: - dependencies: - brace-expansion: 2.0.1 - - minimist@1.2.8: {} - - mkdirp@0.5.6: - dependencies: - minimist: 1.2.8 - - mocha@10.7.3: - dependencies: - ansi-colors: 4.1.3 - browser-stdout: 1.3.1 - chokidar: 3.6.0 - debug: 4.3.7(supports-color@8.1.1) - diff: 5.2.0 - escape-string-regexp: 4.0.0 - find-up: 5.0.0 - glob: 8.1.0 - he: 1.2.0 - js-yaml: 4.1.0 - log-symbols: 4.1.0 - minimatch: 5.1.6 - ms: 2.1.3 - serialize-javascript: 6.0.2 - strip-json-comments: 3.1.1 - supports-color: 8.1.1 - workerpool: 6.5.1 - yargs: 16.2.0 - yargs-parser: 20.2.9 - yargs-unparser: 2.0.0 - - ms@2.1.3: {} - - node-fetch@2.7.0: - dependencies: - whatwg-url: 5.0.0 - - node-gyp-build@4.8.2: - optional: true - - normalize-path@3.0.0: {} - - once@1.4.0: - dependencies: - wrappy: 1.0.2 - - p-limit@3.1.0: - dependencies: - yocto-queue: 0.1.0 - - p-locate@5.0.0: - dependencies: - p-limit: 3.1.0 - - path-exists@4.0.0: {} - - pathval@1.1.1: {} - - picomatch@2.3.1: {} - - randombytes@2.1.0: - dependencies: - safe-buffer: 5.2.1 - - readdirp@3.6.0: - dependencies: - picomatch: 2.3.1 - - regenerator-runtime@0.14.1: {} - - require-directory@2.1.1: {} - - rpc-websockets@9.0.4: - dependencies: - '@swc/helpers': 0.5.13 - '@types/uuid': 8.3.4 - '@types/ws': 8.5.12 - buffer: 6.0.3 - eventemitter3: 5.0.1 - uuid: 8.3.2 - ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - optionalDependencies: - bufferutil: 4.0.8 - utf-8-validate: 5.0.10 - - safe-buffer@5.2.1: {} - - serialize-javascript@6.0.2: - dependencies: - randombytes: 2.1.0 - - solana-bankrun-darwin-arm64@0.4.0: - optional: true - - solana-bankrun-darwin-universal@0.4.0: - optional: true - - solana-bankrun-darwin-x64@0.4.0: - optional: true - - solana-bankrun-linux-x64-gnu@0.4.0: - optional: true - - solana-bankrun-linux-x64-musl@0.4.0: - optional: true - - solana-bankrun@0.4.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): - dependencies: - '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) - bs58: 4.0.1 - optionalDependencies: - solana-bankrun-darwin-arm64: 0.4.0 - solana-bankrun-darwin-universal: 0.4.0 - solana-bankrun-darwin-x64: 0.4.0 - solana-bankrun-linux-x64-gnu: 0.4.0 - solana-bankrun-linux-x64-musl: 0.4.0 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - - source-map-support@0.5.21: - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - - source-map@0.6.1: {} - - string-width@4.2.3: - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - - strip-ansi@6.0.1: - dependencies: - ansi-regex: 5.0.1 - - strip-bom@3.0.0: - optional: true - - strip-json-comments@3.1.1: {} - - superstruct@2.0.2: {} - - supports-color@7.2.0: - dependencies: - has-flag: 4.0.0 - - supports-color@8.1.1: - dependencies: - has-flag: 4.0.0 - - text-encoding-utf-8@1.0.2: {} - - through@2.3.8: {} - - to-regex-range@5.0.1: - dependencies: - is-number: 7.0.0 - - tr46@0.0.3: {} - - ts-mocha@10.0.0(mocha@10.7.3): - dependencies: - mocha: 10.7.3 - ts-node: 7.0.1 - optionalDependencies: - tsconfig-paths: 3.15.0 - - ts-node@7.0.1: - dependencies: - arrify: 1.0.1 - buffer-from: 1.1.2 - diff: 3.5.0 - make-error: 1.3.6 - minimist: 1.2.8 - mkdirp: 0.5.6 - source-map-support: 0.5.21 - yn: 2.0.0 - - tsconfig-paths@3.15.0: - dependencies: - '@types/json5': 0.0.29 - json5: 1.0.2 - minimist: 1.2.8 - strip-bom: 3.0.0 - optional: true - - tslib@2.8.0: {} - - type-detect@4.1.0: {} - - typescript@5.6.3: {} - - undici-types@6.19.8: {} - - utf-8-validate@5.0.10: - dependencies: - node-gyp-build: 4.8.2 - optional: true - - uuid@8.3.2: {} - - webidl-conversions@3.0.1: {} - - whatwg-url@5.0.0: - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - - workerpool@6.5.1: {} - - wrap-ansi@7.0.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - wrappy@1.0.2: {} - - ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10): - optionalDependencies: - bufferutil: 4.0.8 - utf-8-validate: 5.0.10 - - ws@8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): - optionalDependencies: - bufferutil: 4.0.8 - utf-8-validate: 5.0.10 - - y18n@5.0.8: {} - - yargs-parser@20.2.9: {} - - yargs-unparser@2.0.0: - dependencies: - camelcase: 6.3.0 - decamelize: 4.0.0 - flat: 5.0.2 - is-plain-obj: 2.1.0 - - yargs@16.2.0: - dependencies: - cliui: 7.0.4 - escalade: 3.2.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 20.2.9 - - yn@2.0.0: {} - - yocto-queue@0.1.0: {} diff --git a/basics/processing-instructions/steel/program/Cargo.toml b/basics/processing-instructions/steel/program/Cargo.toml deleted file mode 100644 index 91ebaef43..000000000 --- a/basics/processing-instructions/steel/program/Cargo.toml +++ /dev/null @@ -1,19 +0,0 @@ -[package] -name = "processing-instructions-program" -version = "0.1.0" -edition = "2021" - -[lib] -crate-type = ["cdylib", "lib"] - -[dependencies] -processing-instructions-api.workspace = true -solana-program.workspace = true -steel.workspace = true - -[dev-dependencies] -bs64 = "0.1.2" -rand = "0.8.5" -solana-program-test = "1.18" -solana-sdk = "1.18" -tokio = { version = "1.35", features = ["full"] } diff --git a/basics/processing-instructions/steel/program/src/go_to_the_park.rs b/basics/processing-instructions/steel/program/src/go_to_the_park.rs deleted file mode 100644 index f90420a76..000000000 --- a/basics/processing-instructions/steel/program/src/go_to_the_park.rs +++ /dev/null @@ -1,27 +0,0 @@ -use processing_instructions_api::prelude::*; -use steel::*; - -use solana_program::msg; - -pub fn process_go_to_the_park(accounts: &[AccountInfo<'_>], data: &[u8]) -> ProgramResult { - msg!("Processing GoToThePark instruction"); - - // Parse args. - let args = GoToThePark::try_from_bytes(data)?; - - // Load accounts. - let [signer_info] = accounts else { - return Err(ProgramError::NotEnoughAccountKeys); - }; - signer_info.is_signer()?; - - msg!("Welcome to the park, {}!", args.data.name()); - - if args.data.height() > 5 { - msg!("You are tall enough to ride this ride. Congratulations."); - } else { - msg!("You are NOT tall enough to ride this ride. Sorry mate."); - }; - - Ok(()) -} diff --git a/basics/processing-instructions/steel/program/src/lib.rs b/basics/processing-instructions/steel/program/src/lib.rs deleted file mode 100644 index 765cd4577..000000000 --- a/basics/processing-instructions/steel/program/src/lib.rs +++ /dev/null @@ -1,28 +0,0 @@ -mod go_to_the_park; - -use go_to_the_park::*; -use processing_instructions_api::prelude::*; -use solana_program::msg; -use steel::*; - -pub fn process_instruction( - program_id: &Pubkey, - accounts: &[AccountInfo], - instruction_data: &[u8], -) -> ProgramResult { - msg!("Processing instruction"); - - let (ix, data) = parse_instruction( - &processing_instructions_api::ID, - program_id, - instruction_data, - )?; - - match ix { - ProcessingInstructionsInstruction::GoToThePark => process_go_to_the_park(accounts, data)?, - } - - Ok(()) -} - -entrypoint!(process_instruction); diff --git a/basics/processing-instructions/steel/program/tests/test.rs b/basics/processing-instructions/steel/program/tests/test.rs deleted file mode 100644 index 806f95a98..000000000 --- a/basics/processing-instructions/steel/program/tests/test.rs +++ /dev/null @@ -1,59 +0,0 @@ -use processing_instructions_api::prelude::*; -use solana_program::hash::Hash; -use solana_program_test::{processor, BanksClient, ProgramTest}; -use solana_sdk::{signature::Keypair, signer::Signer, transaction::Transaction}; - -async fn setup() -> (BanksClient, Keypair, Hash) { - let mut program_test = ProgramTest::new( - "processing_instructions_program", - processing_instructions_api::ID, - processor!(processing_instructions_program::process_instruction), - ); - program_test.prefer_bpf(true); - program_test.start().await -} - -// Helper function to assert the presence of log messages -fn assert_log_contains(logs: &[String], expected: &str) { - assert!( - logs.iter().any(|msg| msg.contains(expected)), - "Missing log: {}", - expected - ); -} - -#[tokio::test] -async fn run_test() { - // Setup test - let (mut banks, payer, blockhash) = setup().await; - - // Submit transaction. - let ix1 = go_to_the_park(payer.pubkey(), GoToTheParkData::new("Jimmy".to_string(), 3)); - let ix2 = go_to_the_park(payer.pubkey(), GoToTheParkData::new("Mary".to_string(), 10)); - let tx = Transaction::new_signed_with_payer( - &[ix1, ix2], - Some(&payer.pubkey()), - &[&payer], - blockhash, - ); - - let res = banks.process_transaction_with_metadata(tx).await; - assert!(res.is_ok(), "Process Transaction failed: {:?}", res.err()); - let tx_result = res.unwrap(); - assert!( - tx_result.result.is_ok(), - "Transaction failed: {:?}", - tx_result.result.err() - ); - - let metadata = tx_result.metadata.unwrap(); - - // check the logs - // we got 2 instructions, we must see 2 consecutive logs - // - Welcome to the park, {name}! - // - You are NOT tall enough... and You are tall enough... - assert_log_contains(&metadata.log_messages, "Welcome to the park, Jimmy!"); - assert_log_contains(&metadata.log_messages, "You are NOT tall enough"); - assert_log_contains(&metadata.log_messages, "Welcome to the park, Mary!"); - assert_log_contains(&metadata.log_messages, "You are tall enough"); -} diff --git a/basics/processing-instructions/steel/tests/main.test.ts b/basics/processing-instructions/steel/tests/main.test.ts deleted file mode 100644 index 9c2143b87..000000000 --- a/basics/processing-instructions/steel/tests/main.test.ts +++ /dev/null @@ -1,112 +0,0 @@ -import { Keypair, PublicKey, SystemProgram, Transaction, TransactionInstruction } from '@solana/web3.js'; -import { assert } from 'chai'; -import { describe, it } from 'mocha'; -import { BanksClient, ProgramTestContext, start } from 'solana-bankrun'; - -type GoToTheParkData = { - name: string; - height: bigint; -}; - -type GoToTheParkDataRaw = { - name: Uint8Array; - height: bigint; -}; - -const instructionDiscriminators = { - goToThePark: Buffer.from([0]), -}; - -const encodeString = (str: string, length: number): Uint8Array => { - const buffer = Buffer.alloc(length, 0); - buffer.write(str, 'utf-8'); - return Uint8Array.from(buffer); -}; - -const decodeString = (data: Uint8Array): string => { - return Buffer.from(data).toString('utf-8').replace(/\0/g, ''); -}; - -const encodeBigInt = (value: bigint): Uint8Array => { - const buffer = Buffer.alloc(8); - buffer.writeBigUInt64LE(value, 0); - return Uint8Array.from(buffer); -}; - -const createGoToTheParkBuffer = (data: GoToTheParkData): Buffer => { - const name = encodeString(data.name, 64); - const height = encodeBigInt(data.height); // 8 bytes - return Buffer.concat([instructionDiscriminators.goToThePark, name, height]); -}; - -const toGoToTheParkData = (data: GoToTheParkDataRaw): GoToTheParkData => { - return { - name: decodeString(data.name), - height: data.height, - }; -}; - -describe('processing instructions', async () => { - const PROGRAM_ID = new PublicKey('z7msBPQHDJjTvdQRoEcKyENgXDhSRYeHieN1ZMTqo35'); - - let context: ProgramTestContext; - let client: BanksClient; - let payer: Keypair; - - before(async () => { - context = await start([{ name: 'processing_instructions_program', programId: PROGRAM_ID }], []); - client = context.banksClient; - payer = context.payer; - }); - - it('should go to the park!', async () => { - // data for the instruction - const jimmy: GoToTheParkData = { - name: 'Jimmy', - height: BigInt(3), - }; - - const mary: GoToTheParkData = { - name: 'Mary', - height: BigInt(10), - }; - - const jimmyBuffer = createGoToTheParkBuffer(jimmy); - const maryBuffer = createGoToTheParkBuffer(mary); - - // create the instructions - const ix1 = new TransactionInstruction({ - programId: PROGRAM_ID, - keys: [{ pubkey: payer.publicKey, isSigner: true, isWritable: true }], - data: jimmyBuffer, - }); - - const ix2 = new TransactionInstruction({ - programId: PROGRAM_ID, - keys: [{ pubkey: payer.publicKey, isSigner: true, isWritable: true }], - data: maryBuffer, - }); - - // send the transaction - const tx = new Transaction(); - tx.recentBlockhash = context.lastBlockhash; - tx.add(ix1).add(ix2).sign(payer); - - // process the transaction - const result = await client.processTransaction(tx); - assert.ok(result); - - // check the logs - // we got 2 instructions, we must see 2 consecutive logs - // - Welcome to the park, {name}! - // - You are NOT tall enough... and You are tall enough... - - assert(!!result.logMessages.find((msg) => msg.includes(`Welcome to the park, ${jimmy.name}!`))); - - assert(!!result.logMessages.find((msg) => msg.includes('You are NOT tall enough'))); - - assert(!!result.logMessages.find((msg) => msg.includes(`Welcome to the park, ${mary.name}!`))); - - assert(!!result.logMessages.find((msg) => msg.includes('You are tall enough'))); - }); -}); diff --git a/basics/processing-instructions/steel/tsconfig.json b/basics/processing-instructions/steel/tsconfig.json deleted file mode 100644 index 8c20b2236..000000000 --- a/basics/processing-instructions/steel/tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "compilerOptions": { - "types": ["mocha", "chai", "node"], - "typeRoots": ["./node_modules/@types"], - "lib": ["es2015"], - "module": "commonjs", - "target": "es6", - "esModuleInterop": true - } -} diff --git a/basics/program-derived-addresses/steel/.gitignore b/basics/program-derived-addresses/steel/.gitignore deleted file mode 100644 index 052739dbc..000000000 --- a/basics/program-derived-addresses/steel/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -target -test-ledger diff --git a/basics/program-derived-addresses/steel/Cargo.toml b/basics/program-derived-addresses/steel/Cargo.toml deleted file mode 100644 index 2b599193d..000000000 --- a/basics/program-derived-addresses/steel/Cargo.toml +++ /dev/null @@ -1,21 +0,0 @@ -[workspace] -resolver = "2" -members = ["api", "program"] - -[workspace.package] -version = "0.1.0" -edition = "2021" -license = "Apache-2.0" -homepage = "" -documentation = "" -respository = "" -readme = "./README.md" -keywords = ["solana"] - -[workspace.dependencies] -program-derived-addresses-api = { path = "./api", version = "0.1.0" } -bytemuck = "1.14" -num_enum = "0.7" -solana-program = "2.1" -steel = "3.0" -thiserror = "1.0" diff --git a/basics/program-derived-addresses/steel/README.md b/basics/program-derived-addresses/steel/README.md deleted file mode 100644 index d5575d076..000000000 --- a/basics/program-derived-addresses/steel/README.md +++ /dev/null @@ -1,25 +0,0 @@ -# Program Derived Addresses - -This program demonstrates how to derive addresses. It will use a PDA to store a counter of visits and increment it. - -## Building - -```sh -cargo build-sbf - -``` -## Tests - -This project includes both: -- Rust tests: [`program/tests`](/program/tests) directory. -- Node.js tests using [Bankrun](https://kevinheavey.github.io/solana-bankrun/): [`tests`](/tests) directory. - -```sh -# rust tests -cargo test-sbf - -# node tests -pnpm build-and-test # this will also build the program -#or -pnpm test # if you have already built the program -``` diff --git a/basics/program-derived-addresses/steel/api/Cargo.toml b/basics/program-derived-addresses/steel/api/Cargo.toml deleted file mode 100644 index e02fc7e72..000000000 --- a/basics/program-derived-addresses/steel/api/Cargo.toml +++ /dev/null @@ -1,11 +0,0 @@ -[package] -name = "program-derived-addresses-api" -version = "0.1.0" -edition = "2021" - -[dependencies] -bytemuck.workspace = true -num_enum.workspace = true -solana-program.workspace = true -steel.workspace = true -thiserror.workspace = true diff --git a/basics/program-derived-addresses/steel/api/src/consts.rs b/basics/program-derived-addresses/steel/api/src/consts.rs deleted file mode 100644 index 09a886dc3..000000000 --- a/basics/program-derived-addresses/steel/api/src/consts.rs +++ /dev/null @@ -1,2 +0,0 @@ -/// Seed of the account PDA. -pub const SEED: &[u8] = b"program-derived-addresses"; diff --git a/basics/program-derived-addresses/steel/api/src/instruction.rs b/basics/program-derived-addresses/steel/api/src/instruction.rs deleted file mode 100644 index 24d6699dd..000000000 --- a/basics/program-derived-addresses/steel/api/src/instruction.rs +++ /dev/null @@ -1,23 +0,0 @@ -use steel::*; - -use crate::state::PageVisits; - -#[repr(u8)] -#[derive(Clone, Copy, Debug, Eq, PartialEq, TryFromPrimitive)] -pub enum ProgramDerivedAddressesInstruction { - Create = 0, - Increment = 1, -} - -#[repr(C)] -#[derive(Clone, Copy, Debug, Pod, Zeroable)] -pub struct Create { - pub page_visits: PageVisits, -} - -#[repr(C)] -#[derive(Clone, Copy, Debug, Pod, Zeroable)] -pub struct Increment {} - -instruction!(ProgramDerivedAddressesInstruction, Create); -instruction!(ProgramDerivedAddressesInstruction, Increment); diff --git a/basics/program-derived-addresses/steel/api/src/lib.rs b/basics/program-derived-addresses/steel/api/src/lib.rs deleted file mode 100644 index 6db8ac73d..000000000 --- a/basics/program-derived-addresses/steel/api/src/lib.rs +++ /dev/null @@ -1,16 +0,0 @@ -pub mod consts; -pub mod instruction; -pub mod sdk; -pub mod state; - -pub mod prelude { - pub use crate::consts::*; - pub use crate::instruction::*; - pub use crate::sdk::*; - pub use crate::state::*; -} - -use steel::*; - -// TODO Set program id -declare_id!("z7msBPQHDJjTvdQRoEcKyENgXDhSRYeHieN1ZMTqo35"); diff --git a/basics/program-derived-addresses/steel/api/src/sdk.rs b/basics/program-derived-addresses/steel/api/src/sdk.rs deleted file mode 100644 index e1fe2f5d1..000000000 --- a/basics/program-derived-addresses/steel/api/src/sdk.rs +++ /dev/null @@ -1,25 +0,0 @@ -use steel::*; - -use crate::prelude::*; - -pub fn create(signer: Pubkey, user: Pubkey, page_visits: PageVisits) -> Instruction { - let pda = page_visits_pda(&user); - Instruction { - program_id: crate::ID, - accounts: vec![ - AccountMeta::new(signer, true), - AccountMeta::new(user, false), - AccountMeta::new(pda.0, false), - AccountMeta::new_readonly(system_program::ID, false), - ], - data: Create { page_visits }.to_bytes(), - } -} - -pub fn increment(page_visits_pda: Pubkey) -> Instruction { - Instruction { - program_id: crate::ID, - accounts: vec![AccountMeta::new(page_visits_pda, false)], - data: Increment {}.to_bytes(), - } -} diff --git a/basics/program-derived-addresses/steel/api/src/state.rs b/basics/program-derived-addresses/steel/api/src/state.rs deleted file mode 100644 index aedc84ad3..000000000 --- a/basics/program-derived-addresses/steel/api/src/state.rs +++ /dev/null @@ -1,34 +0,0 @@ -use steel::*; - -use crate::consts::*; - -#[repr(u8)] -#[derive(Clone, Copy, Debug, Eq, PartialEq, IntoPrimitive, TryFromPrimitive)] -pub enum ProgramDerivedAddressesAccount { - PageVisits = 0, -} - -#[repr(C)] -#[derive(Clone, Copy, Debug, PartialEq, Pod, Zeroable)] -pub struct PageVisits { - pub page_visits: [u8; 4], // u32 - pub bump: [u8; 1], -} - -impl PageVisits { - pub fn increment_visits(&mut self) { - let visits = u32::from_le_bytes(self.page_visits); - self.page_visits = (visits + 1).to_le_bytes(); - } - - pub fn page_visits(&self) -> u32 { - u32::from_le_bytes(self.page_visits) - } -} - -account!(ProgramDerivedAddressesAccount, PageVisits); - -/// Fetch PDA of the PageVisit account. -pub fn page_visits_pda(user: &Pubkey) -> (Pubkey, u8) { - Pubkey::find_program_address(&[SEED, user.as_ref()], &crate::id()) -} diff --git a/basics/program-derived-addresses/steel/package.json b/basics/program-derived-addresses/steel/package.json deleted file mode 100644 index e71394e9e..000000000 --- a/basics/program-derived-addresses/steel/package.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "name": "program-derived-addresses", - "version": "1.0.0", - "description": "", - "scripts": { - "test": "pnpm ts-mocha -p ./tsconfig.json -t 1000000 ./tests/*.test.ts", - "build-and-test": "cargo build-sbf --manifest-path=./program/Cargo.toml --sbf-out-dir=./tests/fixtures && pnpm test", - "build": "cargo build-sbf --manifest-path=./program/Cargo.toml --sbf-out-dir=./program/target/so", - "deploy": "solana program deploy ./program/target/so/program_derived_addresses_program.so" - }, - "keywords": [], - "author": "", - "license": "ISC", - "dependencies": { - "@solana/web3.js": "^1.95.4" - }, - "devDependencies": { - "@types/chai": "^4.3.7", - "@types/mocha": "10.0.9", - "@types/node": "^22.7.4", - "borsh": "^2.0.0", - "chai": "^4.3.7", - "mocha": "10.7.3", - "solana-bankrun": "0.4.0", - "ts-mocha": "^10.0.0", - "typescript": "5.6.3" - } -} diff --git a/basics/program-derived-addresses/steel/pnpm-lock.yaml b/basics/program-derived-addresses/steel/pnpm-lock.yaml deleted file mode 100644 index 2a6823148..000000000 --- a/basics/program-derived-addresses/steel/pnpm-lock.yaml +++ /dev/null @@ -1,1268 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -importers: - - .: - dependencies: - '@solana/web3.js': - specifier: ^1.95.4 - version: 1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) - devDependencies: - '@types/chai': - specifier: ^4.3.7 - version: 4.3.20 - '@types/mocha': - specifier: 10.0.9 - version: 10.0.9 - '@types/node': - specifier: ^22.7.4 - version: 22.7.7 - borsh: - specifier: ^2.0.0 - version: 2.0.0 - chai: - specifier: ^4.3.7 - version: 4.5.0 - mocha: - specifier: 10.7.3 - version: 10.7.3 - solana-bankrun: - specifier: 0.4.0 - version: 0.4.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - ts-mocha: - specifier: ^10.0.0 - version: 10.0.0(mocha@10.7.3) - typescript: - specifier: 5.6.3 - version: 5.6.3 - -packages: - - '@babel/runtime@7.25.7': - resolution: {integrity: sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w==} - engines: {node: '>=6.9.0'} - - '@noble/curves@1.6.0': - resolution: {integrity: sha512-TlaHRXDehJuRNR9TfZDNQ45mMEd5dwUwmicsafcIX4SsNiqnCHKjE/1alYPd/lDRVhxdhUAlv8uEhMCI5zjIJQ==} - engines: {node: ^14.21.3 || >=16} - - '@noble/hashes@1.5.0': - resolution: {integrity: sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==} - engines: {node: ^14.21.3 || >=16} - - '@solana/buffer-layout@4.0.1': - resolution: {integrity: sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==} - engines: {node: '>=5.10'} - - '@solana/web3.js@1.95.4': - resolution: {integrity: sha512-sdewnNEA42ZSMxqkzdwEWi6fDgzwtJHaQa5ndUGEJYtoOnM6X5cvPmjoTUp7/k7bRrVAxfBgDnvQQHD6yhlLYw==} - - '@swc/helpers@0.5.13': - resolution: {integrity: sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==} - - '@types/chai@4.3.20': - resolution: {integrity: sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==} - - '@types/connect@3.4.38': - resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} - - '@types/json5@0.0.29': - resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - - '@types/mocha@10.0.9': - resolution: {integrity: sha512-sicdRoWtYevwxjOHNMPTl3vSfJM6oyW8o1wXeI7uww6b6xHg8eBznQDNSGBCDJmsE8UMxP05JgZRtsKbTqt//Q==} - - '@types/node@12.20.55': - resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - - '@types/node@22.7.7': - resolution: {integrity: sha512-SRxCrrg9CL/y54aiMCG3edPKdprgMVGDXjA3gB8UmmBW5TcXzRUYAh8EWzTnSJFAd1rgImPELza+A3bJ+qxz8Q==} - - '@types/uuid@8.3.4': - resolution: {integrity: sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==} - - '@types/ws@7.4.7': - resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==} - - '@types/ws@8.5.12': - resolution: {integrity: sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==} - - JSONStream@1.3.5: - resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} - hasBin: true - - agentkeepalive@4.5.0: - resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} - engines: {node: '>= 8.0.0'} - - ansi-colors@4.1.3: - resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} - engines: {node: '>=6'} - - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - - argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - - arrify@1.0.1: - resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} - engines: {node: '>=0.10.0'} - - assertion-error@1.1.0: - resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} - - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - base-x@3.0.10: - resolution: {integrity: sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==} - - base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - - bigint-buffer@1.1.5: - resolution: {integrity: sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA==} - engines: {node: '>= 10.0.0'} - - binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} - - bindings@1.5.0: - resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} - - bn.js@5.2.1: - resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} - - borsh@0.7.0: - resolution: {integrity: sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==} - - borsh@2.0.0: - resolution: {integrity: sha512-kc9+BgR3zz9+cjbwM8ODoUB4fs3X3I5A/HtX7LZKxCLaMrEeDFoBpnhZY//DTS1VZBSs6S5v46RZRbZjRFspEg==} - - brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - - braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} - - browser-stdout@1.3.1: - resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} - - bs58@4.0.1: - resolution: {integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==} - - buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - - buffer@6.0.3: - resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} - - bufferutil@4.0.8: - resolution: {integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==} - engines: {node: '>=6.14.2'} - - camelcase@6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} - - chai@4.5.0: - resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==} - engines: {node: '>=4'} - - chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - - check-error@1.0.3: - resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} - - chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} - - cliui@7.0.4: - resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} - - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - - debug@4.3.7: - resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - decamelize@4.0.0: - resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} - engines: {node: '>=10'} - - deep-eql@4.1.4: - resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==} - engines: {node: '>=6'} - - delay@5.0.0: - resolution: {integrity: sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==} - engines: {node: '>=10'} - - diff@3.5.0: - resolution: {integrity: sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==} - engines: {node: '>=0.3.1'} - - diff@5.2.0: - resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} - engines: {node: '>=0.3.1'} - - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - - es6-promise@4.2.8: - resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} - - es6-promisify@5.0.0: - resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==} - - escalade@3.2.0: - resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} - engines: {node: '>=6'} - - escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - - eventemitter3@5.0.1: - resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} - - eyes@0.1.8: - resolution: {integrity: sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==} - engines: {node: '> 0.1.90'} - - fast-stable-stringify@1.0.0: - resolution: {integrity: sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==} - - file-uri-to-path@1.0.0: - resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} - - fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} - - find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - - flat@5.0.2: - resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} - hasBin: true - - fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - - get-func-name@2.0.2: - resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} - - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - - glob@8.1.0: - resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} - engines: {node: '>=12'} - deprecated: Glob versions prior to v9 are no longer supported - - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - - he@1.2.0: - resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} - hasBin: true - - humanize-ms@1.2.1: - resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} - - ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - - inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. - - inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - - is-plain-obj@2.1.0: - resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} - engines: {node: '>=8'} - - is-unicode-supported@0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} - engines: {node: '>=10'} - - isomorphic-ws@4.0.1: - resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==} - peerDependencies: - ws: '*' - - jayson@4.1.2: - resolution: {integrity: sha512-5nzMWDHy6f+koZOuYsArh2AXs73NfWYVlFyJJuCedr93GpY+Ku8qq10ropSXVfHK+H0T6paA88ww+/dV+1fBNA==} - engines: {node: '>=8'} - hasBin: true - - js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true - - json-stringify-safe@5.0.1: - resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} - - json5@1.0.2: - resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} - hasBin: true - - jsonparse@1.3.1: - resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} - engines: {'0': node >= 0.2.0} - - locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - - log-symbols@4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} - engines: {node: '>=10'} - - loupe@2.3.7: - resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} - - make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - - minimatch@5.1.6: - resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} - engines: {node: '>=10'} - - minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - - mkdirp@0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} - hasBin: true - - mocha@10.7.3: - resolution: {integrity: sha512-uQWxAu44wwiACGqjbPYmjo7Lg8sFrS3dQe7PP2FQI+woptP4vZXSMcfMyFL/e1yFEeEpV4RtyTpZROOKmxis+A==} - engines: {node: '>= 14.0.0'} - hasBin: true - - ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - - node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - - node-gyp-build@4.8.2: - resolution: {integrity: sha512-IRUxE4BVsHWXkV/SFOut4qTlagw2aM8T5/vnTsmrHJvVoKueJHRc/JaFND7QDDc61kLYUJ6qlZM3sqTSyx2dTw==} - hasBin: true - - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - - once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - - p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - - p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - - path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - - pathval@1.1.1: - resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} - - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - - randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - - regenerator-runtime@0.14.1: - resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - - require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - - rpc-websockets@9.0.4: - resolution: {integrity: sha512-yWZWN0M+bivtoNLnaDbtny4XchdAIF5Q4g/ZsC5UC61Ckbp0QczwO8fg44rV3uYmY4WHd+EZQbn90W1d8ojzqQ==} - - safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - - serialize-javascript@6.0.2: - resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} - - solana-bankrun-darwin-arm64@0.4.0: - resolution: {integrity: sha512-6dz78Teoz7ez/3lpRLDjktYLJb79FcmJk2me4/YaB8WiO6W43OdExU4h+d2FyuAryO2DgBPXaBoBNY/8J1HJmw==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - - solana-bankrun-darwin-universal@0.4.0: - resolution: {integrity: sha512-zSSw/Jx3KNU42pPMmrEWABd0nOwGJfsj7nm9chVZ3ae7WQg3Uty0hHAkn5NSDCj3OOiN0py9Dr1l9vmRJpOOxg==} - engines: {node: '>= 10'} - os: [darwin] - - solana-bankrun-darwin-x64@0.4.0: - resolution: {integrity: sha512-LWjs5fsgHFtyr7YdJR6r0Ho5zrtzI6CY4wvwPXr8H2m3b4pZe6RLIZjQtabCav4cguc14G0K8yQB2PTMuGub8w==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - - solana-bankrun-linux-x64-gnu@0.4.0: - resolution: {integrity: sha512-SrlVrb82UIxt21Zr/XZFHVV/h9zd2/nP25PMpLJVLD7Pgl2yhkhfi82xj3OjxoQqWe+zkBJ+uszA0EEKr67yNw==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - solana-bankrun-linux-x64-musl@0.4.0: - resolution: {integrity: sha512-Nv328ZanmURdYfcLL+jwB1oMzX4ZzK57NwIcuJjGlf0XSNLq96EoaO5buEiUTo4Ls7MqqMyLbClHcrPE7/aKyA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - solana-bankrun@0.4.0: - resolution: {integrity: sha512-NMmXUipPBkt8NgnyNO3SCnPERP6xT/AMNMBooljGA3+rG6NN8lmXJsKeLqQTiFsDeWD74U++QM/DgcueSWvrIg==} - engines: {node: '>= 10'} - - source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - - source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - - strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - - strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - - superstruct@2.0.2: - resolution: {integrity: sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A==} - engines: {node: '>=14.0.0'} - - supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - - supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} - - text-encoding-utf-8@1.0.2: - resolution: {integrity: sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==} - - through@2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - - tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - - ts-mocha@10.0.0: - resolution: {integrity: sha512-VRfgDO+iiuJFlNB18tzOfypJ21xn2xbuZyDvJvqpTbWgkAgD17ONGr8t+Tl8rcBtOBdjXp5e/Rk+d39f7XBHRw==} - engines: {node: '>= 6.X.X'} - hasBin: true - peerDependencies: - mocha: ^3.X.X || ^4.X.X || ^5.X.X || ^6.X.X || ^7.X.X || ^8.X.X || ^9.X.X || ^10.X.X - - ts-node@7.0.1: - resolution: {integrity: sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==} - engines: {node: '>=4.2.0'} - hasBin: true - - tsconfig-paths@3.15.0: - resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} - - tslib@2.8.0: - resolution: {integrity: sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==} - - type-detect@4.1.0: - resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==} - engines: {node: '>=4'} - - typescript@5.6.3: - resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} - engines: {node: '>=14.17'} - hasBin: true - - undici-types@6.19.8: - resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} - - utf-8-validate@5.0.10: - resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==} - engines: {node: '>=6.14.2'} - - uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - hasBin: true - - webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - - whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - - workerpool@6.5.1: - resolution: {integrity: sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==} - - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - - wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - - ws@7.5.10: - resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} - engines: {node: '>=8.3.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - ws@8.18.0: - resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - - yargs-parser@20.2.9: - resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} - engines: {node: '>=10'} - - yargs-unparser@2.0.0: - resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} - engines: {node: '>=10'} - - yargs@16.2.0: - resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} - engines: {node: '>=10'} - - yn@2.0.0: - resolution: {integrity: sha512-uTv8J/wiWTgUTg+9vLTi//leUl5vDQS6uii/emeTb2ssY7vl6QWf2fFbIIGjnhjvbdKlU0ed7QPgY1htTC86jQ==} - engines: {node: '>=4'} - - yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - -snapshots: - - '@babel/runtime@7.25.7': - dependencies: - regenerator-runtime: 0.14.1 - - '@noble/curves@1.6.0': - dependencies: - '@noble/hashes': 1.5.0 - - '@noble/hashes@1.5.0': {} - - '@solana/buffer-layout@4.0.1': - dependencies: - buffer: 6.0.3 - - '@solana/web3.js@1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10)': - dependencies: - '@babel/runtime': 7.25.7 - '@noble/curves': 1.6.0 - '@noble/hashes': 1.5.0 - '@solana/buffer-layout': 4.0.1 - agentkeepalive: 4.5.0 - bigint-buffer: 1.1.5 - bn.js: 5.2.1 - borsh: 0.7.0 - bs58: 4.0.1 - buffer: 6.0.3 - fast-stable-stringify: 1.0.0 - jayson: 4.1.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) - node-fetch: 2.7.0 - rpc-websockets: 9.0.4 - superstruct: 2.0.2 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - - '@swc/helpers@0.5.13': - dependencies: - tslib: 2.8.0 - - '@types/chai@4.3.20': {} - - '@types/connect@3.4.38': - dependencies: - '@types/node': 22.7.7 - - '@types/json5@0.0.29': - optional: true - - '@types/mocha@10.0.9': {} - - '@types/node@12.20.55': {} - - '@types/node@22.7.7': - dependencies: - undici-types: 6.19.8 - - '@types/uuid@8.3.4': {} - - '@types/ws@7.4.7': - dependencies: - '@types/node': 22.7.7 - - '@types/ws@8.5.12': - dependencies: - '@types/node': 22.7.7 - - JSONStream@1.3.5: - dependencies: - jsonparse: 1.3.1 - through: 2.3.8 - - agentkeepalive@4.5.0: - dependencies: - humanize-ms: 1.2.1 - - ansi-colors@4.1.3: {} - - ansi-regex@5.0.1: {} - - ansi-styles@4.3.0: - dependencies: - color-convert: 2.0.1 - - anymatch@3.1.3: - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - - argparse@2.0.1: {} - - arrify@1.0.1: {} - - assertion-error@1.1.0: {} - - balanced-match@1.0.2: {} - - base-x@3.0.10: - dependencies: - safe-buffer: 5.2.1 - - base64-js@1.5.1: {} - - bigint-buffer@1.1.5: - dependencies: - bindings: 1.5.0 - - binary-extensions@2.3.0: {} - - bindings@1.5.0: - dependencies: - file-uri-to-path: 1.0.0 - - bn.js@5.2.1: {} - - borsh@0.7.0: - dependencies: - bn.js: 5.2.1 - bs58: 4.0.1 - text-encoding-utf-8: 1.0.2 - - borsh@2.0.0: {} - - brace-expansion@2.0.1: - dependencies: - balanced-match: 1.0.2 - - braces@3.0.3: - dependencies: - fill-range: 7.1.1 - - browser-stdout@1.3.1: {} - - bs58@4.0.1: - dependencies: - base-x: 3.0.10 - - buffer-from@1.1.2: {} - - buffer@6.0.3: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - - bufferutil@4.0.8: - dependencies: - node-gyp-build: 4.8.2 - optional: true - - camelcase@6.3.0: {} - - chai@4.5.0: - dependencies: - assertion-error: 1.1.0 - check-error: 1.0.3 - deep-eql: 4.1.4 - get-func-name: 2.0.2 - loupe: 2.3.7 - pathval: 1.1.1 - type-detect: 4.1.0 - - chalk@4.1.2: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - - check-error@1.0.3: - dependencies: - get-func-name: 2.0.2 - - chokidar@3.6.0: - dependencies: - anymatch: 3.1.3 - braces: 3.0.3 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - - cliui@7.0.4: - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - - color-convert@2.0.1: - dependencies: - color-name: 1.1.4 - - color-name@1.1.4: {} - - commander@2.20.3: {} - - debug@4.3.7(supports-color@8.1.1): - dependencies: - ms: 2.1.3 - optionalDependencies: - supports-color: 8.1.1 - - decamelize@4.0.0: {} - - deep-eql@4.1.4: - dependencies: - type-detect: 4.1.0 - - delay@5.0.0: {} - - diff@3.5.0: {} - - diff@5.2.0: {} - - emoji-regex@8.0.0: {} - - es6-promise@4.2.8: {} - - es6-promisify@5.0.0: - dependencies: - es6-promise: 4.2.8 - - escalade@3.2.0: {} - - escape-string-regexp@4.0.0: {} - - eventemitter3@5.0.1: {} - - eyes@0.1.8: {} - - fast-stable-stringify@1.0.0: {} - - file-uri-to-path@1.0.0: {} - - fill-range@7.1.1: - dependencies: - to-regex-range: 5.0.1 - - find-up@5.0.0: - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - - flat@5.0.2: {} - - fs.realpath@1.0.0: {} - - fsevents@2.3.3: - optional: true - - get-caller-file@2.0.5: {} - - get-func-name@2.0.2: {} - - glob-parent@5.1.2: - dependencies: - is-glob: 4.0.3 - - glob@8.1.0: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 5.1.6 - once: 1.4.0 - - has-flag@4.0.0: {} - - he@1.2.0: {} - - humanize-ms@1.2.1: - dependencies: - ms: 2.1.3 - - ieee754@1.2.1: {} - - inflight@1.0.6: - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - - inherits@2.0.4: {} - - is-binary-path@2.1.0: - dependencies: - binary-extensions: 2.3.0 - - is-extglob@2.1.1: {} - - is-fullwidth-code-point@3.0.0: {} - - is-glob@4.0.3: - dependencies: - is-extglob: 2.1.1 - - is-number@7.0.0: {} - - is-plain-obj@2.1.0: {} - - is-unicode-supported@0.1.0: {} - - isomorphic-ws@4.0.1(ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10)): - dependencies: - ws: 7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) - - jayson@4.1.2(bufferutil@4.0.8)(utf-8-validate@5.0.10): - dependencies: - '@types/connect': 3.4.38 - '@types/node': 12.20.55 - '@types/ws': 7.4.7 - JSONStream: 1.3.5 - commander: 2.20.3 - delay: 5.0.0 - es6-promisify: 5.0.0 - eyes: 0.1.8 - isomorphic-ws: 4.0.1(ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10)) - json-stringify-safe: 5.0.1 - uuid: 8.3.2 - ws: 7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - js-yaml@4.1.0: - dependencies: - argparse: 2.0.1 - - json-stringify-safe@5.0.1: {} - - json5@1.0.2: - dependencies: - minimist: 1.2.8 - optional: true - - jsonparse@1.3.1: {} - - locate-path@6.0.0: - dependencies: - p-locate: 5.0.0 - - log-symbols@4.1.0: - dependencies: - chalk: 4.1.2 - is-unicode-supported: 0.1.0 - - loupe@2.3.7: - dependencies: - get-func-name: 2.0.2 - - make-error@1.3.6: {} - - minimatch@5.1.6: - dependencies: - brace-expansion: 2.0.1 - - minimist@1.2.8: {} - - mkdirp@0.5.6: - dependencies: - minimist: 1.2.8 - - mocha@10.7.3: - dependencies: - ansi-colors: 4.1.3 - browser-stdout: 1.3.1 - chokidar: 3.6.0 - debug: 4.3.7(supports-color@8.1.1) - diff: 5.2.0 - escape-string-regexp: 4.0.0 - find-up: 5.0.0 - glob: 8.1.0 - he: 1.2.0 - js-yaml: 4.1.0 - log-symbols: 4.1.0 - minimatch: 5.1.6 - ms: 2.1.3 - serialize-javascript: 6.0.2 - strip-json-comments: 3.1.1 - supports-color: 8.1.1 - workerpool: 6.5.1 - yargs: 16.2.0 - yargs-parser: 20.2.9 - yargs-unparser: 2.0.0 - - ms@2.1.3: {} - - node-fetch@2.7.0: - dependencies: - whatwg-url: 5.0.0 - - node-gyp-build@4.8.2: - optional: true - - normalize-path@3.0.0: {} - - once@1.4.0: - dependencies: - wrappy: 1.0.2 - - p-limit@3.1.0: - dependencies: - yocto-queue: 0.1.0 - - p-locate@5.0.0: - dependencies: - p-limit: 3.1.0 - - path-exists@4.0.0: {} - - pathval@1.1.1: {} - - picomatch@2.3.1: {} - - randombytes@2.1.0: - dependencies: - safe-buffer: 5.2.1 - - readdirp@3.6.0: - dependencies: - picomatch: 2.3.1 - - regenerator-runtime@0.14.1: {} - - require-directory@2.1.1: {} - - rpc-websockets@9.0.4: - dependencies: - '@swc/helpers': 0.5.13 - '@types/uuid': 8.3.4 - '@types/ws': 8.5.12 - buffer: 6.0.3 - eventemitter3: 5.0.1 - uuid: 8.3.2 - ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - optionalDependencies: - bufferutil: 4.0.8 - utf-8-validate: 5.0.10 - - safe-buffer@5.2.1: {} - - serialize-javascript@6.0.2: - dependencies: - randombytes: 2.1.0 - - solana-bankrun-darwin-arm64@0.4.0: - optional: true - - solana-bankrun-darwin-universal@0.4.0: - optional: true - - solana-bankrun-darwin-x64@0.4.0: - optional: true - - solana-bankrun-linux-x64-gnu@0.4.0: - optional: true - - solana-bankrun-linux-x64-musl@0.4.0: - optional: true - - solana-bankrun@0.4.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): - dependencies: - '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) - bs58: 4.0.1 - optionalDependencies: - solana-bankrun-darwin-arm64: 0.4.0 - solana-bankrun-darwin-universal: 0.4.0 - solana-bankrun-darwin-x64: 0.4.0 - solana-bankrun-linux-x64-gnu: 0.4.0 - solana-bankrun-linux-x64-musl: 0.4.0 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - - source-map-support@0.5.21: - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - - source-map@0.6.1: {} - - string-width@4.2.3: - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - - strip-ansi@6.0.1: - dependencies: - ansi-regex: 5.0.1 - - strip-bom@3.0.0: - optional: true - - strip-json-comments@3.1.1: {} - - superstruct@2.0.2: {} - - supports-color@7.2.0: - dependencies: - has-flag: 4.0.0 - - supports-color@8.1.1: - dependencies: - has-flag: 4.0.0 - - text-encoding-utf-8@1.0.2: {} - - through@2.3.8: {} - - to-regex-range@5.0.1: - dependencies: - is-number: 7.0.0 - - tr46@0.0.3: {} - - ts-mocha@10.0.0(mocha@10.7.3): - dependencies: - mocha: 10.7.3 - ts-node: 7.0.1 - optionalDependencies: - tsconfig-paths: 3.15.0 - - ts-node@7.0.1: - dependencies: - arrify: 1.0.1 - buffer-from: 1.1.2 - diff: 3.5.0 - make-error: 1.3.6 - minimist: 1.2.8 - mkdirp: 0.5.6 - source-map-support: 0.5.21 - yn: 2.0.0 - - tsconfig-paths@3.15.0: - dependencies: - '@types/json5': 0.0.29 - json5: 1.0.2 - minimist: 1.2.8 - strip-bom: 3.0.0 - optional: true - - tslib@2.8.0: {} - - type-detect@4.1.0: {} - - typescript@5.6.3: {} - - undici-types@6.19.8: {} - - utf-8-validate@5.0.10: - dependencies: - node-gyp-build: 4.8.2 - optional: true - - uuid@8.3.2: {} - - webidl-conversions@3.0.1: {} - - whatwg-url@5.0.0: - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - - workerpool@6.5.1: {} - - wrap-ansi@7.0.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - wrappy@1.0.2: {} - - ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10): - optionalDependencies: - bufferutil: 4.0.8 - utf-8-validate: 5.0.10 - - ws@8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): - optionalDependencies: - bufferutil: 4.0.8 - utf-8-validate: 5.0.10 - - y18n@5.0.8: {} - - yargs-parser@20.2.9: {} - - yargs-unparser@2.0.0: - dependencies: - camelcase: 6.3.0 - decamelize: 4.0.0 - flat: 5.0.2 - is-plain-obj: 2.1.0 - - yargs@16.2.0: - dependencies: - cliui: 7.0.4 - escalade: 3.2.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 20.2.9 - - yn@2.0.0: {} - - yocto-queue@0.1.0: {} diff --git a/basics/program-derived-addresses/steel/program/Cargo.toml b/basics/program-derived-addresses/steel/program/Cargo.toml deleted file mode 100644 index ee69aa06b..000000000 --- a/basics/program-derived-addresses/steel/program/Cargo.toml +++ /dev/null @@ -1,19 +0,0 @@ -[package] -name = "program-derived-addresses-program" -version = "0.1.0" -edition = "2021" - -[lib] -crate-type = ["cdylib", "lib"] - -[dependencies] -program-derived-addresses-api.workspace = true -solana-program.workspace = true -steel.workspace = true - -[dev-dependencies] -bs64 = "0.1.2" -rand = "0.8.5" -solana-program-test = "1.18" -solana-sdk = "1.18" -tokio = { version = "1.35", features = ["full"] } diff --git a/basics/program-derived-addresses/steel/program/src/create.rs b/basics/program-derived-addresses/steel/program/src/create.rs deleted file mode 100644 index c2a77f639..000000000 --- a/basics/program-derived-addresses/steel/program/src/create.rs +++ /dev/null @@ -1,41 +0,0 @@ -use program_derived_addresses_api::prelude::*; -use solana_program::msg; -use steel::*; - -pub fn process_create(accounts: &[AccountInfo<'_>], data: &[u8]) -> ProgramResult { - msg!("Processing Create instruction"); - - // parse args - let args = Create::try_from_bytes(data)?; - let page_visits = args.page_visits; - - // load accounts - let [signer_info, user_info, pages_visit_info, system_program] = accounts else { - return Err(ProgramError::NotEnoughAccountKeys); - }; - - // validations - signer_info.is_signer()?; - pages_visit_info.is_empty()?.is_writable()?.has_seeds( - &[SEED, &user_info.key.as_ref()], - &program_derived_addresses_api::ID, - )?; - system_program.is_program(&system_program::ID)?; - - // create account - create_account::( - pages_visit_info, - system_program, - signer_info, - &program_derived_addresses_api::ID, - &[SEED, user_info.key.as_ref()], - )?; - - let info = pages_visit_info.as_account_mut::(&program_derived_addresses_api::ID)?; - info.page_visits = page_visits.page_visits; - info.bump = page_visits.bump; - - msg!("page visits: {:?}", u32::from_le_bytes(info.page_visits)); - - Ok(()) -} diff --git a/basics/program-derived-addresses/steel/program/src/increment.rs b/basics/program-derived-addresses/steel/program/src/increment.rs deleted file mode 100644 index 684d73fb6..000000000 --- a/basics/program-derived-addresses/steel/program/src/increment.rs +++ /dev/null @@ -1,19 +0,0 @@ -use program_derived_addresses_api::prelude::*; -use solana_program::msg; -use steel::*; - -pub fn process_increment(accounts: &[AccountInfo<'_>], _data: &[u8]) -> ProgramResult { - msg!("Processing Create instruction"); - - // load accounts. - let [page_visit_info] = accounts else { - return Err(ProgramError::NotEnoughAccountKeys); - }; - - let info = page_visit_info.as_account_mut::(&program_derived_addresses_api::ID)?; - - // increment page visits - info.increment_visits(); - - Ok(()) -} diff --git a/basics/program-derived-addresses/steel/program/src/lib.rs b/basics/program-derived-addresses/steel/program/src/lib.rs deleted file mode 100644 index 4c3b956d5..000000000 --- a/basics/program-derived-addresses/steel/program/src/lib.rs +++ /dev/null @@ -1,29 +0,0 @@ -mod create; -mod increment; - -use create::*; -use increment::*; - -use program_derived_addresses_api::prelude::*; -use steel::*; - -pub fn process_instruction( - program_id: &Pubkey, - accounts: &[AccountInfo], - instruction_data: &[u8], -) -> ProgramResult { - let (ix, data) = parse_instruction( - &program_derived_addresses_api::ID, - program_id, - instruction_data, - )?; - - match ix { - ProgramDerivedAddressesInstruction::Create => process_create(accounts, data)?, - ProgramDerivedAddressesInstruction::Increment => process_increment(accounts, data)?, - } - - Ok(()) -} - -entrypoint!(process_instruction); diff --git a/basics/program-derived-addresses/steel/program/tests/test.rs b/basics/program-derived-addresses/steel/program/tests/test.rs deleted file mode 100644 index 2c6a7734a..000000000 --- a/basics/program-derived-addresses/steel/program/tests/test.rs +++ /dev/null @@ -1,56 +0,0 @@ -use program_derived_addresses_api::prelude::*; -use solana_program::hash::Hash; -use solana_program_test::{processor, BanksClient, ProgramTest}; -use solana_sdk::{signature::Keypair, signer::Signer, transaction::Transaction}; -use steel::*; - -async fn setup() -> (BanksClient, Keypair, Hash) { - let mut program_test = ProgramTest::new( - "program_derived_addresses_program", - program_derived_addresses_api::ID, - processor!(program_derived_addresses_program::process_instruction), - ); - program_test.prefer_bpf(true); - program_test.start().await -} - -#[tokio::test] -async fn run_test() { - // Setup test - let (mut banks, payer, blockhash) = setup().await; - - let test_user = Keypair::new(); - let page_visits_pda = page_visits_pda(&test_user.pubkey()); - - let page_visits = PageVisits { - page_visits: 0_u32.to_le_bytes(), - bump: [page_visits_pda.1], - }; - - // Submit create transaction - let ix_create = create(payer.pubkey(), test_user.pubkey(), page_visits); - let tx_create = Transaction::new_signed_with_payer( - &[ix_create], - Some(&payer.pubkey()), - &[&payer], - blockhash, - ); - let res_create = banks.process_transaction(tx_create).await; - assert!(res_create.is_ok()); - - // Submit increment transaction - let ix_increment = increment(page_visits_pda.0); - let tx_increment = Transaction::new_signed_with_payer( - &[ix_increment], - Some(&payer.pubkey()), - &[&payer], - blockhash, - ); - let res_increment = banks.process_transaction(tx_increment).await; - assert!(res_increment.is_ok()); - - // Verify page visits was incremented - let page_visits_account = banks.get_account(page_visits_pda.0).await.unwrap().unwrap(); - let page_visits = PageVisits::try_from_bytes(&page_visits_account.data).unwrap(); - assert_eq!(page_visits.page_visits(), 1); -} diff --git a/basics/program-derived-addresses/steel/tests/main.test.ts b/basics/program-derived-addresses/steel/tests/main.test.ts deleted file mode 100644 index 5a0f8ba8a..000000000 --- a/basics/program-derived-addresses/steel/tests/main.test.ts +++ /dev/null @@ -1,154 +0,0 @@ -import { Keypair, PublicKey, SystemProgram, Transaction, TransactionInstruction } from '@solana/web3.js'; -import * as borsh from 'borsh'; -import { assert } from 'chai'; -import { describe, it } from 'mocha'; -import { BanksClient, ProgramTestContext, start } from 'solana-bankrun'; - -type PageVisits = { - page_visits: number; - bump: number; -}; - -const pageVisitsSchema: borsh.Schema = { - struct: { - discriminator: 'u64', - page_visits: 'u32', - bump: 'u8', - }, -}; - -const createPageVisitsBuffer = (data: PageVisits): Buffer => { - const pageVisits = Buffer.alloc(4); - pageVisits.writeUInt32LE(data.page_visits, 0); - const bump = Buffer.alloc(1); - bump.writeUInt8(data.bump, 0); - return Buffer.concat([pageVisits, bump]); -}; - -describe('program derived addresses program', async () => { - const PROGRAM_ID = new PublicKey('z7msBPQHDJjTvdQRoEcKyENgXDhSRYeHieN1ZMTqo35'); - - let context: ProgramTestContext; - let client: BanksClient; - let payer: Keypair; - - const testUser = Keypair.generate(); - - const instructionDiscriminators = { - create: Buffer.from([0]), - increment: Buffer.from([1]), - }; - - const derivePageVisitsPDA = async (user: PublicKey) => { - const seed = Buffer.from('program-derived-addresses'); - return PublicKey.findProgramAddressSync([seed, user.toBuffer()], PROGRAM_ID); - }; - - before(async () => { - context = await start([{ name: 'program_derived_addresses_program', programId: PROGRAM_ID }], []); - client = context.banksClient; - payer = context.payer; - }); - - it('should create a page visits tracking PDA', async () => { - const [pageVisitsPDA] = await derivePageVisitsPDA(testUser.publicKey); - - // create the page visits data - const pageVisits: PageVisits = { page_visits: 0, bump: 0 }; - const pageVisitsBuffer = createPageVisitsBuffer(pageVisits); - const data = Buffer.concat([instructionDiscriminators.create, pageVisitsBuffer]); - - // create the create instruction - const createIx = new TransactionInstruction({ - programId: PROGRAM_ID, - keys: [ - { pubkey: payer.publicKey, isSigner: true, isWritable: true }, - { pubkey: testUser.publicKey, isSigner: false, isWritable: false }, - { pubkey: pageVisitsPDA, isSigner: false, isWritable: true }, - { pubkey: SystemProgram.programId, isSigner: false, isWritable: false }, - ], - data, - }); - - // send the create transaction - const createTx = new Transaction(); - createTx.recentBlockhash = context.lastBlockhash; - createTx.add(createIx).sign(payer); - - // process the transaction - await client.processTransaction(createTx); - - // fetch the counter account data - const pageVisitsInfo = await client.getAccount(pageVisitsPDA); - assert(pageVisitsInfo !== null, 'account should exist'); - }); - - it('should visit the page and get 1 visit!', async () => { - const [pageVisitsPDA] = await derivePageVisitsPDA(testUser.publicKey); - - // create the increment instruction - const incrementIx = new TransactionInstruction({ - programId: PROGRAM_ID, - keys: [{ pubkey: pageVisitsPDA, isSigner: false, isWritable: true }], - data: instructionDiscriminators.increment, - }); - - // send the increment transaction - const incrementTx = new Transaction(); - incrementTx.recentBlockhash = context.lastBlockhash; - incrementTx.add(incrementIx).sign(payer); - - // process the transaction - await client.processTransaction(incrementTx); - - // fetch the account data - const pageVisitsInfo = await client.getAccount(pageVisitsPDA); - assert(pageVisitsInfo !== null, 'account should exist'); - - const data = borsh.deserialize(pageVisitsSchema, pageVisitsInfo?.data) as PageVisits; - - assert(data.page_visits === 1, 'page visits should be 1'); - }); - - it('should visit the page and get 2 visits!', async () => { - const [pageVisitsPDA] = await derivePageVisitsPDA(testUser.publicKey); - - // create the increment instruction - const incrementIx = new TransactionInstruction({ - programId: PROGRAM_ID, - keys: [{ pubkey: pageVisitsPDA, isSigner: false, isWritable: true }], - data: instructionDiscriminators.increment, - }); - - // get last blockhash - const [blockhash, _block_height] = await client.getLatestBlockhash(); - - // send the increment transaction - const incrementTx = new Transaction(); - incrementTx.recentBlockhash = blockhash; - incrementTx.add(incrementIx).sign(payer); - - // process the transaction - await client.processTransaction(incrementTx); - - // fetch the account data - const pageVisitsInfo = await client.getAccount(pageVisitsPDA); - assert(pageVisitsInfo !== null, 'account should exist'); - - const data = borsh.deserialize(pageVisitsSchema, pageVisitsInfo?.data) as PageVisits; - - assert(data.page_visits === 2, 'page visits should be 2'); - }); - - it('should read all the visits of the page', async () => { - const [pageVisitsPDA] = await derivePageVisitsPDA(testUser.publicKey); - - // fetch the account data - const pageVisitsInfo = await client.getAccount(pageVisitsPDA); - assert(pageVisitsInfo !== null, 'account should exist'); - - const data = borsh.deserialize(pageVisitsSchema, pageVisitsInfo?.data) as PageVisits; - - assert(data.page_visits === 2, 'page visits should be 2'); - }); -}); diff --git a/basics/program-derived-addresses/steel/tsconfig.json b/basics/program-derived-addresses/steel/tsconfig.json deleted file mode 100644 index 8c20b2236..000000000 --- a/basics/program-derived-addresses/steel/tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "compilerOptions": { - "types": ["mocha", "chai", "node"], - "typeRoots": ["./node_modules/@types"], - "lib": ["es2015"], - "module": "commonjs", - "target": "es6", - "esModuleInterop": true - } -} diff --git a/basics/realloc/steel/.gitignore b/basics/realloc/steel/.gitignore deleted file mode 100644 index 052739dbc..000000000 --- a/basics/realloc/steel/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -target -test-ledger diff --git a/basics/realloc/steel/Cargo.toml b/basics/realloc/steel/Cargo.toml deleted file mode 100644 index afb9e8d7f..000000000 --- a/basics/realloc/steel/Cargo.toml +++ /dev/null @@ -1,21 +0,0 @@ -[workspace] -resolver = "2" -members = ["api", "program"] - -[workspace.package] -version = "0.1.0" -edition = "2021" -license = "Apache-2.0" -homepage = "" -documentation = "" -repository = "" -readme = "./README.md" -keywords = ["solana"] - -[workspace.dependencies] -realloc-api = { path = "./api", version = "0.1.0" } -bytemuck = "1.14" -num_enum = "0.7" -solana-program = "2.1" -steel = "3.0" -thiserror = "1.0" diff --git a/basics/realloc/steel/README.md b/basics/realloc/steel/README.md deleted file mode 100644 index 769660f4d..000000000 --- a/basics/realloc/steel/README.md +++ /dev/null @@ -1,28 +0,0 @@ -# Realloc - -**Realloc** is a ... - -## API -- [`Consts`](api/src/consts.rs) – Program constants. -- [`Error`](api/src/error.rs) – Custom program errors. -- [`Event`](api/src/event.rs) – Custom program events. -- [`Instruction`](api/src/instruction.rs) – Declared instructions. - -## Instructions -- [`Add`](program/src/add.rs) – Add ... -- [`Initialize`](program/src/initialize.rs) – Initialize ... - -## State -- [`Counter`](api/src/state/counter.rs) – Counter ... - -## Get started - -Compile your program: -```sh -steel build -``` - -Run unit and integration tests: -```sh -steel test -``` diff --git a/basics/realloc/steel/api/Cargo.toml b/basics/realloc/steel/api/Cargo.toml deleted file mode 100644 index 1e0002fb7..000000000 --- a/basics/realloc/steel/api/Cargo.toml +++ /dev/null @@ -1,18 +0,0 @@ -[package] -name = "realloc-api" -description = "API for interacting with the Realloc program" -version.workspace = true -edition.workspace = true -license.workspace = true -homepage.workspace = true -documentation.workspace = true -repository.workspace = true -readme.workspace = true -keywords.workspace = true - -[dependencies] -bytemuck.workspace = true -num_enum.workspace = true -solana-program.workspace = true -steel.workspace = true -thiserror.workspace = true diff --git a/basics/realloc/steel/api/src/consts.rs b/basics/realloc/steel/api/src/consts.rs deleted file mode 100644 index 115e5abe9..000000000 --- a/basics/realloc/steel/api/src/consts.rs +++ /dev/null @@ -1,4 +0,0 @@ -/// Seed of the address_info account PDA. -pub const ADDRESS_INFO: &[u8] = b"address_info"; - -pub const MAX_STR_LEN: usize = 32; diff --git a/basics/realloc/steel/api/src/error.rs b/basics/realloc/steel/api/src/error.rs deleted file mode 100644 index edfa7574e..000000000 --- a/basics/realloc/steel/api/src/error.rs +++ /dev/null @@ -1,10 +0,0 @@ -use steel::*; - -#[derive(Debug, Error, Clone, Copy, PartialEq, Eq, IntoPrimitive)] -#[repr(u32)] -pub enum ReallocError { - #[error("This is a dummy error")] - Dummy = 0, -} - -error!(ReallocError); diff --git a/basics/realloc/steel/api/src/instruction.rs b/basics/realloc/steel/api/src/instruction.rs deleted file mode 100644 index d4e000103..000000000 --- a/basics/realloc/steel/api/src/instruction.rs +++ /dev/null @@ -1,21 +0,0 @@ -use steel::*; - -#[repr(u8)] -#[derive(Clone, Copy, Debug, Eq, PartialEq, TryFromPrimitive)] -pub enum ReallocInstruction { - Initialize = 0, - Add = 1 -} - -#[repr(C)] -#[derive(Clone, Copy, Debug, Pod, Zeroable)] -pub struct Initialize {} - -#[repr(C)] -#[derive(Clone, Copy, Debug, Pod, Zeroable)] -pub struct Add { - pub amount: [u8; 8] -} - -instruction!(ReallocInstruction, Initialize); -instruction!(ReallocInstruction, Add); diff --git a/basics/realloc/steel/api/src/lib.rs b/basics/realloc/steel/api/src/lib.rs deleted file mode 100644 index 76867dc34..000000000 --- a/basics/realloc/steel/api/src/lib.rs +++ /dev/null @@ -1,20 +0,0 @@ -pub mod consts; -pub mod error; -pub mod instruction; -pub mod sdk; -pub mod state; -pub mod utils; - -pub mod prelude { - pub use crate::consts::*; - pub use crate::error::*; - pub use crate::instruction::*; - pub use crate::sdk::*; - pub use crate::state::*; - pub use crate::utils::*; -} - -use steel::*; - -// TODO Set program id -declare_id!("z7msBPQHDJjTvdQRoEcKyENgXDhSRYeHieN1ZMTqo35"); diff --git a/basics/realloc/steel/api/src/sdk.rs b/basics/realloc/steel/api/src/sdk.rs deleted file mode 100644 index c1f0ff619..000000000 --- a/basics/realloc/steel/api/src/sdk.rs +++ /dev/null @@ -1,29 +0,0 @@ -use steel::*; - -use crate::prelude::*; - -pub fn initialize(signer: Pubkey) -> Instruction { - Instruction { - program_id: crate::ID, - accounts: vec![ - AccountMeta::new(signer, true), - AccountMeta::new(counter_pda().0, false), - AccountMeta::new_readonly(system_program::ID, false), - ], - data: Initialize {}.to_bytes() - } -} - -pub fn add(signer: Pubkey, amount: u64) -> Instruction { - Instruction { - program_id: crate::ID, - accounts: vec![ - AccountMeta::new(signer, true), - AccountMeta::new(counter_pda().0, false), - ], - data: Add { - amount: amount.to_le_bytes(), - } - .to_bytes(), - } -} diff --git a/basics/realloc/steel/api/src/state/address_info.rs b/basics/realloc/steel/api/src/state/address_info.rs deleted file mode 100644 index fd1680b34..000000000 --- a/basics/realloc/steel/api/src/state/address_info.rs +++ /dev/null @@ -1,27 +0,0 @@ -use crate::consts::*; -use crate::utils::*; -use steel::*; - -use super::ReallocAccount; - -#[repr(C)] -#[derive(Clone, Copy, Debug, PartialEq, Pod, Zeroable)] -pub struct AddressInfo { - pub name: [u8; MAX_STR_LEN], - pub house_number: u8, - pub street: [u8; MAX_STR_LEN], - pub city: [u8; MAX_STR_LEN], -} - -impl AddressInfo { - pub fn new(name: &str, house_number: u8, street: &str, city: &str) -> Self { - AddressInfo { - name: str_to_bytes(name), - house_number, - street: str_to_bytes(street), - city: str_to_bytes(city), - } - } -} - -account!(ReallocAccount, AddressInfo); diff --git a/basics/realloc/steel/api/src/state/enchanced_address_info.rs b/basics/realloc/steel/api/src/state/enchanced_address_info.rs deleted file mode 100644 index 95dbd364c..000000000 --- a/basics/realloc/steel/api/src/state/enchanced_address_info.rs +++ /dev/null @@ -1,43 +0,0 @@ -use crate::consts::*; -use crate::state::AddressInfo; -use crate::utils::*; -use steel::*; - -use super::ReallocAccount; - -#[repr(C)] -#[derive(Clone, Copy, Debug, PartialEq, Pod, Zeroable)] -pub struct EnhancedAddressInfoExtender { - pub state: [u8; MAX_STR_LEN], - pub zip: u32, -} - -#[repr(C)] -#[derive(Clone, Copy, Debug, PartialEq, Pod, Zeroable)] -pub struct EnhancedAddressInfo { - pub zip: u32, - pub house_number: u8, - - pub name: [u8; MAX_STR_LEN], - pub street: [u8; MAX_STR_LEN], - pub city: [u8; MAX_STR_LEN], - pub state: [u8; MAX_STR_LEN], - - pub _padding: [u8; 3], -} - -impl EnhancedAddressInfo { - pub fn from_address_info(address_info: AddressInfo, state: &str, zip: u32) -> Self { - EnhancedAddressInfo { - name: address_info.name, - house_number: address_info.house_number, - street: address_info.street, - city: address_info.city, - state: str_to_bytes(state), - zip, - _padding: [0u8; 3], - } - } -} - -account!(ReallocAccount, EnhancedAddressInfo); diff --git a/basics/realloc/steel/api/src/state/mod.rs b/basics/realloc/steel/api/src/state/mod.rs deleted file mode 100644 index 8576d0ed1..000000000 --- a/basics/realloc/steel/api/src/state/mod.rs +++ /dev/null @@ -1,25 +0,0 @@ -mod address_info; -mod enchanced_address_info; -mod work_info; - -pub use address_info::*; -pub use enchanced_address_info::*; -pub use work_info::*; - -use steel::*; - -use crate::consts::*; - -#[repr(u8)] -#[derive(Clone, Copy, Debug, Eq, PartialEq, IntoPrimitive, TryFromPrimitive)] -pub enum ReallocAccount { - AddressInfo = 0, - EnhancedAddressInfo = 1, - EnhancedAddressInfoExtender = 2, - WorkInfo = 3, -} - -/// Fetch PDA of the counter account. -pub fn counter_pda() -> (Pubkey, u8) { - Pubkey::find_program_address(&[COUNTER], &crate::id()) -} diff --git a/basics/realloc/steel/api/src/state/work_info.rs b/basics/realloc/steel/api/src/state/work_info.rs deleted file mode 100644 index 43f3cbda0..000000000 --- a/basics/realloc/steel/api/src/state/work_info.rs +++ /dev/null @@ -1,27 +0,0 @@ -use crate::consts::*; -use crate::utils::*; -use steel::*; - -use super::ReallocAccount; - -#[repr(C)] -#[derive(Clone, Copy, Debug, PartialEq, Pod, Zeroable)] -pub struct WorkInfo { - pub name: [u8; MAX_STR_LEN], - pub position: [u8; MAX_STR_LEN], - pub company: [u8; MAX_STR_LEN], - pub years_employed: u8, -} - -impl WorkInfo { - pub fn new(name: &str, position: &str, company: &str, years_employed: u8) -> Self { - WorkInfo { - name: str_to_bytes(name), - position: str_to_bytes(position), - company: str_to_bytes(company), - years_employed, - } - } -} - -account!(ReallocAccount, WorkInfo); diff --git a/basics/realloc/steel/api/src/utils.rs b/basics/realloc/steel/api/src/utils.rs deleted file mode 100644 index 900ed0062..000000000 --- a/basics/realloc/steel/api/src/utils.rs +++ /dev/null @@ -1,5 +0,0 @@ -pub fn str_to_bytes(name: &str) -> [u8; MAX_STR_LEN] { - let mut name_bytes = [0u8; MAX_STR_LEN]; - name_bytes[..name.len()].copy_from_slice(name.as_bytes()); - name_bytes -} diff --git a/basics/realloc/steel/program/Cargo.toml b/basics/realloc/steel/program/Cargo.toml deleted file mode 100644 index ac2bae813..000000000 --- a/basics/realloc/steel/program/Cargo.toml +++ /dev/null @@ -1,26 +0,0 @@ -[package] -name = "realloc-program" -description = "" -version.workspace = true -edition.workspace = true -license.workspace = true -homepage.workspace = true -documentation.workspace = true -repository.workspace = true -readme.workspace = true -keywords.workspace = true - -[lib] -crate-type = ["cdylib", "lib"] - -[dependencies] -realloc-api.workspace = true -solana-program.workspace = true -steel.workspace = true - -[dev-dependencies] -base64 = "0.21" -rand = "0.8.5" -solana-program-test = "1.18" -solana-sdk = "1.18" -tokio = { version = "1.35", features = ["full"] } diff --git a/basics/realloc/steel/program/src/add.rs b/basics/realloc/steel/program/src/add.rs deleted file mode 100644 index e2aafa05b..000000000 --- a/basics/realloc/steel/program/src/add.rs +++ /dev/null @@ -1,22 +0,0 @@ -use realloc_api::prelude::*; -use steel::*; - -pub fn process_add(accounts: &[AccountInfo<'_>], data: &[u8]) -> ProgramResult { - // Parse args. - let args = Add::try_from_bytes(data)?; - let amount = u64::from_le_bytes(args.amount); - - // Load accounts. - let [signer_info, counter_info] = accounts else { - return Err(ProgramError::NotEnoughAccountKeys); - }; - signer_info.is_signer()?; - let counter = counter_info - .as_account_mut::(&realloc_api::ID)? - .assert_mut(|c| c.value < 100)?; - - // Update state - counter.value += amount; - - Ok(()) -} diff --git a/basics/realloc/steel/program/src/initialize.rs b/basics/realloc/steel/program/src/initialize.rs deleted file mode 100644 index f579bd9a2..000000000 --- a/basics/realloc/steel/program/src/initialize.rs +++ /dev/null @@ -1,28 +0,0 @@ -use realloc_api::prelude::*; -use steel::*; - -pub fn process_initialize(accounts: &[AccountInfo<'_>], _data: &[u8]) -> ProgramResult { - // Load accounts. - let [signer_info, counter_info, system_program] = accounts else { - return Err(ProgramError::NotEnoughAccountKeys); - }; - signer_info.is_signer()?; - counter_info.is_empty()?.is_writable()?.has_seeds( - &[COUNTER], - &realloc_api::ID - )?; - system_program.is_program(&system_program::ID)?; - - // Initialize counter. - create_account::( - counter_info, - system_program, - signer_info, - &realloc_api::ID, - &[COUNTER], - )?; - let counter = counter_info.as_account_mut::(&realloc_api::ID)?; - counter.value = 0; - - Ok(()) -} diff --git a/basics/realloc/steel/program/src/lib.rs b/basics/realloc/steel/program/src/lib.rs deleted file mode 100644 index 8c0f2d75e..000000000 --- a/basics/realloc/steel/program/src/lib.rs +++ /dev/null @@ -1,25 +0,0 @@ -mod add; -mod initialize; - -use add::*; -use initialize::*; - -use realloc_api::prelude::*; -use steel::*; - -pub fn process_instruction( - program_id: &Pubkey, - accounts: &[AccountInfo], - data: &[u8], -) -> ProgramResult { - let (ix, data) = parse_instruction(&realloc_api::ID, program_id, data)?; - - match ix { - ReallocInstruction::Initialize => process_initialize(accounts, data)?, - ReallocInstruction::Add => process_add(accounts, data)?, - } - - Ok(()) -} - -entrypoint!(process_instruction); diff --git a/basics/realloc/steel/program/tests/test.rs b/basics/realloc/steel/program/tests/test.rs deleted file mode 100644 index e75c75637..000000000 --- a/basics/realloc/steel/program/tests/test.rs +++ /dev/null @@ -1,46 +0,0 @@ -use realloc_api::prelude::*; -use solana_program::hash::Hash; -use solana_program_test::{processor, BanksClient, ProgramTest}; -use solana_sdk::{signature::Keypair, signer::Signer, transaction::Transaction}; -use steel::*; - -async fn setup() -> (BanksClient, Keypair, Hash) { - let mut program_test = ProgramTest::new( - "realloc_program", - realloc_api::ID, - processor!(realloc_program::process_instruction), - ); - program_test.prefer_bpf(true); - program_test.start().await -} - -#[tokio::test] -async fn run_test() { - // Setup test - let (mut banks, payer, blockhash) = setup().await; - - // Submit initialize transaction. - let ix = initialize(payer.pubkey()); - let tx = Transaction::new_signed_with_payer(&[ix], Some(&payer.pubkey()), &[&payer], blockhash); - let res = banks.process_transaction(tx).await; - assert!(res.is_ok()); - - // Verify counter was initialized. - let counter_address = counter_pda().0; - let counter_account = banks.get_account(counter_address).await.unwrap().unwrap(); - let counter = Counter::try_from_bytes(&counter_account.data).unwrap(); - assert_eq!(counter_account.owner, realloc_api::ID); - assert_eq!(counter.value, 0); - - // Submit add transaction. - let ix = add(payer.pubkey(), 42); - let tx = Transaction::new_signed_with_payer(&[ix], Some(&payer.pubkey()), &[&payer], blockhash); - let res = banks.process_transaction(tx).await; - assert!(res.is_ok()); - - // Verify counter was incremented. - let counter_account = banks.get_account(counter_address).await.unwrap().unwrap(); - let counter = Counter::try_from_bytes(&counter_account.data).unwrap(); - assert_eq!(counter.value, 42); -} - diff --git a/basics/rent/steel/.gitignore b/basics/rent/steel/.gitignore deleted file mode 100644 index 052739dbc..000000000 --- a/basics/rent/steel/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -target -test-ledger diff --git a/basics/rent/steel/Cargo.toml b/basics/rent/steel/Cargo.toml deleted file mode 100644 index 7bfc3b1f1..000000000 --- a/basics/rent/steel/Cargo.toml +++ /dev/null @@ -1,21 +0,0 @@ -[workspace] -resolver = "2" -members = ["api", "program"] - -[workspace.package] -version = "0.1.0" -edition = "2021" -license = "Apache-2.0" -homepage = "" -documentation = "" -repository = "" -readme = "./README.md" -keywords = ["solana"] - -[workspace.dependencies] -rent_example-api = { path = "./api", version = "0.1.0" } -bytemuck = "1.14" -num_enum = "0.7" -solana-program = "2.1" -steel = "3.0" -thiserror = "1.0" diff --git a/basics/rent/steel/README.md b/basics/rent/steel/README.md deleted file mode 100644 index 0bec2629c..000000000 --- a/basics/rent/steel/README.md +++ /dev/null @@ -1,28 +0,0 @@ -# RentExample - -**RentExample** is a ... - -## API -- [`Consts`](api/src/consts.rs) – Program constants. -- [`Error`](api/src/error.rs) – Custom program errors. -- [`Event`](api/src/event.rs) – Custom program events. -- [`Instruction`](api/src/instruction.rs) – Declared instructions. - -## Instructions -- [`Add`](program/src/add.rs) – Add ... -- [`Initialize`](program/src/initialize.rs) – Initialize ... - -## State -- [`Counter`](api/src/state/counter.rs) – Counter ... - -## Get started - -Compile your program: -```sh -steel build -``` - -Run unit and integration tests: -```sh -steel test -``` diff --git a/basics/rent/steel/api/Cargo.toml b/basics/rent/steel/api/Cargo.toml deleted file mode 100644 index 7121fa9c3..000000000 --- a/basics/rent/steel/api/Cargo.toml +++ /dev/null @@ -1,18 +0,0 @@ -[package] -name = "rent_example-api" -description = "API for interacting with the RentExample program" -version.workspace = true -edition.workspace = true -license.workspace = true -homepage.workspace = true -documentation.workspace = true -repository.workspace = true -readme.workspace = true -keywords.workspace = true - -[dependencies] -bytemuck.workspace = true -num_enum.workspace = true -solana-program.workspace = true -steel.workspace = true -thiserror.workspace = true diff --git a/basics/rent/steel/api/src/error.rs b/basics/rent/steel/api/src/error.rs deleted file mode 100644 index c8d041045..000000000 --- a/basics/rent/steel/api/src/error.rs +++ /dev/null @@ -1,10 +0,0 @@ -use steel::*; - -#[derive(Debug, Error, Clone, Copy, PartialEq, Eq, IntoPrimitive)] -#[repr(u32)] -pub enum RentExampleError { - #[error("This is a dummy error")] - Dummy = 0, -} - -error!(RentExampleError); diff --git a/basics/rent/steel/api/src/instruction.rs b/basics/rent/steel/api/src/instruction.rs deleted file mode 100644 index 5a4289fe4..000000000 --- a/basics/rent/steel/api/src/instruction.rs +++ /dev/null @@ -1,16 +0,0 @@ -use steel::*; - -#[repr(u8)] -#[derive(Clone, Copy, Debug, Eq, PartialEq, TryFromPrimitive)] -pub enum RentInstruction { - CreateSystemAccount = 0, -} - -#[repr(C)] -#[derive(Clone, Copy, Debug, Pod, Zeroable)] -pub struct CreateSystemAccount { - pub name: [u8; 32], - pub address: [u8; 64], -} - -instruction!(RentInstruction, CreateSystemAccount); diff --git a/basics/rent/steel/api/src/lib.rs b/basics/rent/steel/api/src/lib.rs deleted file mode 100644 index 3c0c8c90a..000000000 --- a/basics/rent/steel/api/src/lib.rs +++ /dev/null @@ -1,21 +0,0 @@ -pub mod error; -pub mod instruction; -pub mod sdk; -pub mod state; - -pub mod prelude { - pub use crate::error::*; - pub use crate::instruction::*; - pub use crate::sdk::*; - pub use crate::state::*; - // Re-export common solana dependencies - pub use solana_program::{ - account_info::AccountInfo, entrypoint::ProgramResult, msg, pubkey::Pubkey, rent::Rent, - system_program, - }; -} - -use steel::*; - -// TODO Set program id -declare_id!("z7msBPQHDJjTvdQRoEcKyENgXDhSRYeHieN1ZMTqo35"); diff --git a/basics/rent/steel/api/src/sdk.rs b/basics/rent/steel/api/src/sdk.rs deleted file mode 100644 index ddb99ac96..000000000 --- a/basics/rent/steel/api/src/sdk.rs +++ /dev/null @@ -1,29 +0,0 @@ -use crate::prelude::*; -use steel::*; - -pub fn create_system_account( - payer: Pubkey, - new_account: Pubkey, - name: String, - address: String, -) -> Instruction { - let mut name_bytes = [0u8; 32]; - let mut address_bytes = [0u8; 64]; - - name_bytes[..name.len()].copy_from_slice(name.as_bytes()); - address_bytes[..address.len()].copy_from_slice(address.as_bytes()); - - Instruction { - program_id: crate::ID, - accounts: vec![ - AccountMeta::new(payer, true), - AccountMeta::new(new_account, true), - AccountMeta::new_readonly(system_program::ID, false), - ], - data: CreateSystemAccount { - name: name_bytes, - address: address_bytes, - } - .to_bytes(), - } -} diff --git a/basics/rent/steel/api/src/state/address.rs b/basics/rent/steel/api/src/state/address.rs deleted file mode 100644 index 381acd526..000000000 --- a/basics/rent/steel/api/src/state/address.rs +++ /dev/null @@ -1,11 +0,0 @@ -use super::RentAccount; -use steel::*; - -#[repr(C)] -#[derive(Clone, Copy, Debug, PartialEq, Pod, Zeroable)] -pub struct Address { - pub name: [u8; 32], - pub address: [u8; 64], -} - -account!(RentAccount, Address); diff --git a/basics/rent/steel/api/src/state/mod.rs b/basics/rent/steel/api/src/state/mod.rs deleted file mode 100644 index fe2aca28e..000000000 --- a/basics/rent/steel/api/src/state/mod.rs +++ /dev/null @@ -1,11 +0,0 @@ -mod address; - -pub use address::*; - -use steel::*; - -#[repr(u8)] -#[derive(Clone, Copy, Debug, Eq, PartialEq, IntoPrimitive, TryFromPrimitive)] -pub enum RentAccount { - Address = 0, -} diff --git a/basics/rent/steel/package.json b/basics/rent/steel/package.json deleted file mode 100644 index b08f2eb02..000000000 --- a/basics/rent/steel/package.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "name": "rent-example", - "version": "1.0.0", - "description": "rent example with steel framework for solana", - "scripts": { - "test": "cargo test-sbf", - "build-and-test": "cargo build-sbf --manifest-path=./program/Cargo.toml --sbf-out-dir=./tests/fixtures && pnpm test", - "build": "cargo build-sbf --manifest-path=./program/Cargo.toml --sbf-out-dir=./program/target/so", - "deploy": "solana program deploy ./program/target/so/rent_example_program.so" - }, - "keywords": [], - "author": "Sabir Khan", - "license": "ISC" -} diff --git a/basics/rent/steel/program/Cargo.toml b/basics/rent/steel/program/Cargo.toml deleted file mode 100644 index 89748845d..000000000 --- a/basics/rent/steel/program/Cargo.toml +++ /dev/null @@ -1,26 +0,0 @@ -[package] -name = "rent_example-program" -description = "" -version.workspace = true -edition.workspace = true -license.workspace = true -homepage.workspace = true -documentation.workspace = true -repository.workspace = true -readme.workspace = true -keywords.workspace = true - -[lib] -crate-type = ["cdylib", "lib"] - -[dependencies] -rent_example-api.workspace = true -solana-program.workspace = true -steel.workspace = true - -[dev-dependencies] -base64 = "0.21" -rand = "0.8.5" -solana-program-test = "1.18" -solana-sdk = "1.18" -tokio = { version = "1.35", features = ["full"] } diff --git a/basics/rent/steel/program/src/create_account.rs b/basics/rent/steel/program/src/create_account.rs deleted file mode 100644 index bceb37a85..000000000 --- a/basics/rent/steel/program/src/create_account.rs +++ /dev/null @@ -1,36 +0,0 @@ -use rent_example_api::prelude::*; -use solana_program::msg; -use steel::*; - -pub fn process_create_account(accounts: &[AccountInfo<'_>], data: &[u8]) -> ProgramResult { - let args = CreateSystemAccount::try_from_bytes(data)?; - - let [payer_info, new_account_info, system_program] = accounts else { - return Err(ProgramError::NotEnoughAccountKeys); - }; - - payer_info.is_signer()?; - new_account_info.is_signer()?; - - let account_size = std::mem::size_of::
(); - let rent = Rent::get()?; - let lamports_required = rent.minimum_balance(account_size); - - msg!("Account size: {}", account_size); - msg!("Lamports required: {}", lamports_required); - - // Create account with correct type argument - create_account::
( - new_account_info, - system_program, - payer_info, - &rent_example_api::ID, - &[], - )?; - - let address = new_account_info.as_account_mut::
(&rent_example_api::ID)?; - address.name = args.name; - address.address = args.address; - - Ok(()) -} diff --git a/basics/rent/steel/program/src/lib.rs b/basics/rent/steel/program/src/lib.rs deleted file mode 100644 index e4d937af0..000000000 --- a/basics/rent/steel/program/src/lib.rs +++ /dev/null @@ -1,21 +0,0 @@ -mod create_account; - -use create_account::*; -use rent_example_api::prelude::*; -use steel::*; - -pub fn process_instruction( - program_id: &Pubkey, - accounts: &[AccountInfo], - data: &[u8], -) -> ProgramResult { - let (ix, data) = parse_instruction::(&rent_example_api::ID, program_id, data)?; - - match ix { - RentInstruction::CreateSystemAccount => process_create_account(accounts, data)?, - } - - Ok(()) -} - -entrypoint!(process_instruction); diff --git a/basics/rent/steel/program/tests/test.rs b/basics/rent/steel/program/tests/test.rs deleted file mode 100644 index 0d6fe627f..000000000 --- a/basics/rent/steel/program/tests/test.rs +++ /dev/null @@ -1,95 +0,0 @@ -use rent_example_api::prelude::*; -use solana_program::hash::Hash; -use solana_program_test::{processor, BanksClient, ProgramTest}; -use solana_sdk::{signature::Keypair, signer::Signer, transaction::Transaction}; -use steel::*; - -async fn setup() -> (BanksClient, Keypair, Hash) { - let mut program_test = ProgramTest::new( - "rent_example_program", - rent_example_api::ID, - processor!(rent_example_program::process_instruction), - ); - program_test.prefer_bpf(true); - program_test.start().await -} - -#[tokio::test] -async fn test_create_system_account() { - // Setup test environment - let (mut banks_client, payer, recent_blockhash) = setup().await; - - // Generate a new keypair for the account we'll create - let new_account = Keypair::new(); - - // Test data - let name = "John Doe"; - let address = "123 Blockchain Street"; - - // Create the instruction - let ix = create_system_account( - payer.pubkey(), - new_account.pubkey(), - name.to_string(), - address.to_string(), - ); - - // Create and send transaction - let mut transaction = Transaction::new_signed_with_payer( - &[ix], - Some(&payer.pubkey()), - &[&payer, &new_account], - recent_blockhash, - ); - - // Process transaction - let result = banks_client.process_transaction(transaction).await; - assert!( - result.is_ok(), - "Failed to process transaction: {:?}", - result - ); - - // Fetch and verify the created account - let account = banks_client - .get_account(new_account.pubkey()) - .await - .expect("Failed to get account") - .expect("Account not found"); - - // Verify account owner - assert_eq!( - account.owner, - rent_example_api::ID, - "Incorrect account owner" - ); - - // Deserialize and verify account data - let address_account = - Address::try_from_bytes(&account.data).expect("Failed to deserialize account data"); - - // Convert stored bytes back to strings for comparison - let stored_name = String::from_utf8( - address_account - .name - .iter() - .take_while(|&&b| b != 0) - .cloned() - .collect::>(), - ) - .unwrap(); - - let stored_address = String::from_utf8( - address_account - .address - .iter() - .take_while(|&&b| b != 0) - .cloned() - .collect::>(), - ) - .unwrap(); - - // Verify the stored data matches what we sent - assert_eq!(stored_name, name, "Stored name doesn't match"); - assert_eq!(stored_address, address, "Stored address doesn't match"); -} diff --git a/basics/transfer-sol/seahorse/.gitignore b/basics/transfer-sol/seahorse/.gitignore deleted file mode 100644 index d243ecc13..000000000 --- a/basics/transfer-sol/seahorse/.gitignore +++ /dev/null @@ -1,7 +0,0 @@ - -.anchor -.DS_Store -target -**/*.rs.bk -node_modules -test-ledger diff --git a/basics/transfer-sol/seahorse/.prettierignore b/basics/transfer-sol/seahorse/.prettierignore deleted file mode 100644 index c1a0b75f0..000000000 --- a/basics/transfer-sol/seahorse/.prettierignore +++ /dev/null @@ -1,8 +0,0 @@ - -.anchor -.DS_Store -target -node_modules -dist -build -test-ledger diff --git a/basics/transfer-sol/seahorse/Anchor.toml b/basics/transfer-sol/seahorse/Anchor.toml deleted file mode 100644 index 0df8cc58f..000000000 --- a/basics/transfer-sol/seahorse/Anchor.toml +++ /dev/null @@ -1,15 +0,0 @@ -[features] -seeds = true -skip-lint = false -[programs.localnet] -seahorse = "Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS" - -[registry] -url = "https://api.apr.dev" - -[provider] -cluster = "Localnet" -wallet = "/Users/devenv/.config/solana/id.json" - -[scripts] -test = "pnpm ts-mocha -p ./tsconfig.json -t 1000000 tests/**/*.ts" diff --git a/basics/transfer-sol/seahorse/Cargo.toml b/basics/transfer-sol/seahorse/Cargo.toml deleted file mode 100644 index f39770481..000000000 --- a/basics/transfer-sol/seahorse/Cargo.toml +++ /dev/null @@ -1,14 +0,0 @@ -[workspace] -members = [ - "programs/*" -] -resolver = "2" - -[profile.release] -overflow-checks = true -lto = "fat" -codegen-units = 1 -[profile.release.build-override] -opt-level = 3 -incremental = false -codegen-units = 1 diff --git a/basics/transfer-sol/seahorse/README.md b/basics/transfer-sol/seahorse/README.md deleted file mode 100644 index 98c7b9911..000000000 --- a/basics/transfer-sol/seahorse/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Transfer SOL with Seahorse - -Sadly, you can't send SOL(lamports) to another SystemAccount (Public Key) with Seahorse. That's why this Seahorse example looks a little different than the Anchor and Native ones. Here, we initialize a Mock PDA account where we send SOL to using transferLamports, which invokes a CPI with the System Program. diff --git a/basics/transfer-sol/seahorse/migrations/deploy.ts b/basics/transfer-sol/seahorse/migrations/deploy.ts deleted file mode 100644 index 64a1c3599..000000000 --- a/basics/transfer-sol/seahorse/migrations/deploy.ts +++ /dev/null @@ -1,12 +0,0 @@ -// Migrations are an early feature. Currently, they're nothing more than this -// single deploy script that's invoked from the CLI, injecting a provider -// configured from the workspace's Anchor.toml. - -const anchor = require('@coral-xyz/anchor'); - -module.exports = async (provider) => { - // Configure client to use the provider. - anchor.setProvider(provider); - - // Add your deploy script here. -}; diff --git a/basics/transfer-sol/seahorse/package.json b/basics/transfer-sol/seahorse/package.json deleted file mode 100644 index b5355136b..000000000 --- a/basics/transfer-sol/seahorse/package.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "scripts": { - "lint:fix": "prettier */*.js \"*/**/*{.js,.ts}\" -w", - "lint": "prettier */*.js \"*/**/*{.js,.ts}\" --check" - }, - "dependencies": { - "@coral-xyz/anchor": "^0.27.0" - }, - "devDependencies": { - "chai": "^4.3.4", - "mocha": "^9.0.3", - "ts-mocha": "^10.0.0", - "@types/bn.js": "^5.1.0", - "@types/chai": "^4.3.0", - "@types/mocha": "^9.0.0", - "typescript": "^4.3.5", - "prettier": "^2.6.2" - } -} diff --git a/basics/transfer-sol/seahorse/programs/seahorse/Cargo.toml b/basics/transfer-sol/seahorse/programs/seahorse/Cargo.toml deleted file mode 100644 index 0f721114c..000000000 --- a/basics/transfer-sol/seahorse/programs/seahorse/Cargo.toml +++ /dev/null @@ -1,22 +0,0 @@ -[package] -name = "seahorse" -version = "0.1.0" -description = "Created with Anchor" -edition = "2021" - -[lib] -crate-type = ["cdylib", "lib"] -name = "seahorse" - -[features] -default = [] -cpi = ["no-entrypoint"] -no-entrypoint = [] -no-idl = [] -no-log-ix-name = [] -idl-build = ["anchor-lang/idl-build"] - -[dependencies] -anchor-lang = "0.27.0" -anchor-spl = "0.27.0" -pyth-sdk-solana = { version = "0.7.1", optional = true } diff --git a/basics/transfer-sol/seahorse/programs/seahorse/Xargo.toml b/basics/transfer-sol/seahorse/programs/seahorse/Xargo.toml deleted file mode 100644 index 475fb71ed..000000000 --- a/basics/transfer-sol/seahorse/programs/seahorse/Xargo.toml +++ /dev/null @@ -1,2 +0,0 @@ -[target.bpfel-unknown-unknown.dependencies.std] -features = [] diff --git a/basics/transfer-sol/seahorse/programs/seahorse/src/dot/mod.rs b/basics/transfer-sol/seahorse/programs/seahorse/src/dot/mod.rs deleted file mode 100644 index e2c04eaaa..000000000 --- a/basics/transfer-sol/seahorse/programs/seahorse/src/dot/mod.rs +++ /dev/null @@ -1 +0,0 @@ -pub mod program; diff --git a/basics/transfer-sol/seahorse/programs/seahorse/src/dot/program.rs b/basics/transfer-sol/seahorse/programs/seahorse/src/dot/program.rs deleted file mode 100644 index 370c1562e..000000000 --- a/basics/transfer-sol/seahorse/programs/seahorse/src/dot/program.rs +++ /dev/null @@ -1,74 +0,0 @@ -#![allow(unused_imports)] -#![allow(unused_variables)] -#![allow(unused_mut)] -use crate::{id, seahorse_util::*}; -use anchor_lang::{prelude::*, solana_program}; -use anchor_spl::token::{self, Mint, Token, TokenAccount}; -use std::{cell::RefCell, rc::Rc}; - -#[account] -#[derive(Debug)] -pub struct MockAccount { - pub mock_value: u8, -} - -impl<'info, 'entrypoint> MockAccount { - pub fn load( - account: &'entrypoint mut Box>, - programs_map: &'entrypoint ProgramsMap<'info>, - ) -> Mutable> { - let mock_value = account.mock_value; - - Mutable::new(LoadedMockAccount { - __account__: account, - __programs__: programs_map, - mock_value, - }) - } - - pub fn store(loaded: Mutable) { - let mut loaded = loaded.borrow_mut(); - let mock_value = loaded.mock_value; - - loaded.__account__.mock_value = mock_value; - } -} - -#[derive(Debug)] -pub struct LoadedMockAccount<'info, 'entrypoint> { - pub __account__: &'entrypoint mut Box>, - pub __programs__: &'entrypoint ProgramsMap<'info>, - pub mock_value: u8, -} - -pub fn init_mock_account_handler<'info>( - mut signer: SeahorseSigner<'info, '_>, - mut mock_account: Empty>>, -) -> () { - let mut account = mock_account.account.clone(); - - assign!( - account.borrow_mut().mock_value, - >::try_from(0).unwrap() - ); -} - -pub fn transfer_sol_with_cpi_handler<'info>( - mut sender: SeahorseSigner<'info, '_>, - mut recipient: Mutable>, - mut amount: u64, -) -> () { - solana_program::program::invoke( - &solana_program::system_instruction::transfer( - &sender.key(), - &recipient.borrow().__account__.key(), - amount.clone(), - ), - &[ - sender.to_account_info(), - recipient.borrow().__account__.to_account_info(), - sender.programs.get("system_program").clone(), - ], - ) - .unwrap(); -} diff --git a/basics/transfer-sol/seahorse/programs/seahorse/src/lib.rs b/basics/transfer-sol/seahorse/programs/seahorse/src/lib.rs deleted file mode 100644 index 7aed144aa..000000000 --- a/basics/transfer-sol/seahorse/programs/seahorse/src/lib.rs +++ /dev/null @@ -1,239 +0,0 @@ -#![allow(unused_imports)] -#![allow(unused_variables)] -#![allow(unused_mut)] - -pub mod dot; - -use anchor_lang::prelude::*; -use anchor_spl::{ - associated_token::{self, AssociatedToken}, - token::{self, Mint, Token, TokenAccount}, -}; - -use dot::program::*; -use std::{cell::RefCell, rc::Rc}; - -declare_id!("2RjL4mpTANyGxz7fLWEbQtmdEDti7c4CqsLR96mgvcaV"); - -pub mod seahorse_util { - use super::*; - - #[cfg(feature = "pyth-sdk-solana")] - pub use pyth_sdk_solana::{load_price_feed_from_account_info, PriceFeed}; - use std::{collections::HashMap, fmt::Debug, ops::Deref}; - - pub struct Mutable(Rc>); - - impl Mutable { - pub fn new(obj: T) -> Self { - Self(Rc::new(RefCell::new(obj))) - } - } - - impl Clone for Mutable { - fn clone(&self) -> Self { - Self(self.0.clone()) - } - } - - impl Deref for Mutable { - type Target = Rc>; - - fn deref(&self) -> &Self::Target { - &self.0 - } - } - - impl Debug for Mutable { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(f, "{:?}", self.0) - } - } - - impl Default for Mutable { - fn default() -> Self { - Self::new(T::default()) - } - } - - impl Mutable> { - pub fn wrapped_index(&self, mut index: i128) -> usize { - if index >= 0 { - return index.try_into().unwrap(); - } - - index += self.borrow().len() as i128; - - return index.try_into().unwrap(); - } - } - - impl Mutable<[T; N]> { - pub fn wrapped_index(&self, mut index: i128) -> usize { - if index >= 0 { - return index.try_into().unwrap(); - } - - index += self.borrow().len() as i128; - - return index.try_into().unwrap(); - } - } - - #[derive(Clone)] - pub struct Empty { - pub account: T, - pub bump: Option, - } - - #[derive(Clone, Debug)] - pub struct ProgramsMap<'info>(pub HashMap<&'static str, AccountInfo<'info>>); - - impl<'info> ProgramsMap<'info> { - pub fn get(&self, name: &'static str) -> AccountInfo<'info> { - self.0.get(name).unwrap().clone() - } - } - - #[derive(Clone, Debug)] - pub struct WithPrograms<'info, 'entrypoint, A> { - pub account: &'entrypoint A, - pub programs: &'entrypoint ProgramsMap<'info>, - } - - impl<'info, 'entrypoint, A> Deref for WithPrograms<'info, 'entrypoint, A> { - type Target = A; - - fn deref(&self) -> &Self::Target { - &self.account - } - } - - pub type SeahorseAccount<'info, 'entrypoint, A> = - WithPrograms<'info, 'entrypoint, Box>>; - - pub type SeahorseSigner<'info, 'entrypoint> = WithPrograms<'info, 'entrypoint, Signer<'info>>; - - #[derive(Clone, Debug)] - pub struct CpiAccount<'info> { - #[doc = "CHECK: CpiAccounts temporarily store AccountInfos."] - pub account_info: AccountInfo<'info>, - pub is_writable: bool, - pub is_signer: bool, - pub seeds: Option>>, - } - - #[macro_export] - macro_rules! seahorse_const { - ($ name : ident , $ value : expr) => { - macro_rules! $name { - () => { - $value - }; - } - - pub(crate) use $name; - }; - } - - #[macro_export] - macro_rules! assign { - ($ lval : expr , $ rval : expr) => {{ - let temp = $rval; - - $lval = temp; - }}; - } - - #[macro_export] - macro_rules! index_assign { - ($ lval : expr , $ idx : expr , $ rval : expr) => { - let temp_rval = $rval; - let temp_idx = $idx; - - $lval[temp_idx] = temp_rval; - }; - } - - pub(crate) use assign; - - pub(crate) use index_assign; - - pub(crate) use seahorse_const; -} - -#[program] -mod seahorse { - use super::*; - use seahorse_util::*; - use std::collections::HashMap; - - #[derive(Accounts)] - pub struct InitMockAccount<'info> { - #[account(mut)] - pub signer: Signer<'info>, - # [account (init , space = std :: mem :: size_of :: < dot :: program :: MockAccount > () + 8 , payer = signer , seeds = ["mock_account" . as_bytes () . as_ref ()] , bump)] - pub mock_account: Box>, - pub rent: Sysvar<'info, Rent>, - pub system_program: Program<'info, System>, - } - - pub fn init_mock_account(ctx: Context) -> Result<()> { - let mut programs = HashMap::new(); - - programs.insert( - "system_program", - ctx.accounts.system_program.to_account_info(), - ); - - let programs_map = ProgramsMap(programs); - let signer = SeahorseSigner { - account: &ctx.accounts.signer, - programs: &programs_map, - }; - - let mock_account = Empty { - account: dot::program::MockAccount::load(&mut ctx.accounts.mock_account, &programs_map), - bump: ctx.bumps.get("mock_account").map(|bump| *bump), - }; - - init_mock_account_handler(signer.clone(), mock_account.clone()); - - dot::program::MockAccount::store(mock_account.account); - - return Ok(()); - } - - #[derive(Accounts)] - # [instruction (amount : u64)] - pub struct TransferSolWithCpi<'info> { - #[account(mut)] - pub sender: Signer<'info>, - #[account(mut)] - pub recipient: Box>, - pub system_program: Program<'info, System>, - } - - pub fn transfer_sol_with_cpi(ctx: Context, amount: u64) -> Result<()> { - let mut programs = HashMap::new(); - - programs.insert( - "system_program", - ctx.accounts.system_program.to_account_info(), - ); - - let programs_map = ProgramsMap(programs); - let sender = SeahorseSigner { - account: &ctx.accounts.sender, - programs: &programs_map, - }; - - let recipient = dot::program::MockAccount::load(&mut ctx.accounts.recipient, &programs_map); - - transfer_sol_with_cpi_handler(sender.clone(), recipient.clone(), amount); - - dot::program::MockAccount::store(recipient); - - return Ok(()); - } -} diff --git a/basics/transfer-sol/seahorse/programs_py/seahorse.py b/basics/transfer-sol/seahorse/programs_py/seahorse.py deleted file mode 100644 index 47f53c23b..000000000 --- a/basics/transfer-sol/seahorse/programs_py/seahorse.py +++ /dev/null @@ -1,26 +0,0 @@ -# seahorse -# Built with Seahorse v0.2.7 - -from seahorse.prelude import * - -declare_id('2RjL4mpTANyGxz7fLWEbQtmdEDti7c4CqsLR96mgvcaV') - -class MockAccount(Account): - mock_value: u8 - - -## We don't care about this instruction, but we need an address to send our SOL to. -@instruction -def init_mock_account(signer: Signer, mock_account: Empty[MockAccount]): - account = mock_account.init( - payer = signer, - seeds = ['mock_account'], - ) - account.mock_value = u8(0) - -@instruction -def transfer_sol_with_cpi(sender: Signer, recipient: MockAccount, amount: u64): - sender.transfer_lamports( - to = recipient, - amount = amount, - ) diff --git a/basics/transfer-sol/seahorse/programs_py/seahorse/__init__.py b/basics/transfer-sol/seahorse/programs_py/seahorse/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/basics/transfer-sol/seahorse/programs_py/seahorse/prelude.py b/basics/transfer-sol/seahorse/programs_py/seahorse/prelude.py deleted file mode 100644 index d7f012230..000000000 --- a/basics/transfer-sol/seahorse/programs_py/seahorse/prelude.py +++ /dev/null @@ -1,1062 +0,0 @@ -# seahorse.prelude: the basis for writing Seahorse programs. -# -# NOTE: this file just contains types and documentation for your editor. This -# is NOT executable code, and you won't be able to change the behavior of your -# Seahorse programs by editing this file. - -from typing import * -from math import floor, ceil - -T = TypeVar('T') -N = TypeVar('N') - - -# ========== -# Rust types -# ========== - -class u8: - """8-bit unsigned integer.""" - - def __init__(self, _: Any) -> 'u8': - """Construct an u8.""" - - def __add__(self, other: 'u8') -> 'u8': - pass - - def __radd__(self, other: 'u8') -> 'u8': - pass - - def __iadd__(self, other: 'u8') -> 'u8': - pass - - def __sub__(self, other: 'u8') -> 'u8': - pass - - def __rsub__(self, other: 'u8') -> 'u8': - pass - - def __isub__(self, other: 'u8') -> 'u8': - pass - - def __mul__(self, other: 'u8') -> 'u8': - pass - - def __rmul__(self, other: 'u8') -> 'u8': - pass - - def __imul__(self, other: 'u8') -> 'u8': - pass - - def __truediv__(self, other: 'f64') -> 'f64': - pass - - def __rtruediv__(self, other: 'f64') -> 'f64': - pass - - def __itruediv__(self, other: 'f64') -> 'f64': - pass - - def __floordiv__(self, other: 'u8') -> 'u8': - pass - - def __rfloordiv__(self, other: 'u8') -> 'u8': - pass - - def __ifloordiv__(self, other: 'u8') -> 'u8': - pass - - def __lt__(self, other: 'u8') -> bool: - pass - - def __le__(self, other: 'u8') -> bool: - pass - - def __eq__(self, other: 'u8') -> bool: - pass - - def __ne__(self, other: 'u8') -> bool: - pass - - def __ge__(self, other: 'u8') -> bool: - pass - - def __gt__(self, other: 'u8') -> bool: - pass - - -class u16: - """16-bit unsigned integer.""" - - def __init__(self, _: Any) -> 'u16': - """Construct an u16.""" - - def __add__(self, other: 'u16') -> 'u16': - pass - - def __radd__(self, other: 'u16') -> 'u16': - pass - - def __iadd__(self, other: 'u16') -> 'u16': - pass - - def __sub__(self, other: 'u16') -> 'u16': - pass - - def __rsub__(self, other: 'u16') -> 'u16': - pass - - def __isub__(self, other: 'u16') -> 'u16': - pass - - def __mul__(self, other: 'u16') -> 'u16': - pass - - def __rmul__(self, other: 'u16') -> 'u16': - pass - - def __imul__(self, other: 'u16') -> 'u16': - pass - - def __truediv__(self, other: 'f64') -> 'f64': - pass - - def __rtruediv__(self, other: 'f64') -> 'f64': - pass - - def __itruediv__(self, other: 'f64') -> 'f64': - pass - - def __floordiv__(self, other: 'u16') -> 'u16': - pass - - def __rfloordiv__(self, other: 'u16') -> 'u16': - pass - - def __ifloordiv__(self, other: 'u16') -> 'u16': - pass - - def __lt__(self, other: 'u16') -> bool: - pass - - def __le__(self, other: 'u16') -> bool: - pass - - def __eq__(self, other: 'u16') -> bool: - pass - - def __ne__(self, other: 'u16') -> bool: - pass - - def __ge__(self, other: 'u16') -> bool: - pass - - def __gt__(self, other: 'u16') -> bool: - pass - -class u32: - """32-bit unsigned integer.""" - - def __init__(self, _: Any) -> 'u32': - """Construct an u32.""" - - def __add__(self, other: 'u32') -> 'u32': - pass - - def __radd__(self, other: 'u32') -> 'u32': - pass - - def __iadd__(self, other: 'u32') -> 'u32': - pass - - def __sub__(self, other: 'u32') -> 'u32': - pass - - def __rsub__(self, other: 'u32') -> 'u32': - pass - - def __isub__(self, other: 'u32') -> 'u32': - pass - - def __mul__(self, other: 'u32') -> 'u32': - pass - - def __rmul__(self, other: 'u32') -> 'u32': - pass - - def __imul__(self, other: 'u32') -> 'u32': - pass - - def __truediv__(self, other: 'f64') -> 'f64': - pass - - def __rtruediv__(self, other: 'f64') -> 'f64': - pass - - def __itruediv__(self, other: 'f64') -> 'f64': - pass - - def __floordiv__(self, other: 'u32') -> 'u32': - pass - - def __rfloordiv__(self, other: 'u32') -> 'u32': - pass - - def __ifloordiv__(self, other: 'u32') -> 'u32': - pass - - def __lt__(self, other: 'u32') -> bool: - pass - - def __le__(self, other: 'u32') -> bool: - pass - - def __eq__(self, other: 'u32') -> bool: - pass - - def __ne__(self, other: 'u32') -> bool: - pass - - def __ge__(self, other: 'u32') -> bool: - pass - - def __gt__(self, other: 'u32') -> bool: - pass - -class u64: - """64-bit unsigned integer.""" - - def __init__(self, _: Any) -> 'u64': - """Construct an u64.""" - - def __add__(self, other: 'u64') -> 'u64': - pass - - def __radd__(self, other: 'u64') -> 'u64': - pass - - def __iadd__(self, other: 'u64') -> 'u64': - pass - - def __sub__(self, other: 'u64') -> 'u64': - pass - - def __rsub__(self, other: 'u64') -> 'u64': - pass - - def __isub__(self, other: 'u64') -> 'u64': - pass - - def __mul__(self, other: 'u64') -> 'u64': - pass - - def __rmul__(self, other: 'u64') -> 'u64': - pass - - def __imul__(self, other: 'u64') -> 'u64': - pass - - def __truediv__(self, other: 'f64') -> 'f64': - pass - - def __rtruediv__(self, other: 'f64') -> 'f64': - pass - - def __itruediv__(self, other: 'f64') -> 'f64': - pass - - def __floordiv__(self, other: 'u64') -> 'u64': - pass - - def __rfloordiv__(self, other: 'u64') -> 'u64': - pass - - def __ifloordiv__(self, other: 'u64') -> 'u64': - pass - - def __lt__(self, other: 'u64') -> bool: - pass - - def __le__(self, other: 'u64') -> bool: - pass - - def __eq__(self, other: 'u64') -> bool: - pass - - def __ne__(self, other: 'u64') -> bool: - pass - - def __ge__(self, other: 'u64') -> bool: - pass - - def __gt__(self, other: 'u64') -> bool: - pass - -class u128: - """128-bit unsigned integer.""" - - def __init__(self, _: Any) -> 'u128': - """Construct an u128.""" - - def __add__(self, other: 'u128') -> 'u128': - pass - - def __radd__(self, other: 'u128') -> 'u128': - pass - - def __iadd__(self, other: 'u128') -> 'u128': - pass - - def __sub__(self, other: 'u128') -> 'u128': - pass - - def __rsub__(self, other: 'u128') -> 'u128': - pass - - def __isub__(self, other: 'u128') -> 'u128': - pass - - def __mul__(self, other: 'u128') -> 'u128': - pass - - def __rmul__(self, other: 'u128') -> 'u128': - pass - - def __imul__(self, other: 'u128') -> 'u128': - pass - - def __truediv__(self, other: 'f64') -> 'f64': - pass - - def __rtruediv__(self, other: 'f64') -> 'f64': - pass - - def __itruediv__(self, other: 'f64') -> 'f64': - pass - - def __floordiv__(self, other: 'u128') -> 'u128': - pass - - def __rfloordiv__(self, other: 'u128') -> 'u128': - pass - - def __ifloordiv__(self, other: 'u128') -> 'u128': - pass - - def __lt__(self, other: 'u128') -> bool: - pass - - def __le__(self, other: 'u128') -> bool: - pass - - def __eq__(self, other: 'u128') -> bool: - pass - - def __ne__(self, other: 'u128') -> bool: - pass - - def __ge__(self, other: 'u128') -> bool: - pass - - def __gt__(self, other: 'u128') -> bool: - pass - -class i8: - """8-bit signed integer.""" - - def __init__(self, _: Any) -> 'i8': - """Construct an i8.""" - - def __add__(self, other: 'i8') -> 'i8': - pass - - def __radd__(self, other: 'i8') -> 'i8': - pass - - def __iadd__(self, other: 'i8') -> 'i8': - pass - - def __sub__(self, other: 'i8') -> 'i8': - pass - - def __rsub__(self, other: 'i8') -> 'i8': - pass - - def __isub__(self, other: 'i8') -> 'i8': - pass - - def __mul__(self, other: 'i8') -> 'i8': - pass - - def __rmul__(self, other: 'i8') -> 'i8': - pass - - def __imul__(self, other: 'i8') -> 'i8': - pass - - def __truediv__(self, other: 'f64') -> 'f64': - pass - - def __rtruediv__(self, other: 'f64') -> 'f64': - pass - - def __itruediv__(self, other: 'f64') -> 'f64': - pass - - def __floordiv__(self, other: 'i8') -> 'i8': - pass - - def __rfloordiv__(self, other: 'i8') -> 'i8': - pass - - def __ifloordiv__(self, other: 'i8') -> 'i8': - pass - -class i16: - """16-bit signed integer.""" - - def __init__(self, _: Any) -> 'i16': - """Construct an i16.""" - - def __add__(self, other: 'i16') -> 'i16': - pass - - def __radd__(self, other: 'i16') -> 'i16': - pass - - def __iadd__(self, other: 'i16') -> 'i16': - pass - - def __sub__(self, other: 'i16') -> 'i16': - pass - - def __rsub__(self, other: 'i16') -> 'i16': - pass - - def __isub__(self, other: 'i16') -> 'i16': - pass - - def __mul__(self, other: 'i16') -> 'i16': - pass - - def __rmul__(self, other: 'i16') -> 'i16': - pass - - def __imul__(self, other: 'i16') -> 'i16': - pass - - def __truediv__(self, other: 'f64') -> 'f64': - pass - - def __rtruediv__(self, other: 'f64') -> 'f64': - pass - - def __itruediv__(self, other: 'f64') -> 'f64': - pass - - def __floordiv__(self, other: 'i16') -> 'i16': - pass - - def __rfloordiv__(self, other: 'i16') -> 'i16': - pass - - def __ifloordiv__(self, other: 'i16') -> 'i16': - pass - - def __lt__(self, other: 'i16') -> bool: - pass - - def __le__(self, other: 'i16') -> bool: - pass - - def __eq__(self, other: 'i16') -> bool: - pass - - def __ne__(self, other: 'i16') -> bool: - pass - - def __ge__(self, other: 'i16') -> bool: - pass - - def __gt__(self, other: 'i16') -> bool: - pass - -class i32: - """32-bit signed integer.""" - - def __init__(self, _: Any) -> 'i32': - """Construct an i32.""" - - def __add__(self, other: 'i32') -> 'i32': - pass - - def __radd__(self, other: 'i32') -> 'i32': - pass - - def __iadd__(self, other: 'i32') -> 'i32': - pass - - def __sub__(self, other: 'i32') -> 'i32': - pass - - def __rsub__(self, other: 'i32') -> 'i32': - pass - - def __isub__(self, other: 'i32') -> 'i32': - pass - - def __mul__(self, other: 'i32') -> 'i32': - pass - - def __rmul__(self, other: 'i32') -> 'i32': - pass - - def __imul__(self, other: 'i32') -> 'i32': - pass - - def __truediv__(self, other: 'f64') -> 'f64': - pass - - def __rtruediv__(self, other: 'f64') -> 'f64': - pass - - def __itruediv__(self, other: 'f64') -> 'f64': - pass - - def __floordiv__(self, other: 'i32') -> 'i32': - pass - - def __rfloordiv__(self, other: 'i32') -> 'i32': - pass - - def __ifloordiv__(self, other: 'i32') -> 'i32': - pass - - def __lt__(self, other: 'i32') -> bool: - pass - - def __le__(self, other: 'i32') -> bool: - pass - - def __eq__(self, other: 'i32') -> bool: - pass - - def __ne__(self, other: 'i32') -> bool: - pass - - def __ge__(self, other: 'i32') -> bool: - pass - - def __gt__(self, other: 'i32') -> bool: - pass - -class i64: - """64-bit signed integer.""" - - def __init__(self, _: Any) -> 'i64': - """Construct an i64.""" - - def __add__(self, other: 'i64') -> 'i64': - pass - - def __radd__(self, other: 'i64') -> 'i64': - pass - - def __iadd__(self, other: 'i64') -> 'i64': - pass - - def __sub__(self, other: 'i64') -> 'i64': - pass - - def __rsub__(self, other: 'i64') -> 'i64': - pass - - def __isub__(self, other: 'i64') -> 'i64': - pass - - def __mul__(self, other: 'i64') -> 'i64': - pass - - def __rmul__(self, other: 'i64') -> 'i64': - pass - - def __imul__(self, other: 'i64') -> 'i64': - pass - - def __truediv__(self, other: 'f64') -> 'f64': - pass - - def __rtruediv__(self, other: 'f64') -> 'f64': - pass - - def __itruediv__(self, other: 'f64') -> 'f64': - pass - - def __floordiv__(self, other: 'i64') -> 'i64': - pass - - def __rfloordiv__(self, other: 'i64') -> 'i64': - pass - - def __ifloordiv__(self, other: 'i64') -> 'i64': - pass - - def __lt__(self, other: 'i64') -> bool: - pass - - def __le__(self, other: 'i64') -> bool: - pass - - def __eq__(self, other: 'i64') -> bool: - pass - - def __ne__(self, other: 'i64') -> bool: - pass - - def __ge__(self, other: 'i64') -> bool: - pass - - def __gt__(self, other: 'i64') -> bool: - pass - -class i128: - """128-bit signed integer.""" - - def __init__(self, _: Any) -> 'i128': - """Construct an i128.""" - - def __add__(self, other: 'i128') -> 'i128': - pass - - def __radd__(self, other: 'i128') -> 'i128': - pass - - def __iadd__(self, other: 'i128') -> 'i128': - pass - - def __sub__(self, other: 'i128') -> 'i128': - pass - - def __rsub__(self, other: 'i128') -> 'i128': - pass - - def __isub__(self, other: 'i128') -> 'i128': - pass - - def __mul__(self, other: 'i128') -> 'i128': - pass - - def __rmul__(self, other: 'i128') -> 'i128': - pass - - def __imul__(self, other: 'i128') -> 'i128': - pass - - def __truediv__(self, other: 'f64') -> 'f64': - pass - - def __rtruediv__(self, other: 'f64') -> 'f64': - pass - - def __itruediv__(self, other: 'f64') -> 'f64': - pass - - def __floordiv__(self, other: 'i128') -> 'i128': - pass - - def __rfloordiv__(self, other: 'i128') -> 'i128': - pass - - def __ifloordiv__(self, other: 'i128') -> 'i128': - pass - - def __lt__(self, other: 'i128') -> bool: - pass - - def __le__(self, other: 'i128') -> bool: - pass - - def __eq__(self, other: 'i128') -> bool: - pass - - def __ne__(self, other: 'i128') -> bool: - pass - - def __ge__(self, other: 'i128') -> bool: - pass - - def __gt__(self, other: 'i128') -> bool: - pass - -class f64: - """64-bit floating point number.""" - - def __init__(self, _: Any) -> 'f64': - """Construct an f64.""" - - def __add__(self, other: 'f64') -> 'f64': - pass - - def __radd__(self, other: 'f64') -> 'f64': - pass - - def __iadd__(self, other: 'f64') -> 'f64': - pass - - def __sub__(self, other: 'f64') -> 'f64': - pass - - def __rsub__(self, other: 'f64') -> 'f64': - pass - - def __isub__(self, other: 'f64') -> 'f64': - pass - - def __mul__(self, other: 'f64') -> 'f64': - pass - - def __rmul__(self, other: 'f64') -> 'f64': - pass - - def __imul__(self, other: 'f64') -> 'f64': - pass - - def __truediv__(self, other: 'f64') -> 'f64': - pass - - def __rtruediv__(self, other: 'f64') -> 'f64': - pass - - def __itruediv__(self, other: 'f64') -> 'f64': - pass - - def __floordiv__(self, other: 'f64') -> 'f64': - pass - - def __rfloordiv__(self, other: 'f64') -> 'f64': - pass - - def __ifloordiv__(self, other: 'f64') -> 'f64': - pass - - def __lt__(self, other: 'f64') -> bool: - pass - - def __le__(self, other: 'f64') -> bool: - pass - - def __eq__(self, other: 'f64') -> bool: - pass - - def __ne__(self, other: 'f64') -> bool: - pass - - def __ge__(self, other: 'f64') -> bool: - pass - - def __gt__(self, other: 'f64') -> bool: - pass - -class Array(Generic[T, N]): - """ - A fixed-length array: contains type T and has size N. - - N must be known at compile-time, and may not be anything other than a non-negative integer literal. Example: - - ``` - # Good - a: Array[u8, 4] - - # Bad - N = 4 - a: Array[u8, N] - ``` - """ - - def __init__(iterable: Iterable[T], len: N) -> 'Array[T, N]': - """ - Construct an array from an iterable and a length. - - The parameter len must be known at compile-time, and may not be anything other than a non-negative integer literal. Example: - - ``` - a = [0, 1, 2, 3] - - # Good - Array(a, 4) - # Compiles, but will definitely error at runtime - Array(a, 5) - - # Bad (will not compile) - a = [0, 1, 2, 3] - Array(a, len(a)) - ``` - """ - - def __getitem__(self, index: Any) -> T: - """ - Index into this array. - - Like Python's native list type, performs wrapping indexing - if you pass in -1, you'll get the last element of the array. - """ - -def array(*elements: T) -> Array[T, N]: - """ - Create an array from a variadic list of elements. Example: - - ``` - # Array[u64, 3] - array(u64(0), 1, 2) - - # Array[str, 4] - array('seahorse', 'is', 'the', 'best!') - ``` - """ - -class Enum: - """ - A type that can have one of multiple named values. - - Note that unlike Rust enums, these cannot contain any data (other than the variant itself). Example: - - ``` - class MyEnum(Enum): - ONE = 1 - TWO = 2 - THREE = 3 - - @instruction - def use_enum(code: MyEnum): - if code == MyEnum.ONE: - print(1) - # ... - ``` - """ - - -# ============ -# Solana types -# ============ - -class Pubkey: - """32-byte account identifier.""" - - def find_program_address(seeds: List[Any], program_id: 'Pubkey' = None) -> Tuple['Pubkey', u8]: - """ - Find a valid program derived address and its corresponding bump seed. Calls the same function from Solana's Pubkey struct - read more [here](https://docs.rs/solana-program/latest/solana_program/pubkey/struct.Pubkey.html#method.find_program_address). - - @param seeds: A list of parameters to uniquely identify this account among all accounts created by your program. These may be string literals, other accounts, integers, or lists of bytes. - @param program_id: The pubkey of the program that the PDA belongs to. Defaults to the current program's key. - @returns: The canonical pubkey and bump seed. - """ - -class AccountWithKey: - """Generic Solana account.""" - - def key(self) -> Pubkey: - """Get this account's key.""" - -class Account(AccountWithKey): - """User-defined Solana account.""" - - def transfer_lamports(self, to: AccountWithKey, amount: u64): - """ - Transfer some SOL directly to another account. Since this account is program-owned, this transfer does not require a CPI. - - @param to: The recipient Solana account. - @param amount: The amount (in lamports, not SOL) to transfer. - """ - -class Event: - """Anchor event that clients can listen for""" - - def emit(self): - """ - Emit the event to the blockchain - """ - -class Signer(AccountWithKey): - """Instruction signer.""" - - def transfer_lamports(self, to: AccountWithKey, amount: u64): - """ - Transfer some SOL directly to another account. Unlike using transfer_lamports from a program account, this transfer will require a CPI. - - @param to: The recipient Solana account. - @param amount: The amount (in lamports, not SOL) to transfer. - """ - -class Empty(Generic[T]): - """An account that needs to be initialized.""" - - def init(self, payer: Signer, seeds: List[Any] = None, mint: 'TokenMint' = None, decimals: u8 = None, authority: AccountWithKey = None, associated: bool = False, space: u64 = None, padding: u64 = None) -> T: - """ - Initialize the account. - - @param payer: The account that will pay for the rent cost of the initialized account. Must be an instruction signer. - @param seeds: A list of parameters to uniquely identify this account among all accounts created by your program. These may be string literals, other accounts, integers, or lists of bytes. - @param mint: If initializing a TokenAccount, this is the mint that the account belongs to. - @param decimals: If initializing a TokenMint, this is the number of decimals the new token has. - @param authority: If initializing a TokenAccount/TokenMint, this is the account that has authority over the account. - @param associated: If initializing an associated token account, must be set to true. - @param space: If initializing a program account, you can use this to overwrite Seahorse's calculation of the account size. - @param padding: If initializing a program account, you can use this to add extra space to Seahorse's calculation of the account size. - @returns: The new, initialized account. All of the data in this account will be set to 0, bytewise. - """ - - def bump(self) -> u8: - """ - Get this account's bump, needed if you want to use this account to sign CPI calls. - - If you've initialized an account without seeds, then a bump will not have been calculated. This will result in a runtime error when you try to access it. - """ - - def key(self) -> Pubkey: - """Get this account's key.""" - -class CpiAccount: - """Account and metadata used for making arbitrary CPIs (via `Program.invoke`).""" - - def __init__(account: AccountWithKey, mut: bool = False, signer: bool = False, seeds: List[Any] = None) -> 'CpiAccount': - """ - Create the CpiAccount. - - @param account: The account being passed to the CPI. - @param mut: Whether this account needs to be mutable for the CPI - defaults to false. - @param signer: Whether this account needs to be an instruction signer - defaults to false. Mutually exclusive with seeds, and should only really be true if account is a Signer. - @param seeds: PDA signer seeds, if this account needs to sign the CPI. Mutually exclusive with signer. - """ - -class Program(AccountWithKey): - """Arbitrary program.""" - - def invoke(self, accounts: List[CpiAccount], data: List[u8]): - """ - Call this program in a cross-program invocation. Make sure you know what you're doing before you try using this - a poorly crafted data list could cost you real money. - - @param accounts: List of accounts being passed to the CPI - the program itself does not need to be in here. - @param data: "Raw" list of bytes used to tell the program what to do, pass args, etc. - """ - -class UncheckedAccount(AccountWithKey): - """ - Raw account that has had no safety checks performed on it. - - The underlying Anchor code cannot guarantee anything about the account unless you check it in your instruction - not the type, not the data, not the program it came from. Use carefully. - """ - -class Clock: - """ - Solana's Clock sysvar. - - Consult Solana's reference to learn more. Information copied from https://docs.rs/solana-program/1.14.3/solana_program/clock/struct.Clock.html. - """ - - def slot(self) -> u64: - """Get the current network/bank Slot.""" - - def epoch_start_timestamp(self) -> i64: - """Get the timestamp of the first Slot in this Epoch.""" - - def epoch(self) -> u64: - """Get the bank Epoch.""" - - def leader_schedule_epoch(self) -> u64: - """Get the future Epoch for which the leader schedule has most recently been calculated.""" - - def unix_timestamp(self) -> i64: - """ - Get the estimated current UNIX timestamp. - - Originally computed from genesis creation time and network time in slots (drifty); corrected using validator timestamp oracle as of timestamp_correction and timestamp_bounding features. - """ - -class TokenAccount(AccountWithKey): - """SPL token account.""" - - def authority(self) -> Pubkey: - """Get the owner of this token account.""" - - def amount(self) -> u64: - """Get the amount of token stored in this account.""" - - def mint(self) -> Pubkey: - """Get the mint that this token account corresponds to.""" - - def transfer(self, authority: AccountWithKey, to: 'TokenAccount', amount: u64, signer: List[Any] = None): - """ - Transfer funds from this SPL token account to another. - - @param authority: The account that owns this TokenAccount. Must be an instruction signer or the account given by the `signer` param. - @param to: The recipient TokenAccount. - @param amount: How much (in *native* token units) to transfer. - @param signer: (Optional) seeds for the signature of a PDA. - """ - -class TokenMint(AccountWithKey): - """SPL token mint.""" - - def authority(self) -> Pubkey: - """Get the owner of this token mint.""" - - def freeze_authority(self) -> Pubkey: - """Get the freeze authority of this token mint.""" - - def decimals(self) -> u8: - """Get the number of decimals for this token.""" - - def supply(self) -> u64: - """Get the amount of this token that exists.""" - - def mint(self, authority: AccountWithKey, to: TokenAccount, amount: u64, signer: List[Any] = None): - """ - Mint new tokens to a token account. - - @param authority: The account that owns this TokenMint. Must be an instruction signer or the account given by the `signer` param. - @param to: The recipient TokenAccount. - @param amount: How much (in *native* token units) to mint. - @param signer: (Optional) seeds for the signature of a PDA. - """ - - def burn(self, authority: AccountWithKey, holder: TokenAccount, amount: u64, signer: List[Any] = None): - """ - Burn tokens from a token account. - - @param authority: The account that owns the `holder` TokenAccount. Must be an instruction signer or the account given by the `signer` param. - @param holder: The TokenAccount to burn from. - @param amount: How much (in *native* token units) to burn. - @param signer: (Optional) seeds for the signature of a PDA. - """ - - -# ================ -# Helper functions -# ================ - -def declare_id(id: str): - """Inform Anchor what this program's ID is. - - @param id: The program's ID, generated by Anchor in /target/idl/.json. This must be copied-pasted straight from there as a string literal. - """ - -def instruction(function: Callable[..., None]) -> Callable[..., None]: - """Decorator to turn a function into a program instruction.""" - -def dataclass(function: Callable[..., None]) -> Callable[..., None]: - """Decorator to create an automatic default class constructor.""" - -def int_bytes(n: Any, be: bool = False) -> List[u8]: - """ - Convenience method to turn an integer type into a little-endian (by default) list of bytes. - - @param n: The integer you wish to convert to bytes. - @param be: Whether you want the conversion to be big-endian - defaults to false. - """ - -def size(ob: str) -> u64: - """ - Get the size of an object in bytes. - Currently this is only supported for strings. - - @param ob: The object to get the size of. - """ diff --git a/basics/transfer-sol/seahorse/tests/seahorse.ts b/basics/transfer-sol/seahorse/tests/seahorse.ts deleted file mode 100644 index 9b8d6d99e..000000000 --- a/basics/transfer-sol/seahorse/tests/seahorse.ts +++ /dev/null @@ -1,35 +0,0 @@ -import * as anchor from '@coral-xyz/anchor'; -import type { Program } from '@coral-xyz/anchor'; -import type { Seahorse } from '../target/types/seahorse'; - -describe('seahorse', () => { - // Configure the client to use the local cluster. - anchor.setProvider(anchor.AnchorProvider.env()); - - const program = anchor.workspace.Seahorse as Program; - - const mockReceiverAccount = anchor.web3.PublicKey.findProgramAddressSync([Buffer.from('mock_account')], program.programId); - - it('Initialize the Mock account to send our SOL to', async () => { - const tx = await program.methods - .initMockAccount() - .accounts({ - mockAccount: mockReceiverAccount[0], - signer: program.provider.publicKey, - }) - .rpc(); - }); - it('Send SOL To Mock account', async () => { - const transferAmount = 1; - // Convert to lamport. - const lamports: number = anchor.web3.LAMPORTS_PER_SOL * transferAmount; - const tx = await program.methods - .transferSolWithCpi(new anchor.BN(lamports)) - .accounts({ - recipient: mockReceiverAccount[0], - sender: program.provider.publicKey, - }) - .rpc(); - console.log('Your transaction signature: ', tx); - }); -}); diff --git a/basics/transfer-sol/seahorse/tsconfig.json b/basics/transfer-sol/seahorse/tsconfig.json deleted file mode 100644 index cd5d2e3d0..000000000 --- a/basics/transfer-sol/seahorse/tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "compilerOptions": { - "types": ["mocha", "chai"], - "typeRoots": ["./node_modules/@types"], - "lib": ["es2015"], - "module": "commonjs", - "target": "es6", - "esModuleInterop": true - } -} diff --git a/basics/transfer-sol/steel/Cargo.toml b/basics/transfer-sol/steel/Cargo.toml deleted file mode 100644 index 8be0d9e92..000000000 --- a/basics/transfer-sol/steel/Cargo.toml +++ /dev/null @@ -1,21 +0,0 @@ -[workspace] -resolver = "2" -members = ["api", "program"] - -[workspace.package] -version = "0.1.0" -edition = "2021" -license = "Apache-2.0" -homepage = "" -documentation = "" -repository = "" -readme = "./README.md" -keywords = ["solana"] - -[workspace.dependencies] -transfer-sol-api = { path = "./api", version = "0.1.0" } -bytemuck = "1.14" -num_enum = "0.7" -solana-program = "2.1" -steel = "3.0" -thiserror = "1.0" diff --git a/basics/transfer-sol/steel/README.md b/basics/transfer-sol/steel/README.md deleted file mode 100644 index 10ff0347c..000000000 --- a/basics/transfer-sol/steel/README.md +++ /dev/null @@ -1,22 +0,0 @@ -# TransferSol - -**TransferSol** is a ... - -## API -- [`Consts`](api/src/consts.rs) – Program constants. -- [`Error`](api/src/error.rs) – Custom program errors. -- [`Event`](api/src/event.rs) – Custom program events. -- [`Instruction`](api/src/instruction.rs) – Declared instructions. - -## Instructions -- [`Hello`](program/src/hello.rs) – Hello ... - -## State -- [`User`](api/src/state/user.rs) – User ... - -## Tests - -To run the test suit, use the Solana toolchain: -``` -cargo test-sbf -``` diff --git a/basics/transfer-sol/steel/api/Cargo.toml b/basics/transfer-sol/steel/api/Cargo.toml deleted file mode 100644 index 446886081..000000000 --- a/basics/transfer-sol/steel/api/Cargo.toml +++ /dev/null @@ -1,11 +0,0 @@ -[package] -name = "transfer-sol-api" -version = "0.1.0" -edition = "2021" - -[dependencies] -bytemuck.workspace = true -num_enum.workspace = true -solana-program.workspace = true -steel.workspace = true -thiserror.workspace = true diff --git a/basics/transfer-sol/steel/api/src/instruction.rs b/basics/transfer-sol/steel/api/src/instruction.rs deleted file mode 100644 index 069ca7242..000000000 --- a/basics/transfer-sol/steel/api/src/instruction.rs +++ /dev/null @@ -1,24 +0,0 @@ -use steel::*; - -#[repr(u8)] -#[derive(Clone, Copy, Debug, Eq, PartialEq, TryFromPrimitive)] -pub enum TransferSolInstruction { - TransferSolWithCpi = 0, - TransferSolWithProgram = 1, -} - -#[repr(C)] -#[derive(Clone, Copy, Debug, Pod, Zeroable)] -pub struct TransferSolWithCpi { - pub amount: [u8; 8], -} - -#[repr(C)] -#[derive(Clone, Copy, Debug, Pod, Zeroable)] -pub struct TransferSolWithProgram { - pub amount: [u8; 8], -} - -instruction!(TransferSolInstruction, TransferSolWithCpi); -instruction!(TransferSolInstruction, TransferSolWithProgram); - diff --git a/basics/transfer-sol/steel/api/src/lib.rs b/basics/transfer-sol/steel/api/src/lib.rs deleted file mode 100644 index d1eea2565..000000000 --- a/basics/transfer-sol/steel/api/src/lib.rs +++ /dev/null @@ -1,12 +0,0 @@ -pub mod instruction; -pub mod sdk; - -pub mod prelude { - pub use crate::instruction::*; - pub use crate::sdk::*; -} - -use steel::*; - -// TODO: Set program id -declare_id!("FNDnd3ZJptKromzx7h71o67AcR1emryyJPb9LjS8WPVw"); diff --git a/basics/transfer-sol/steel/api/src/sdk.rs b/basics/transfer-sol/steel/api/src/sdk.rs deleted file mode 100644 index e516986ce..000000000 --- a/basics/transfer-sol/steel/api/src/sdk.rs +++ /dev/null @@ -1,32 +0,0 @@ -use steel::*; - -use crate::prelude::*; - -pub fn transfer_sol_with_cpi(signer: Pubkey, receiver: Pubkey, amount: u64) -> Instruction { - Instruction { - program_id: crate::ID, - accounts: vec![ - AccountMeta::new(signer, true), - AccountMeta::new(receiver, false), - AccountMeta::new(system_program::ID, false), - ], - data: TransferSolWithCpi { - amount: amount.to_le_bytes(), - } - .to_bytes(), - } -} - -pub fn transfer_sol_with_program(signer: Pubkey, receiver: Pubkey, amount: u64) -> Instruction { - Instruction { - program_id: crate::ID, - accounts: vec![ - AccountMeta::new(signer, true), - AccountMeta::new(receiver, false), - ], - data: TransferSolWithProgram { - amount: amount.to_le_bytes(), - } - .to_bytes(), - } -} diff --git a/basics/transfer-sol/steel/cicd.sh b/basics/transfer-sol/steel/cicd.sh deleted file mode 100644 index d5960d7b7..000000000 --- a/basics/transfer-sol/steel/cicd.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash - -# This script is for quick building & deploying of the program. -# It also serves as a reference for the commands used for building & deploying Solana programs. -# Run this bad boy with "bash cicd.sh" or "./cicd.sh" - -cargo build-sbf --manifest-path=./program/Cargo.toml --bpf-out-dir=./program/target/so -solana program deploy ./program/target/so/program.so \ No newline at end of file diff --git a/basics/transfer-sol/steel/package.json b/basics/transfer-sol/steel/package.json deleted file mode 100644 index 856502800..000000000 --- a/basics/transfer-sol/steel/package.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "scripts": { - "test": "steel test", - "build-and-test": "steel build && steel test", - "build": "steel build", - "deploy": "solana program deploy ./program/target/so/program.so", - "check:fix": "pnpm biome format --write ./tests", - "rust:test": "cargo test-sbf" - }, - "dependencies": { - "@solana/web3.js": "^1.47.3", - "buffer-layout": "^1.2.2", - "fs": "^0.0.1-security" - }, - "devDependencies": { - "@biomejs/biome": "1.9.4", - "@types/bn.js": "^5.1.0", - "@types/chai": "^4.3.1", - "@types/mocha": "^9.1.1", - "chai": "^4.3.4", - "mocha": "^10.7.3", - "solana-bankrun": "^0.3.0", - "ts-mocha": "^10.0.0", - "typescript": "^5.6.3" - } -} diff --git a/basics/transfer-sol/steel/pnpm-lock.yaml b/basics/transfer-sol/steel/pnpm-lock.yaml deleted file mode 100644 index f33845762..000000000 --- a/basics/transfer-sol/steel/pnpm-lock.yaml +++ /dev/null @@ -1,1375 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -importers: - - .: - dependencies: - '@solana/web3.js': - specifier: ^1.47.3 - version: 1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) - buffer-layout: - specifier: ^1.2.2 - version: 1.2.2 - fs: - specifier: ^0.0.1-security - version: 0.0.1-security - devDependencies: - '@biomejs/biome': - specifier: 1.9.4 - version: 1.9.4 - '@types/bn.js': - specifier: ^5.1.0 - version: 5.1.6 - '@types/chai': - specifier: ^4.3.1 - version: 4.3.20 - '@types/mocha': - specifier: ^9.1.1 - version: 9.1.1 - chai: - specifier: ^4.3.4 - version: 4.5.0 - mocha: - specifier: ^10.7.3 - version: 10.7.3 - solana-bankrun: - specifier: ^0.3.0 - version: 0.3.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) - ts-mocha: - specifier: ^10.0.0 - version: 10.0.0(mocha@10.7.3) - typescript: - specifier: ^5.6.3 - version: 5.6.3 - -packages: - - '@babel/runtime@7.25.9': - resolution: {integrity: sha512-4zpTHZ9Cm6L9L+uIqghQX8ZXg8HKFcjYO3qHoO8zTmRm6HQUJ8SSJ+KRvbMBZn0EGVlT4DRYeQ/6hjlyXBh+Kg==} - engines: {node: '>=6.9.0'} - - '@biomejs/biome@1.9.4': - resolution: {integrity: sha512-1rkd7G70+o9KkTn5KLmDYXihGoTaIGO9PIIN2ZB7UJxFrWw04CZHPYiMRjYsaDvVV7hP1dYNRLxSANLaBFGpog==} - engines: {node: '>=14.21.3'} - hasBin: true - - '@biomejs/cli-darwin-arm64@1.9.4': - resolution: {integrity: sha512-bFBsPWrNvkdKrNCYeAp+xo2HecOGPAy9WyNyB/jKnnedgzl4W4Hb9ZMzYNbf8dMCGmUdSavlYHiR01QaYR58cw==} - engines: {node: '>=14.21.3'} - cpu: [arm64] - os: [darwin] - - '@biomejs/cli-darwin-x64@1.9.4': - resolution: {integrity: sha512-ngYBh/+bEedqkSevPVhLP4QfVPCpb+4BBe2p7Xs32dBgs7rh9nY2AIYUL6BgLw1JVXV8GlpKmb/hNiuIxfPfZg==} - engines: {node: '>=14.21.3'} - cpu: [x64] - os: [darwin] - - '@biomejs/cli-linux-arm64-musl@1.9.4': - resolution: {integrity: sha512-v665Ct9WCRjGa8+kTr0CzApU0+XXtRgwmzIf1SeKSGAv+2scAlW6JR5PMFo6FzqqZ64Po79cKODKf3/AAmECqA==} - engines: {node: '>=14.21.3'} - cpu: [arm64] - os: [linux] - - '@biomejs/cli-linux-arm64@1.9.4': - resolution: {integrity: sha512-fJIW0+LYujdjUgJJuwesP4EjIBl/N/TcOX3IvIHJQNsAqvV2CHIogsmA94BPG6jZATS4Hi+xv4SkBBQSt1N4/g==} - engines: {node: '>=14.21.3'} - cpu: [arm64] - os: [linux] - - '@biomejs/cli-linux-x64-musl@1.9.4': - resolution: {integrity: sha512-gEhi/jSBhZ2m6wjV530Yy8+fNqG8PAinM3oV7CyO+6c3CEh16Eizm21uHVsyVBEB6RIM8JHIl6AGYCv6Q6Q9Tg==} - engines: {node: '>=14.21.3'} - cpu: [x64] - os: [linux] - - '@biomejs/cli-linux-x64@1.9.4': - resolution: {integrity: sha512-lRCJv/Vi3Vlwmbd6K+oQ0KhLHMAysN8lXoCI7XeHlxaajk06u7G+UsFSO01NAs5iYuWKmVZjmiOzJ0OJmGsMwg==} - engines: {node: '>=14.21.3'} - cpu: [x64] - os: [linux] - - '@biomejs/cli-win32-arm64@1.9.4': - resolution: {integrity: sha512-tlbhLk+WXZmgwoIKwHIHEBZUwxml7bRJgk0X2sPyNR3S93cdRq6XulAZRQJ17FYGGzWne0fgrXBKpl7l4M87Hg==} - engines: {node: '>=14.21.3'} - cpu: [arm64] - os: [win32] - - '@biomejs/cli-win32-x64@1.9.4': - resolution: {integrity: sha512-8Y5wMhVIPaWe6jw2H+KlEm4wP/f7EW3810ZLmDlrEEy5KvBsb9ECEfu/kMWD484ijfQ8+nIi0giMgu9g1UAuuA==} - engines: {node: '>=14.21.3'} - cpu: [x64] - os: [win32] - - '@noble/curves@1.6.0': - resolution: {integrity: sha512-TlaHRXDehJuRNR9TfZDNQ45mMEd5dwUwmicsafcIX4SsNiqnCHKjE/1alYPd/lDRVhxdhUAlv8uEhMCI5zjIJQ==} - engines: {node: ^14.21.3 || >=16} - - '@noble/hashes@1.5.0': - resolution: {integrity: sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==} - engines: {node: ^14.21.3 || >=16} - - '@solana/buffer-layout@4.0.1': - resolution: {integrity: sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==} - engines: {node: '>=5.10'} - - '@solana/web3.js@1.95.4': - resolution: {integrity: sha512-sdewnNEA42ZSMxqkzdwEWi6fDgzwtJHaQa5ndUGEJYtoOnM6X5cvPmjoTUp7/k7bRrVAxfBgDnvQQHD6yhlLYw==} - - '@swc/helpers@0.5.13': - resolution: {integrity: sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==} - - '@types/bn.js@5.1.6': - resolution: {integrity: sha512-Xh8vSwUeMKeYYrj3cX4lGQgFSF/N03r+tv4AiLl1SucqV+uTQpxRcnM8AkXKHwYP9ZPXOYXRr2KPXpVlIvqh9w==} - - '@types/chai@4.3.20': - resolution: {integrity: sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==} - - '@types/connect@3.4.38': - resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} - - '@types/json5@0.0.29': - resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - - '@types/mocha@9.1.1': - resolution: {integrity: sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==} - - '@types/node@12.20.55': - resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - - '@types/node@22.7.9': - resolution: {integrity: sha512-jrTfRC7FM6nChvU7X2KqcrgquofrWLFDeYC1hKfwNWomVvrn7JIksqf344WN2X/y8xrgqBd2dJATZV4GbatBfg==} - - '@types/uuid@8.3.4': - resolution: {integrity: sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==} - - '@types/ws@7.4.7': - resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==} - - '@types/ws@8.5.12': - resolution: {integrity: sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==} - - JSONStream@1.3.5: - resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} - hasBin: true - - agentkeepalive@4.5.0: - resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} - engines: {node: '>= 8.0.0'} - - ansi-colors@4.1.3: - resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} - engines: {node: '>=6'} - - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - - argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - - arrify@1.0.1: - resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} - engines: {node: '>=0.10.0'} - - assertion-error@1.1.0: - resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} - - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - base-x@3.0.10: - resolution: {integrity: sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==} - - base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - - bigint-buffer@1.1.5: - resolution: {integrity: sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA==} - engines: {node: '>= 10.0.0'} - - binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} - - bindings@1.5.0: - resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} - - bn.js@5.2.1: - resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} - - borsh@0.7.0: - resolution: {integrity: sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==} - - brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - - braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} - - browser-stdout@1.3.1: - resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} - - bs58@4.0.1: - resolution: {integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==} - - buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - - buffer-layout@1.2.2: - resolution: {integrity: sha512-kWSuLN694+KTk8SrYvCqwP2WcgQjoRCiF5b4QDvkkz8EmgD+aWAIceGFKMIAdmF/pH+vpgNV3d3kAKorcdAmWA==} - engines: {node: '>=4.5'} - - buffer@6.0.3: - resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} - - bufferutil@4.0.8: - resolution: {integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==} - engines: {node: '>=6.14.2'} - - camelcase@6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} - - chai@4.5.0: - resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==} - engines: {node: '>=4'} - - chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - - check-error@1.0.3: - resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} - - chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} - - cliui@7.0.4: - resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} - - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - - debug@4.3.7: - resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - decamelize@4.0.0: - resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} - engines: {node: '>=10'} - - deep-eql@4.1.4: - resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==} - engines: {node: '>=6'} - - delay@5.0.0: - resolution: {integrity: sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==} - engines: {node: '>=10'} - - diff@3.5.0: - resolution: {integrity: sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==} - engines: {node: '>=0.3.1'} - - diff@5.2.0: - resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} - engines: {node: '>=0.3.1'} - - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - - es6-promise@4.2.8: - resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} - - es6-promisify@5.0.0: - resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==} - - escalade@3.2.0: - resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} - engines: {node: '>=6'} - - escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - - eventemitter3@5.0.1: - resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} - - eyes@0.1.8: - resolution: {integrity: sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==} - engines: {node: '> 0.1.90'} - - fast-stable-stringify@1.0.0: - resolution: {integrity: sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==} - - file-uri-to-path@1.0.0: - resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} - - fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} - - find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - - flat@5.0.2: - resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} - hasBin: true - - fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - - fs@0.0.1-security: - resolution: {integrity: sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w==} - - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - - get-func-name@2.0.2: - resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} - - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - - glob@8.1.0: - resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} - engines: {node: '>=12'} - deprecated: Glob versions prior to v9 are no longer supported - - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - - he@1.2.0: - resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} - hasBin: true - - humanize-ms@1.2.1: - resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} - - ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - - inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. - - inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - - is-plain-obj@2.1.0: - resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} - engines: {node: '>=8'} - - is-unicode-supported@0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} - engines: {node: '>=10'} - - isomorphic-ws@4.0.1: - resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==} - peerDependencies: - ws: '*' - - jayson@4.1.2: - resolution: {integrity: sha512-5nzMWDHy6f+koZOuYsArh2AXs73NfWYVlFyJJuCedr93GpY+Ku8qq10ropSXVfHK+H0T6paA88ww+/dV+1fBNA==} - engines: {node: '>=8'} - hasBin: true - - js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true - - json-stringify-safe@5.0.1: - resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} - - json5@1.0.2: - resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} - hasBin: true - - jsonparse@1.3.1: - resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} - engines: {'0': node >= 0.2.0} - - locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - - log-symbols@4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} - engines: {node: '>=10'} - - loupe@2.3.7: - resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} - - make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - - minimatch@5.1.6: - resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} - engines: {node: '>=10'} - - minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - - mkdirp@0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} - hasBin: true - - mocha@10.7.3: - resolution: {integrity: sha512-uQWxAu44wwiACGqjbPYmjo7Lg8sFrS3dQe7PP2FQI+woptP4vZXSMcfMyFL/e1yFEeEpV4RtyTpZROOKmxis+A==} - engines: {node: '>= 14.0.0'} - hasBin: true - - ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - - node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - - node-gyp-build@4.8.2: - resolution: {integrity: sha512-IRUxE4BVsHWXkV/SFOut4qTlagw2aM8T5/vnTsmrHJvVoKueJHRc/JaFND7QDDc61kLYUJ6qlZM3sqTSyx2dTw==} - hasBin: true - - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - - once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - - p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - - p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - - path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - - pathval@1.1.1: - resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} - - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - - randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - - regenerator-runtime@0.14.1: - resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - - require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - - rpc-websockets@9.0.4: - resolution: {integrity: sha512-yWZWN0M+bivtoNLnaDbtny4XchdAIF5Q4g/ZsC5UC61Ckbp0QczwO8fg44rV3uYmY4WHd+EZQbn90W1d8ojzqQ==} - - safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - - serialize-javascript@6.0.2: - resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} - - solana-bankrun-darwin-arm64@0.3.1: - resolution: {integrity: sha512-9LWtH/3/WR9fs8Ve/srdo41mpSqVHmRqDoo69Dv1Cupi+o1zMU6HiEPUHEvH2Tn/6TDbPEDf18MYNfReLUqE6A==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - - solana-bankrun-darwin-universal@0.3.1: - resolution: {integrity: sha512-muGHpVYWT7xCd8ZxEjs/bmsbMp8XBqroYGbE4lQPMDUuLvsJEIrjGqs3MbxEFr71sa58VpyvgywWd5ifI7sGIg==} - engines: {node: '>= 10'} - os: [darwin] - - solana-bankrun-darwin-x64@0.3.1: - resolution: {integrity: sha512-oCaxfHyt7RC3ZMldrh5AbKfy4EH3YRMl8h6fSlMZpxvjQx7nK7PxlRwMeflMnVdkKKp7U8WIDak1lilIPd3/lg==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - - solana-bankrun-linux-x64-gnu@0.3.1: - resolution: {integrity: sha512-PfRFhr7igGFNt2Ecfdzh3li9eFPB3Xhmk0Eib17EFIB62YgNUg3ItRnQQFaf0spazFjjJLnglY1TRKTuYlgSVA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - solana-bankrun-linux-x64-musl@0.3.1: - resolution: {integrity: sha512-6r8i0NuXg3CGURql8ISMIUqhE7Hx/O7MlIworK4oN08jYrP0CXdLeB/hywNn7Z8d1NXrox/NpYUgvRm2yIzAsQ==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - solana-bankrun@0.3.1: - resolution: {integrity: sha512-inRwON7fBU5lPC36HdEqPeDg15FXJYcf77+o0iz9amvkUMJepcwnRwEfTNyMVpVYdgjTOBW5vg+596/3fi1kGA==} - engines: {node: '>= 10'} - - source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - - source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - - strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - - strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - - superstruct@2.0.2: - resolution: {integrity: sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A==} - engines: {node: '>=14.0.0'} - - supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - - supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} - - text-encoding-utf-8@1.0.2: - resolution: {integrity: sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==} - - through@2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - - tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - - ts-mocha@10.0.0: - resolution: {integrity: sha512-VRfgDO+iiuJFlNB18tzOfypJ21xn2xbuZyDvJvqpTbWgkAgD17ONGr8t+Tl8rcBtOBdjXp5e/Rk+d39f7XBHRw==} - engines: {node: '>= 6.X.X'} - hasBin: true - peerDependencies: - mocha: ^3.X.X || ^4.X.X || ^5.X.X || ^6.X.X || ^7.X.X || ^8.X.X || ^9.X.X || ^10.X.X - - ts-node@7.0.1: - resolution: {integrity: sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==} - engines: {node: '>=4.2.0'} - hasBin: true - - tsconfig-paths@3.15.0: - resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} - - tslib@2.8.0: - resolution: {integrity: sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==} - - type-detect@4.1.0: - resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==} - engines: {node: '>=4'} - - typescript@5.6.3: - resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} - engines: {node: '>=14.17'} - hasBin: true - - undici-types@6.19.8: - resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} - - utf-8-validate@5.0.10: - resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==} - engines: {node: '>=6.14.2'} - - uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - hasBin: true - - webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - - whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - - workerpool@6.5.1: - resolution: {integrity: sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==} - - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - - wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - - ws@7.5.10: - resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} - engines: {node: '>=8.3.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - ws@8.18.0: - resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - - yargs-parser@20.2.9: - resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} - engines: {node: '>=10'} - - yargs-unparser@2.0.0: - resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} - engines: {node: '>=10'} - - yargs@16.2.0: - resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} - engines: {node: '>=10'} - - yn@2.0.0: - resolution: {integrity: sha512-uTv8J/wiWTgUTg+9vLTi//leUl5vDQS6uii/emeTb2ssY7vl6QWf2fFbIIGjnhjvbdKlU0ed7QPgY1htTC86jQ==} - engines: {node: '>=4'} - - yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - -snapshots: - - '@babel/runtime@7.25.9': - dependencies: - regenerator-runtime: 0.14.1 - - '@biomejs/biome@1.9.4': - optionalDependencies: - '@biomejs/cli-darwin-arm64': 1.9.4 - '@biomejs/cli-darwin-x64': 1.9.4 - '@biomejs/cli-linux-arm64': 1.9.4 - '@biomejs/cli-linux-arm64-musl': 1.9.4 - '@biomejs/cli-linux-x64': 1.9.4 - '@biomejs/cli-linux-x64-musl': 1.9.4 - '@biomejs/cli-win32-arm64': 1.9.4 - '@biomejs/cli-win32-x64': 1.9.4 - - '@biomejs/cli-darwin-arm64@1.9.4': - optional: true - - '@biomejs/cli-darwin-x64@1.9.4': - optional: true - - '@biomejs/cli-linux-arm64-musl@1.9.4': - optional: true - - '@biomejs/cli-linux-arm64@1.9.4': - optional: true - - '@biomejs/cli-linux-x64-musl@1.9.4': - optional: true - - '@biomejs/cli-linux-x64@1.9.4': - optional: true - - '@biomejs/cli-win32-arm64@1.9.4': - optional: true - - '@biomejs/cli-win32-x64@1.9.4': - optional: true - - '@noble/curves@1.6.0': - dependencies: - '@noble/hashes': 1.5.0 - - '@noble/hashes@1.5.0': {} - - '@solana/buffer-layout@4.0.1': - dependencies: - buffer: 6.0.3 - - '@solana/web3.js@1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10)': - dependencies: - '@babel/runtime': 7.25.9 - '@noble/curves': 1.6.0 - '@noble/hashes': 1.5.0 - '@solana/buffer-layout': 4.0.1 - agentkeepalive: 4.5.0 - bigint-buffer: 1.1.5 - bn.js: 5.2.1 - borsh: 0.7.0 - bs58: 4.0.1 - buffer: 6.0.3 - fast-stable-stringify: 1.0.0 - jayson: 4.1.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) - node-fetch: 2.7.0 - rpc-websockets: 9.0.4 - superstruct: 2.0.2 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - - '@swc/helpers@0.5.13': - dependencies: - tslib: 2.8.0 - - '@types/bn.js@5.1.6': - dependencies: - '@types/node': 22.7.9 - - '@types/chai@4.3.20': {} - - '@types/connect@3.4.38': - dependencies: - '@types/node': 22.7.9 - - '@types/json5@0.0.29': - optional: true - - '@types/mocha@9.1.1': {} - - '@types/node@12.20.55': {} - - '@types/node@22.7.9': - dependencies: - undici-types: 6.19.8 - - '@types/uuid@8.3.4': {} - - '@types/ws@7.4.7': - dependencies: - '@types/node': 22.7.9 - - '@types/ws@8.5.12': - dependencies: - '@types/node': 22.7.9 - - JSONStream@1.3.5: - dependencies: - jsonparse: 1.3.1 - through: 2.3.8 - - agentkeepalive@4.5.0: - dependencies: - humanize-ms: 1.2.1 - - ansi-colors@4.1.3: {} - - ansi-regex@5.0.1: {} - - ansi-styles@4.3.0: - dependencies: - color-convert: 2.0.1 - - anymatch@3.1.3: - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - - argparse@2.0.1: {} - - arrify@1.0.1: {} - - assertion-error@1.1.0: {} - - balanced-match@1.0.2: {} - - base-x@3.0.10: - dependencies: - safe-buffer: 5.2.1 - - base64-js@1.5.1: {} - - bigint-buffer@1.1.5: - dependencies: - bindings: 1.5.0 - - binary-extensions@2.3.0: {} - - bindings@1.5.0: - dependencies: - file-uri-to-path: 1.0.0 - - bn.js@5.2.1: {} - - borsh@0.7.0: - dependencies: - bn.js: 5.2.1 - bs58: 4.0.1 - text-encoding-utf-8: 1.0.2 - - brace-expansion@2.0.1: - dependencies: - balanced-match: 1.0.2 - - braces@3.0.3: - dependencies: - fill-range: 7.1.1 - - browser-stdout@1.3.1: {} - - bs58@4.0.1: - dependencies: - base-x: 3.0.10 - - buffer-from@1.1.2: {} - - buffer-layout@1.2.2: {} - - buffer@6.0.3: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - - bufferutil@4.0.8: - dependencies: - node-gyp-build: 4.8.2 - optional: true - - camelcase@6.3.0: {} - - chai@4.5.0: - dependencies: - assertion-error: 1.1.0 - check-error: 1.0.3 - deep-eql: 4.1.4 - get-func-name: 2.0.2 - loupe: 2.3.7 - pathval: 1.1.1 - type-detect: 4.1.0 - - chalk@4.1.2: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - - check-error@1.0.3: - dependencies: - get-func-name: 2.0.2 - - chokidar@3.6.0: - dependencies: - anymatch: 3.1.3 - braces: 3.0.3 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - - cliui@7.0.4: - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - - color-convert@2.0.1: - dependencies: - color-name: 1.1.4 - - color-name@1.1.4: {} - - commander@2.20.3: {} - - debug@4.3.7(supports-color@8.1.1): - dependencies: - ms: 2.1.3 - optionalDependencies: - supports-color: 8.1.1 - - decamelize@4.0.0: {} - - deep-eql@4.1.4: - dependencies: - type-detect: 4.1.0 - - delay@5.0.0: {} - - diff@3.5.0: {} - - diff@5.2.0: {} - - emoji-regex@8.0.0: {} - - es6-promise@4.2.8: {} - - es6-promisify@5.0.0: - dependencies: - es6-promise: 4.2.8 - - escalade@3.2.0: {} - - escape-string-regexp@4.0.0: {} - - eventemitter3@5.0.1: {} - - eyes@0.1.8: {} - - fast-stable-stringify@1.0.0: {} - - file-uri-to-path@1.0.0: {} - - fill-range@7.1.1: - dependencies: - to-regex-range: 5.0.1 - - find-up@5.0.0: - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - - flat@5.0.2: {} - - fs.realpath@1.0.0: {} - - fs@0.0.1-security: {} - - fsevents@2.3.3: - optional: true - - get-caller-file@2.0.5: {} - - get-func-name@2.0.2: {} - - glob-parent@5.1.2: - dependencies: - is-glob: 4.0.3 - - glob@8.1.0: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 5.1.6 - once: 1.4.0 - - has-flag@4.0.0: {} - - he@1.2.0: {} - - humanize-ms@1.2.1: - dependencies: - ms: 2.1.3 - - ieee754@1.2.1: {} - - inflight@1.0.6: - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - - inherits@2.0.4: {} - - is-binary-path@2.1.0: - dependencies: - binary-extensions: 2.3.0 - - is-extglob@2.1.1: {} - - is-fullwidth-code-point@3.0.0: {} - - is-glob@4.0.3: - dependencies: - is-extglob: 2.1.1 - - is-number@7.0.0: {} - - is-plain-obj@2.1.0: {} - - is-unicode-supported@0.1.0: {} - - isomorphic-ws@4.0.1(ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10)): - dependencies: - ws: 7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) - - jayson@4.1.2(bufferutil@4.0.8)(utf-8-validate@5.0.10): - dependencies: - '@types/connect': 3.4.38 - '@types/node': 12.20.55 - '@types/ws': 7.4.7 - JSONStream: 1.3.5 - commander: 2.20.3 - delay: 5.0.0 - es6-promisify: 5.0.0 - eyes: 0.1.8 - isomorphic-ws: 4.0.1(ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10)) - json-stringify-safe: 5.0.1 - uuid: 8.3.2 - ws: 7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - js-yaml@4.1.0: - dependencies: - argparse: 2.0.1 - - json-stringify-safe@5.0.1: {} - - json5@1.0.2: - dependencies: - minimist: 1.2.8 - optional: true - - jsonparse@1.3.1: {} - - locate-path@6.0.0: - dependencies: - p-locate: 5.0.0 - - log-symbols@4.1.0: - dependencies: - chalk: 4.1.2 - is-unicode-supported: 0.1.0 - - loupe@2.3.7: - dependencies: - get-func-name: 2.0.2 - - make-error@1.3.6: {} - - minimatch@5.1.6: - dependencies: - brace-expansion: 2.0.1 - - minimist@1.2.8: {} - - mkdirp@0.5.6: - dependencies: - minimist: 1.2.8 - - mocha@10.7.3: - dependencies: - ansi-colors: 4.1.3 - browser-stdout: 1.3.1 - chokidar: 3.6.0 - debug: 4.3.7(supports-color@8.1.1) - diff: 5.2.0 - escape-string-regexp: 4.0.0 - find-up: 5.0.0 - glob: 8.1.0 - he: 1.2.0 - js-yaml: 4.1.0 - log-symbols: 4.1.0 - minimatch: 5.1.6 - ms: 2.1.3 - serialize-javascript: 6.0.2 - strip-json-comments: 3.1.1 - supports-color: 8.1.1 - workerpool: 6.5.1 - yargs: 16.2.0 - yargs-parser: 20.2.9 - yargs-unparser: 2.0.0 - - ms@2.1.3: {} - - node-fetch@2.7.0: - dependencies: - whatwg-url: 5.0.0 - - node-gyp-build@4.8.2: - optional: true - - normalize-path@3.0.0: {} - - once@1.4.0: - dependencies: - wrappy: 1.0.2 - - p-limit@3.1.0: - dependencies: - yocto-queue: 0.1.0 - - p-locate@5.0.0: - dependencies: - p-limit: 3.1.0 - - path-exists@4.0.0: {} - - pathval@1.1.1: {} - - picomatch@2.3.1: {} - - randombytes@2.1.0: - dependencies: - safe-buffer: 5.2.1 - - readdirp@3.6.0: - dependencies: - picomatch: 2.3.1 - - regenerator-runtime@0.14.1: {} - - require-directory@2.1.1: {} - - rpc-websockets@9.0.4: - dependencies: - '@swc/helpers': 0.5.13 - '@types/uuid': 8.3.4 - '@types/ws': 8.5.12 - buffer: 6.0.3 - eventemitter3: 5.0.1 - uuid: 8.3.2 - ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - optionalDependencies: - bufferutil: 4.0.8 - utf-8-validate: 5.0.10 - - safe-buffer@5.2.1: {} - - serialize-javascript@6.0.2: - dependencies: - randombytes: 2.1.0 - - solana-bankrun-darwin-arm64@0.3.1: - optional: true - - solana-bankrun-darwin-universal@0.3.1: - optional: true - - solana-bankrun-darwin-x64@0.3.1: - optional: true - - solana-bankrun-linux-x64-gnu@0.3.1: - optional: true - - solana-bankrun-linux-x64-musl@0.3.1: - optional: true - - solana-bankrun@0.3.1(bufferutil@4.0.8)(utf-8-validate@5.0.10): - dependencies: - '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) - bs58: 4.0.1 - optionalDependencies: - solana-bankrun-darwin-arm64: 0.3.1 - solana-bankrun-darwin-universal: 0.3.1 - solana-bankrun-darwin-x64: 0.3.1 - solana-bankrun-linux-x64-gnu: 0.3.1 - solana-bankrun-linux-x64-musl: 0.3.1 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - - source-map-support@0.5.21: - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - - source-map@0.6.1: {} - - string-width@4.2.3: - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - - strip-ansi@6.0.1: - dependencies: - ansi-regex: 5.0.1 - - strip-bom@3.0.0: - optional: true - - strip-json-comments@3.1.1: {} - - superstruct@2.0.2: {} - - supports-color@7.2.0: - dependencies: - has-flag: 4.0.0 - - supports-color@8.1.1: - dependencies: - has-flag: 4.0.0 - - text-encoding-utf-8@1.0.2: {} - - through@2.3.8: {} - - to-regex-range@5.0.1: - dependencies: - is-number: 7.0.0 - - tr46@0.0.3: {} - - ts-mocha@10.0.0(mocha@10.7.3): - dependencies: - mocha: 10.7.3 - ts-node: 7.0.1 - optionalDependencies: - tsconfig-paths: 3.15.0 - - ts-node@7.0.1: - dependencies: - arrify: 1.0.1 - buffer-from: 1.1.2 - diff: 3.5.0 - make-error: 1.3.6 - minimist: 1.2.8 - mkdirp: 0.5.6 - source-map-support: 0.5.21 - yn: 2.0.0 - - tsconfig-paths@3.15.0: - dependencies: - '@types/json5': 0.0.29 - json5: 1.0.2 - minimist: 1.2.8 - strip-bom: 3.0.0 - optional: true - - tslib@2.8.0: {} - - type-detect@4.1.0: {} - - typescript@5.6.3: {} - - undici-types@6.19.8: {} - - utf-8-validate@5.0.10: - dependencies: - node-gyp-build: 4.8.2 - optional: true - - uuid@8.3.2: {} - - webidl-conversions@3.0.1: {} - - whatwg-url@5.0.0: - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - - workerpool@6.5.1: {} - - wrap-ansi@7.0.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - wrappy@1.0.2: {} - - ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10): - optionalDependencies: - bufferutil: 4.0.8 - utf-8-validate: 5.0.10 - - ws@8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): - optionalDependencies: - bufferutil: 4.0.8 - utf-8-validate: 5.0.10 - - y18n@5.0.8: {} - - yargs-parser@20.2.9: {} - - yargs-unparser@2.0.0: - dependencies: - camelcase: 6.3.0 - decamelize: 4.0.0 - flat: 5.0.2 - is-plain-obj: 2.1.0 - - yargs@16.2.0: - dependencies: - cliui: 7.0.4 - escalade: 3.2.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 20.2.9 - - yn@2.0.0: {} - - yocto-queue@0.1.0: {} diff --git a/basics/transfer-sol/steel/program/Cargo.toml b/basics/transfer-sol/steel/program/Cargo.toml deleted file mode 100644 index d64e9a937..000000000 --- a/basics/transfer-sol/steel/program/Cargo.toml +++ /dev/null @@ -1,19 +0,0 @@ -[package] -name = "transfer-sol-program" -version = "0.1.0" -edition = "2021" - -[lib] -crate-type = ["cdylib", "lib"] - -[dependencies] -transfer-sol-api.workspace = true -solana-program.workspace = true -steel.workspace = true - -[dev-dependencies] -bs64 = "0.1.2" -rand = "0.8.5" -solana-program-test = "1.18" -solana-sdk = "1.18" -tokio = { version = "1.35", features = ["full"] } diff --git a/basics/transfer-sol/steel/program/src/lib.rs b/basics/transfer-sol/steel/program/src/lib.rs deleted file mode 100644 index a8711303c..000000000 --- a/basics/transfer-sol/steel/program/src/lib.rs +++ /dev/null @@ -1,25 +0,0 @@ -mod transfer_sol_with_cpi; -mod transfer_sol_with_program; - -use transfer_sol_with_cpi::*; -use transfer_sol_with_program::*; - -use transfer_sol_api::prelude::*; -use steel::*; - -pub fn process_instruction( - program_id: &Pubkey, - accounts: &[AccountInfo], - data: &[u8], -) -> ProgramResult { - let (ix, data) = parse_instruction(&transfer_sol_api::ID, program_id, data)?; - - match ix { - TransferSolInstruction::TransferSolWithCpi => process_transfer_sol_with_cpi(accounts, data)?, - TransferSolInstruction::TransferSolWithProgram => process_transfer_sol_with_program(accounts, data)?, - } - - Ok(()) -} - -entrypoint!(process_instruction); diff --git a/basics/transfer-sol/steel/program/src/transfer_sol_with_cpi.rs b/basics/transfer-sol/steel/program/src/transfer_sol_with_cpi.rs deleted file mode 100644 index f12a8abb0..000000000 --- a/basics/transfer-sol/steel/program/src/transfer_sol_with_cpi.rs +++ /dev/null @@ -1,28 +0,0 @@ -use solana_program::{ - account_info::AccountInfo, entrypoint::ProgramResult, program::invoke, system_instruction, -}; -use steel::*; -use transfer_sol_api::prelude::TransferSolWithCpi; - -pub fn process_transfer_sol_with_cpi(accounts: &[AccountInfo], data: &[u8]) -> ProgramResult { - // Parse args. - let args: &TransferSolWithCpi = TransferSolWithCpi::try_from_bytes(data)?; - let amount: u64 = u64::from_le_bytes(args.amount); - - // Load accounts. - let [signer_info, receiver_info, system_program] = accounts else { - return Err(ProgramError::NotEnoughAccountKeys); - }; - signer_info.is_signer()?; - - invoke( - &system_instruction::transfer(signer_info.key, receiver_info.key, amount), - &[ - signer_info.clone(), - receiver_info.clone(), - system_program.clone(), - ], - )?; - - Ok(()) -} diff --git a/basics/transfer-sol/steel/program/src/transfer_sol_with_program.rs b/basics/transfer-sol/steel/program/src/transfer_sol_with_program.rs deleted file mode 100644 index 6686f06e9..000000000 --- a/basics/transfer-sol/steel/program/src/transfer_sol_with_program.rs +++ /dev/null @@ -1,20 +0,0 @@ -use solana_program::{account_info::AccountInfo, entrypoint::ProgramResult}; -use steel::*; -use transfer_sol_api::prelude::*; - -pub fn process_transfer_sol_with_program(accounts: &[AccountInfo], data: &[u8]) -> ProgramResult { - // Parse args. - let args = TransferSolWithProgram::try_from_bytes(data)?; - let amount: u64 = u64::from_le_bytes(args.amount); - - // Load accounts. - let [signer_info, receiver_info] = accounts else { - return Err(ProgramError::NotEnoughAccountKeys); - }; - signer_info.is_signer()?; - - **signer_info.try_borrow_mut_lamports()? -= amount; - **receiver_info.try_borrow_mut_lamports()? += amount; - - Ok(()) -} diff --git a/basics/transfer-sol/steel/program/tests/test.rs b/basics/transfer-sol/steel/program/tests/test.rs deleted file mode 100644 index e5ec5ddfb..000000000 --- a/basics/transfer-sol/steel/program/tests/test.rs +++ /dev/null @@ -1,72 +0,0 @@ -use solana_program::hash::Hash; -use solana_program_test::{processor, BanksClient, ProgramTest}; -use solana_sdk::{ - native_token::LAMPORTS_PER_SOL, signature::Keypair, signer::Signer, - system_instruction::create_account, transaction::Transaction, -}; -use transfer_sol_api::prelude::*; - -async fn setup() -> (BanksClient, Keypair, Hash) { - let mut program_test = ProgramTest::new( - "transfer_sol_program", - transfer_sol_api::ID, - processor!(transfer_sol_program::process_instruction), - ); - program_test.prefer_bpf(true); - program_test.start().await -} - -#[tokio::test] -async fn run_test() { - // Setup test - let (mut banks, payer, blockhash) = setup().await; - - let transfer_amount = LAMPORTS_PER_SOL * 1; - let receiver = Keypair::new(); - let receiver_1 = Keypair::new(); - let receiver_2 = Keypair::new(); - - // Submit add transaction. - let ix = transfer_sol_with_cpi(payer.pubkey(), receiver.pubkey(), transfer_amount); - let tx = Transaction::new_signed_with_payer(&[ix], Some(&payer.pubkey()), &[&payer], blockhash); - let res = banks.process_transaction(tx).await; - assert!(res.is_ok()); - - // create two account for following test - let create_receiver_1_ix = create_account( - &payer.pubkey(), - &receiver_1.pubkey(), - 2 * LAMPORTS_PER_SOL, - 0, - &transfer_sol_api::ID, - ); - - let create_receiver_2_ix = create_account( - &payer.pubkey(), - &receiver_2.pubkey(), - 2 * LAMPORTS_PER_SOL, - 0, - &transfer_sol_api::ID, - ); - - let tx = Transaction::new_signed_with_payer( - &[create_receiver_1_ix, create_receiver_2_ix], - Some(&payer.pubkey()), - &[&payer, &receiver_1, &receiver_2], - blockhash, - ); - - let res = banks.process_transaction(tx).await; - assert!(res.is_ok()); - - // Submit add transaction - let ix = transfer_sol_with_program(receiver_1.pubkey(), receiver_2.pubkey(), transfer_amount); - let tx = Transaction::new_signed_with_payer( - &[ix], - Some(&payer.pubkey()), - &[&payer, &receiver_1], - blockhash, - ); - let res = banks.process_transaction(tx).await; - assert!(res.is_ok()); -} diff --git a/basics/transfer-sol/steel/tests/instruction.ts b/basics/transfer-sol/steel/tests/instruction.ts deleted file mode 100644 index 488e1d897..000000000 --- a/basics/transfer-sol/steel/tests/instruction.ts +++ /dev/null @@ -1,74 +0,0 @@ -import { Buffer } from 'node:buffer'; -import { type PublicKey, SystemProgram, TransactionInstruction } from '@solana/web3.js'; -import * as borsh from 'borsh'; - -export enum InstructionType { - CpiTransfer = 0, - ProgramTransfer = 1, -} - -export class TransferInstruction { - instruction: InstructionType; - amount: number; - - constructor(props: { instruction: InstructionType; amount: number }) { - this.instruction = props.instruction; - this.amount = props.amount; - } - - toBuffer() { - return Buffer.from(borsh.serialize(TransferInstructionSchema, this)); - } - - static fromBuffer(buffer: Buffer) { - return borsh.deserialize(TransferInstructionSchema, TransferInstruction, buffer); - } -} - -export const TransferInstructionSchema = new Map([ - [ - TransferInstruction, - { - kind: 'struct', - fields: [ - ['instruction', 'u8'], - ['amount', 'u64'], - ], - }, - ], -]); - -export function createTransferInstruction( - payerPubkey: PublicKey, - recipientPubkey: PublicKey, - programId: PublicKey, - instruction: InstructionType, - amount: number, - systemProgramId?: boolean, -): TransactionInstruction { - const instructionObject = new TransferInstruction({ - instruction, - amount, - }); - - const keys = [ - { pubkey: payerPubkey, isSigner: true, isWritable: true }, - { pubkey: recipientPubkey, isSigner: false, isWritable: true }, - ]; - - if (systemProgramId) { - keys.push({ - pubkey: SystemProgram.programId, - isSigner: false, - isWritable: false, - }); - } - - const ix = new TransactionInstruction({ - keys: keys, - programId, - data: instructionObject.toBuffer(), - }); - - return ix; -} diff --git a/basics/transfer-sol/steel/tests/test.ts b/basics/transfer-sol/steel/tests/test.ts deleted file mode 100644 index 62df83398..000000000 --- a/basics/transfer-sol/steel/tests/test.ts +++ /dev/null @@ -1,96 +0,0 @@ -import { describe, test } from 'node:test'; -import { Keypair, LAMPORTS_PER_SOL, PublicKey, SystemProgram, Transaction } from '@solana/web3.js'; -import { start } from 'solana-bankrun'; -import { InstructionType, createTransferInstruction } from './instruction.ts'; - -describe('transfer-sol', async () => { - const PROGRAM_ID = new PublicKey('FNDnd3ZJptKromzx7h71o67AcR1emryyJPb9LjS8WPVw'); - const context = await start([{ name: 'transfer_sol_program', programId: PROGRAM_ID }], []); - const client = context.banksClient; - const payer = context.payer; - - const transferAmount = 1 * LAMPORTS_PER_SOL; - const test1Recipient = Keypair.generate(); - const test2Recipient1 = Keypair.generate(); - const test2Recipient2 = Keypair.generate(); - - test('Transfer between accounts using the system program', async () => { - await getBalances(payer.publicKey, test1Recipient.publicKey, 'Beginning'); - - const ix = createTransferInstruction(payer.publicKey, test1Recipient.publicKey, PROGRAM_ID, InstructionType.CpiTransfer, transferAmount, true); - - const tx = new Transaction(); - const res = await client.getLatestBlockhash(); - - if (res) { - const [blockhash, _] = res; - - tx.recentBlockhash = blockhash; - tx.add(ix).sign(payer); - - await client.processTransaction(tx); - - await getBalances(payer.publicKey, test1Recipient.publicKey, 'Resulting'); - } - }); - - test('Create two accounts for the following test', async () => { - const ix = (pubkey: PublicKey) => { - return SystemProgram.createAccount({ - fromPubkey: payer.publicKey, - newAccountPubkey: pubkey, - space: 0, - lamports: 2 * LAMPORTS_PER_SOL, - programId: PROGRAM_ID, - }); - }; - - const tx = new Transaction(); - - const res = await client.getLatestBlockhash(); - - if (res) { - const [blockhash, _] = res; - - tx.recentBlockhash = blockhash; - tx.add(ix(test2Recipient1.publicKey)).add(ix(test2Recipient2.publicKey)).sign(payer, test2Recipient1, test2Recipient2); - - await client.processTransaction(tx); - } - }); - - test('Transfer between accounts using our program', async () => { - await getBalances(test2Recipient1.publicKey, test2Recipient2.publicKey, 'Beginning'); - - const ix = createTransferInstruction( - test2Recipient1.publicKey, - test2Recipient2.publicKey, - PROGRAM_ID, - InstructionType.ProgramTransfer, - transferAmount, - ); - - const tx = new Transaction(); - const res = await client.getLatestBlockhash(); - - if (res) { - const [blockhash, _] = res; - - tx.recentBlockhash = blockhash; - tx.add(ix).sign(payer, test2Recipient1); - - await client.processTransaction(tx); - - await getBalances(test2Recipient1.publicKey, test2Recipient2.publicKey, 'Resulting'); - } - }); - - async function getBalances(payerPubkey: PublicKey, recipientPubkey: PublicKey, timeframe: string) { - const payerBalance = await client.getBalance(payerPubkey); - const recipientBalance = await client.getBalance(recipientPubkey); - - console.log(`${timeframe} balances:`); - console.log(` Payer: ${payerBalance}`); - console.log(` Recipient: ${recipientBalance}`); - } -}); diff --git a/basics/transfer-sol/steel/tsconfig.json b/basics/transfer-sol/steel/tsconfig.json deleted file mode 100644 index cd5d2e3d0..000000000 --- a/basics/transfer-sol/steel/tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "compilerOptions": { - "types": ["mocha", "chai"], - "typeRoots": ["./node_modules/@types"], - "lib": ["es2015"], - "module": "commonjs", - "target": "es6", - "esModuleInterop": true - } -} diff --git a/oracles/pyth/seahorse/.gitignore b/oracles/pyth/seahorse/.gitignore deleted file mode 100644 index d243ecc13..000000000 --- a/oracles/pyth/seahorse/.gitignore +++ /dev/null @@ -1,7 +0,0 @@ - -.anchor -.DS_Store -target -**/*.rs.bk -node_modules -test-ledger diff --git a/oracles/pyth/seahorse/.prettierignore b/oracles/pyth/seahorse/.prettierignore deleted file mode 100644 index c1a0b75f0..000000000 --- a/oracles/pyth/seahorse/.prettierignore +++ /dev/null @@ -1,8 +0,0 @@ - -.anchor -.DS_Store -target -node_modules -dist -build -test-ledger diff --git a/oracles/pyth/seahorse/Anchor.toml b/oracles/pyth/seahorse/Anchor.toml deleted file mode 100644 index db640af03..000000000 --- a/oracles/pyth/seahorse/Anchor.toml +++ /dev/null @@ -1,21 +0,0 @@ -[features] -seeds = true -skip-lint = false -[programs.localnet] -seahorse = "9USP8f9ooxUxWTyqrQSDfyiXE1FP7Wfsg34NfAbdK1ur" - -[registry] -url = "https://api.apr.dev" - -[provider] -cluster = "Localnet" -wallet = "~/.config/solana/id.json" - -[scripts] -test = "pnpm ts-mocha -p ./tsconfig.json -t 1000000 tests/**/*.ts" - -[test.validator] -url = "https://api.mainnet-beta.solana.com" - -[[test.validator.clone]] -address = "H6ARHf6YXhGYeQfUzQNGk6rDNnLBQKrenN712K4AQJEG" diff --git a/oracles/pyth/seahorse/Cargo.toml b/oracles/pyth/seahorse/Cargo.toml deleted file mode 100644 index f39770481..000000000 --- a/oracles/pyth/seahorse/Cargo.toml +++ /dev/null @@ -1,14 +0,0 @@ -[workspace] -members = [ - "programs/*" -] -resolver = "2" - -[profile.release] -overflow-checks = true -lto = "fat" -codegen-units = 1 -[profile.release.build-override] -opt-level = 3 -incremental = false -codegen-units = 1 diff --git a/oracles/pyth/seahorse/README.md b/oracles/pyth/seahorse/README.md deleted file mode 100644 index 244dc29b5..000000000 --- a/oracles/pyth/seahorse/README.md +++ /dev/null @@ -1,13 +0,0 @@ -## Using Seahorse with Pyth - -Make sure to import the Pyth module for Seahorse. - -`from seahorse.pyth import *` - -You have to validate a price feed's ID for security reasons, if you want to read the SOL/USD price feed, you can verify the account in the context like this: - -`price_account.validate_price_feed("SOL/USD")` - -For more information, visit the [Seahorse documentation on Pyth](https://seahorse-lang.org/docs/pyth). - - diff --git a/oracles/pyth/seahorse/migrations/deploy.ts b/oracles/pyth/seahorse/migrations/deploy.ts deleted file mode 100644 index 64a1c3599..000000000 --- a/oracles/pyth/seahorse/migrations/deploy.ts +++ /dev/null @@ -1,12 +0,0 @@ -// Migrations are an early feature. Currently, they're nothing more than this -// single deploy script that's invoked from the CLI, injecting a provider -// configured from the workspace's Anchor.toml. - -const anchor = require('@coral-xyz/anchor'); - -module.exports = async (provider) => { - // Configure client to use the provider. - anchor.setProvider(provider); - - // Add your deploy script here. -}; diff --git a/oracles/pyth/seahorse/package.json b/oracles/pyth/seahorse/package.json deleted file mode 100644 index b5355136b..000000000 --- a/oracles/pyth/seahorse/package.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "scripts": { - "lint:fix": "prettier */*.js \"*/**/*{.js,.ts}\" -w", - "lint": "prettier */*.js \"*/**/*{.js,.ts}\" --check" - }, - "dependencies": { - "@coral-xyz/anchor": "^0.27.0" - }, - "devDependencies": { - "chai": "^4.3.4", - "mocha": "^9.0.3", - "ts-mocha": "^10.0.0", - "@types/bn.js": "^5.1.0", - "@types/chai": "^4.3.0", - "@types/mocha": "^9.0.0", - "typescript": "^4.3.5", - "prettier": "^2.6.2" - } -} diff --git a/oracles/pyth/seahorse/programs/seahorse/Cargo.toml b/oracles/pyth/seahorse/programs/seahorse/Cargo.toml deleted file mode 100644 index add3a2554..000000000 --- a/oracles/pyth/seahorse/programs/seahorse/Cargo.toml +++ /dev/null @@ -1,22 +0,0 @@ -[package] -name = "seahorse" -version = "0.1.0" -description = "Created with Anchor" -edition = "2021" - -[lib] -crate-type = ["cdylib", "lib"] -name = "seahorse" - -[features] -default = [] -cpi = ["no-entrypoint"] -no-entrypoint = [] -no-idl = [] -no-log-ix-name = [] -idl-build = ["anchor-lang/idl-build", "anchor-spl/idl-build"] - -[dependencies] -anchor-lang = "0.27.0" -anchor-spl = "0.27.0" -pyth-sdk-solana = { version = "0.7.1" } diff --git a/oracles/pyth/seahorse/programs/seahorse/Xargo.toml b/oracles/pyth/seahorse/programs/seahorse/Xargo.toml deleted file mode 100644 index 475fb71ed..000000000 --- a/oracles/pyth/seahorse/programs/seahorse/Xargo.toml +++ /dev/null @@ -1,2 +0,0 @@ -[target.bpfel-unknown-unknown.dependencies.std] -features = [] diff --git a/oracles/pyth/seahorse/programs/seahorse/src/dot/mod.rs b/oracles/pyth/seahorse/programs/seahorse/src/dot/mod.rs deleted file mode 100644 index e2c04eaaa..000000000 --- a/oracles/pyth/seahorse/programs/seahorse/src/dot/mod.rs +++ /dev/null @@ -1 +0,0 @@ -pub mod program; diff --git a/oracles/pyth/seahorse/programs/seahorse/src/dot/program.rs b/oracles/pyth/seahorse/programs/seahorse/src/dot/program.rs deleted file mode 100644 index 8b3d5f451..000000000 --- a/oracles/pyth/seahorse/programs/seahorse/src/dot/program.rs +++ /dev/null @@ -1,52 +0,0 @@ -#![allow(unused_imports)] -#![allow(unused_variables)] -#![allow(unused_mut)] -use crate::{id, seahorse_util::*}; -use anchor_lang::{prelude::*, solana_program}; -use anchor_spl::token::{self, Mint, Token, TokenAccount}; -use pyth_sdk_solana::load_price_feed_from_account_info; -use std::{cell::RefCell, rc::Rc}; - -pub fn get_pyth_price_handler<'info>( - mut pyth_price_account: UncheckedAccount<'info>, - mut signer: SeahorseSigner<'info, '_>, -) -> () { - let mut price_feed = { - if pyth_price_account.key() - != Pubkey::new_from_array([ - 239u8, 13u8, 139u8, 111u8, 218u8, 44u8, 235u8, 164u8, 29u8, 161u8, 93u8, 64u8, - 149u8, 209u8, 218u8, 57u8, 42u8, 13u8, 47u8, 142u8, 208u8, 198u8, 199u8, 188u8, - 15u8, 76u8, 250u8, 200u8, 194u8, 128u8, 181u8, 109u8, - ]) - { - panic!("Pyth PriceAccount validation failed: expected mainnet-SOL/USD") - } - - load_price_feed_from_account_info(&pyth_price_account).unwrap() - }; - - { - let price = price_feed.get_price_unchecked(); - - (price.price as f64) * 10f64.powf(price.expo as f64) - }; - - let mut price = price_feed.get_price_unchecked(); - let mut x = { - let price = price; - - (price.price as f64) * 10f64.powf(price.expo as f64) - }; - - let mut p = price.price; - let mut c = price.conf; - let mut e = price.expo; - - solana_program::msg!("{} {}", "Pyth price: ".to_string(), x); - - solana_program::msg!("{} {}", "Pyth price: ".to_string(), p); - - solana_program::msg!("{} {}", "Pyth confidence interval: ".to_string(), c); - - solana_program::msg!("{} {}", "Pyth account decimal exponent: ".to_string(), e); -} diff --git a/oracles/pyth/seahorse/programs/seahorse/src/lib.rs b/oracles/pyth/seahorse/programs/seahorse/src/lib.rs deleted file mode 100644 index ee7fc27bd..000000000 --- a/oracles/pyth/seahorse/programs/seahorse/src/lib.rs +++ /dev/null @@ -1,193 +0,0 @@ -#![allow(unused_imports)] -#![allow(unused_variables)] -#![allow(unused_mut)] - -pub mod dot; - -use anchor_lang::prelude::*; -use anchor_spl::{ - associated_token::{self, AssociatedToken}, - token::{self, Mint, Token, TokenAccount}, -}; - -use dot::program::*; -use std::{cell::RefCell, rc::Rc}; - -declare_id!("9USP8f9ooxUxWTyqrQSDfyiXE1FP7Wfsg34NfAbdK1ur"); - -pub mod seahorse_util { - use super::*; - - #[cfg(feature = "pyth-sdk-solana")] - pub use pyth_sdk_solana::{load_price_feed_from_account_info, PriceFeed}; - use std::{collections::HashMap, fmt::Debug, ops::Deref}; - - pub struct Mutable(Rc>); - - impl Mutable { - pub fn new(obj: T) -> Self { - Self(Rc::new(RefCell::new(obj))) - } - } - - impl Clone for Mutable { - fn clone(&self) -> Self { - Self(self.0.clone()) - } - } - - impl Deref for Mutable { - type Target = Rc>; - - fn deref(&self) -> &Self::Target { - &self.0 - } - } - - impl Debug for Mutable { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(f, "{:?}", self.0) - } - } - - impl Default for Mutable { - fn default() -> Self { - Self::new(T::default()) - } - } - - impl Mutable> { - pub fn wrapped_index(&self, mut index: i128) -> usize { - if index >= 0 { - return index.try_into().unwrap(); - } - - index += self.borrow().len() as i128; - - return index.try_into().unwrap(); - } - } - - impl Mutable<[T; N]> { - pub fn wrapped_index(&self, mut index: i128) -> usize { - if index >= 0 { - return index.try_into().unwrap(); - } - - index += self.borrow().len() as i128; - - return index.try_into().unwrap(); - } - } - - #[derive(Clone)] - pub struct Empty { - pub account: T, - pub bump: Option, - } - - #[derive(Clone, Debug)] - pub struct ProgramsMap<'info>(pub HashMap<&'static str, AccountInfo<'info>>); - - impl<'info> ProgramsMap<'info> { - pub fn get(&self, name: &'static str) -> AccountInfo<'info> { - self.0.get(name).unwrap().clone() - } - } - - #[derive(Clone, Debug)] - pub struct WithPrograms<'info, 'entrypoint, A> { - pub account: &'entrypoint A, - pub programs: &'entrypoint ProgramsMap<'info>, - } - - impl<'info, 'entrypoint, A> Deref for WithPrograms<'info, 'entrypoint, A> { - type Target = A; - - fn deref(&self) -> &Self::Target { - &self.account - } - } - - pub type SeahorseAccount<'info, 'entrypoint, A> = - WithPrograms<'info, 'entrypoint, Box>>; - - pub type SeahorseSigner<'info, 'entrypoint> = WithPrograms<'info, 'entrypoint, Signer<'info>>; - - #[derive(Clone, Debug)] - pub struct CpiAccount<'info> { - #[doc = "CHECK: CpiAccounts temporarily store AccountInfos."] - pub account_info: AccountInfo<'info>, - pub is_writable: bool, - pub is_signer: bool, - pub seeds: Option>>, - } - - #[macro_export] - macro_rules! seahorse_const { - ($ name : ident , $ value : expr) => { - macro_rules! $name { - () => { - $value - }; - } - - pub(crate) use $name; - }; - } - - #[macro_export] - macro_rules! assign { - ($ lval : expr , $ rval : expr) => {{ - let temp = $rval; - - $lval = temp; - }}; - } - - #[macro_export] - macro_rules! index_assign { - ($ lval : expr , $ idx : expr , $ rval : expr) => { - let temp_rval = $rval; - let temp_idx = $idx; - - $lval[temp_idx] = temp_rval; - }; - } - - pub(crate) use assign; - - pub(crate) use index_assign; - - pub(crate) use seahorse_const; -} - -#[program] -mod seahorse { - use super::*; - use seahorse_util::*; - use std::collections::HashMap; - - #[derive(Accounts)] - pub struct GetPythPrice<'info> { - #[account()] - #[doc = "CHECK: This account is unchecked."] - pub pyth_price_account: UncheckedAccount<'info>, - #[account(mut)] - pub signer: Signer<'info>, - } - - pub fn get_pyth_price(ctx: Context) -> Result<()> { - let mut programs = HashMap::new(); - let programs_map = ProgramsMap(programs); - let pyth_price_account = &ctx.accounts.pyth_price_account.clone(); - let signer = SeahorseSigner { - account: &ctx.accounts.signer, - programs: &programs_map, - }; - - get_pyth_price_handler(pyth_price_account.clone(), signer.clone()); - - return Ok(()); - } -} diff --git a/oracles/pyth/seahorse/programs_py/seahorse.py b/oracles/pyth/seahorse/programs_py/seahorse.py deleted file mode 100644 index 341f7c9f6..000000000 --- a/oracles/pyth/seahorse/programs_py/seahorse.py +++ /dev/null @@ -1,32 +0,0 @@ -# seahorse -# Built with Seahorse v0.2.7 - -from seahorse.prelude import * -from seahorse.pyth import * - -declare_id('9USP8f9ooxUxWTyqrQSDfyiXE1FP7Wfsg34NfAbdK1ur') - -@instruction -def get_pyth_price( - pyth_price_account: PriceAccount, - signer: Signer, - ): - price_feed = pyth_price_account.validate_price_feed("SOL/USD") - price_feed.get_price().num() - - price = price_feed.get_price() - - x: f64 = price.num() - p: i64 = price.price - c: u64 = price.conf - e: i32 = price.expo - - - print("Pyth price: ", x) - print("Pyth price without decimals: ", p) - print("Pyth confidence interval: ", c) - print("Pyth account decimal exponent: ", e) - - - - diff --git a/oracles/pyth/seahorse/programs_py/seahorse/__init__.py b/oracles/pyth/seahorse/programs_py/seahorse/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/oracles/pyth/seahorse/programs_py/seahorse/prelude.py b/oracles/pyth/seahorse/programs_py/seahorse/prelude.py deleted file mode 100644 index d7f012230..000000000 --- a/oracles/pyth/seahorse/programs_py/seahorse/prelude.py +++ /dev/null @@ -1,1062 +0,0 @@ -# seahorse.prelude: the basis for writing Seahorse programs. -# -# NOTE: this file just contains types and documentation for your editor. This -# is NOT executable code, and you won't be able to change the behavior of your -# Seahorse programs by editing this file. - -from typing import * -from math import floor, ceil - -T = TypeVar('T') -N = TypeVar('N') - - -# ========== -# Rust types -# ========== - -class u8: - """8-bit unsigned integer.""" - - def __init__(self, _: Any) -> 'u8': - """Construct an u8.""" - - def __add__(self, other: 'u8') -> 'u8': - pass - - def __radd__(self, other: 'u8') -> 'u8': - pass - - def __iadd__(self, other: 'u8') -> 'u8': - pass - - def __sub__(self, other: 'u8') -> 'u8': - pass - - def __rsub__(self, other: 'u8') -> 'u8': - pass - - def __isub__(self, other: 'u8') -> 'u8': - pass - - def __mul__(self, other: 'u8') -> 'u8': - pass - - def __rmul__(self, other: 'u8') -> 'u8': - pass - - def __imul__(self, other: 'u8') -> 'u8': - pass - - def __truediv__(self, other: 'f64') -> 'f64': - pass - - def __rtruediv__(self, other: 'f64') -> 'f64': - pass - - def __itruediv__(self, other: 'f64') -> 'f64': - pass - - def __floordiv__(self, other: 'u8') -> 'u8': - pass - - def __rfloordiv__(self, other: 'u8') -> 'u8': - pass - - def __ifloordiv__(self, other: 'u8') -> 'u8': - pass - - def __lt__(self, other: 'u8') -> bool: - pass - - def __le__(self, other: 'u8') -> bool: - pass - - def __eq__(self, other: 'u8') -> bool: - pass - - def __ne__(self, other: 'u8') -> bool: - pass - - def __ge__(self, other: 'u8') -> bool: - pass - - def __gt__(self, other: 'u8') -> bool: - pass - - -class u16: - """16-bit unsigned integer.""" - - def __init__(self, _: Any) -> 'u16': - """Construct an u16.""" - - def __add__(self, other: 'u16') -> 'u16': - pass - - def __radd__(self, other: 'u16') -> 'u16': - pass - - def __iadd__(self, other: 'u16') -> 'u16': - pass - - def __sub__(self, other: 'u16') -> 'u16': - pass - - def __rsub__(self, other: 'u16') -> 'u16': - pass - - def __isub__(self, other: 'u16') -> 'u16': - pass - - def __mul__(self, other: 'u16') -> 'u16': - pass - - def __rmul__(self, other: 'u16') -> 'u16': - pass - - def __imul__(self, other: 'u16') -> 'u16': - pass - - def __truediv__(self, other: 'f64') -> 'f64': - pass - - def __rtruediv__(self, other: 'f64') -> 'f64': - pass - - def __itruediv__(self, other: 'f64') -> 'f64': - pass - - def __floordiv__(self, other: 'u16') -> 'u16': - pass - - def __rfloordiv__(self, other: 'u16') -> 'u16': - pass - - def __ifloordiv__(self, other: 'u16') -> 'u16': - pass - - def __lt__(self, other: 'u16') -> bool: - pass - - def __le__(self, other: 'u16') -> bool: - pass - - def __eq__(self, other: 'u16') -> bool: - pass - - def __ne__(self, other: 'u16') -> bool: - pass - - def __ge__(self, other: 'u16') -> bool: - pass - - def __gt__(self, other: 'u16') -> bool: - pass - -class u32: - """32-bit unsigned integer.""" - - def __init__(self, _: Any) -> 'u32': - """Construct an u32.""" - - def __add__(self, other: 'u32') -> 'u32': - pass - - def __radd__(self, other: 'u32') -> 'u32': - pass - - def __iadd__(self, other: 'u32') -> 'u32': - pass - - def __sub__(self, other: 'u32') -> 'u32': - pass - - def __rsub__(self, other: 'u32') -> 'u32': - pass - - def __isub__(self, other: 'u32') -> 'u32': - pass - - def __mul__(self, other: 'u32') -> 'u32': - pass - - def __rmul__(self, other: 'u32') -> 'u32': - pass - - def __imul__(self, other: 'u32') -> 'u32': - pass - - def __truediv__(self, other: 'f64') -> 'f64': - pass - - def __rtruediv__(self, other: 'f64') -> 'f64': - pass - - def __itruediv__(self, other: 'f64') -> 'f64': - pass - - def __floordiv__(self, other: 'u32') -> 'u32': - pass - - def __rfloordiv__(self, other: 'u32') -> 'u32': - pass - - def __ifloordiv__(self, other: 'u32') -> 'u32': - pass - - def __lt__(self, other: 'u32') -> bool: - pass - - def __le__(self, other: 'u32') -> bool: - pass - - def __eq__(self, other: 'u32') -> bool: - pass - - def __ne__(self, other: 'u32') -> bool: - pass - - def __ge__(self, other: 'u32') -> bool: - pass - - def __gt__(self, other: 'u32') -> bool: - pass - -class u64: - """64-bit unsigned integer.""" - - def __init__(self, _: Any) -> 'u64': - """Construct an u64.""" - - def __add__(self, other: 'u64') -> 'u64': - pass - - def __radd__(self, other: 'u64') -> 'u64': - pass - - def __iadd__(self, other: 'u64') -> 'u64': - pass - - def __sub__(self, other: 'u64') -> 'u64': - pass - - def __rsub__(self, other: 'u64') -> 'u64': - pass - - def __isub__(self, other: 'u64') -> 'u64': - pass - - def __mul__(self, other: 'u64') -> 'u64': - pass - - def __rmul__(self, other: 'u64') -> 'u64': - pass - - def __imul__(self, other: 'u64') -> 'u64': - pass - - def __truediv__(self, other: 'f64') -> 'f64': - pass - - def __rtruediv__(self, other: 'f64') -> 'f64': - pass - - def __itruediv__(self, other: 'f64') -> 'f64': - pass - - def __floordiv__(self, other: 'u64') -> 'u64': - pass - - def __rfloordiv__(self, other: 'u64') -> 'u64': - pass - - def __ifloordiv__(self, other: 'u64') -> 'u64': - pass - - def __lt__(self, other: 'u64') -> bool: - pass - - def __le__(self, other: 'u64') -> bool: - pass - - def __eq__(self, other: 'u64') -> bool: - pass - - def __ne__(self, other: 'u64') -> bool: - pass - - def __ge__(self, other: 'u64') -> bool: - pass - - def __gt__(self, other: 'u64') -> bool: - pass - -class u128: - """128-bit unsigned integer.""" - - def __init__(self, _: Any) -> 'u128': - """Construct an u128.""" - - def __add__(self, other: 'u128') -> 'u128': - pass - - def __radd__(self, other: 'u128') -> 'u128': - pass - - def __iadd__(self, other: 'u128') -> 'u128': - pass - - def __sub__(self, other: 'u128') -> 'u128': - pass - - def __rsub__(self, other: 'u128') -> 'u128': - pass - - def __isub__(self, other: 'u128') -> 'u128': - pass - - def __mul__(self, other: 'u128') -> 'u128': - pass - - def __rmul__(self, other: 'u128') -> 'u128': - pass - - def __imul__(self, other: 'u128') -> 'u128': - pass - - def __truediv__(self, other: 'f64') -> 'f64': - pass - - def __rtruediv__(self, other: 'f64') -> 'f64': - pass - - def __itruediv__(self, other: 'f64') -> 'f64': - pass - - def __floordiv__(self, other: 'u128') -> 'u128': - pass - - def __rfloordiv__(self, other: 'u128') -> 'u128': - pass - - def __ifloordiv__(self, other: 'u128') -> 'u128': - pass - - def __lt__(self, other: 'u128') -> bool: - pass - - def __le__(self, other: 'u128') -> bool: - pass - - def __eq__(self, other: 'u128') -> bool: - pass - - def __ne__(self, other: 'u128') -> bool: - pass - - def __ge__(self, other: 'u128') -> bool: - pass - - def __gt__(self, other: 'u128') -> bool: - pass - -class i8: - """8-bit signed integer.""" - - def __init__(self, _: Any) -> 'i8': - """Construct an i8.""" - - def __add__(self, other: 'i8') -> 'i8': - pass - - def __radd__(self, other: 'i8') -> 'i8': - pass - - def __iadd__(self, other: 'i8') -> 'i8': - pass - - def __sub__(self, other: 'i8') -> 'i8': - pass - - def __rsub__(self, other: 'i8') -> 'i8': - pass - - def __isub__(self, other: 'i8') -> 'i8': - pass - - def __mul__(self, other: 'i8') -> 'i8': - pass - - def __rmul__(self, other: 'i8') -> 'i8': - pass - - def __imul__(self, other: 'i8') -> 'i8': - pass - - def __truediv__(self, other: 'f64') -> 'f64': - pass - - def __rtruediv__(self, other: 'f64') -> 'f64': - pass - - def __itruediv__(self, other: 'f64') -> 'f64': - pass - - def __floordiv__(self, other: 'i8') -> 'i8': - pass - - def __rfloordiv__(self, other: 'i8') -> 'i8': - pass - - def __ifloordiv__(self, other: 'i8') -> 'i8': - pass - -class i16: - """16-bit signed integer.""" - - def __init__(self, _: Any) -> 'i16': - """Construct an i16.""" - - def __add__(self, other: 'i16') -> 'i16': - pass - - def __radd__(self, other: 'i16') -> 'i16': - pass - - def __iadd__(self, other: 'i16') -> 'i16': - pass - - def __sub__(self, other: 'i16') -> 'i16': - pass - - def __rsub__(self, other: 'i16') -> 'i16': - pass - - def __isub__(self, other: 'i16') -> 'i16': - pass - - def __mul__(self, other: 'i16') -> 'i16': - pass - - def __rmul__(self, other: 'i16') -> 'i16': - pass - - def __imul__(self, other: 'i16') -> 'i16': - pass - - def __truediv__(self, other: 'f64') -> 'f64': - pass - - def __rtruediv__(self, other: 'f64') -> 'f64': - pass - - def __itruediv__(self, other: 'f64') -> 'f64': - pass - - def __floordiv__(self, other: 'i16') -> 'i16': - pass - - def __rfloordiv__(self, other: 'i16') -> 'i16': - pass - - def __ifloordiv__(self, other: 'i16') -> 'i16': - pass - - def __lt__(self, other: 'i16') -> bool: - pass - - def __le__(self, other: 'i16') -> bool: - pass - - def __eq__(self, other: 'i16') -> bool: - pass - - def __ne__(self, other: 'i16') -> bool: - pass - - def __ge__(self, other: 'i16') -> bool: - pass - - def __gt__(self, other: 'i16') -> bool: - pass - -class i32: - """32-bit signed integer.""" - - def __init__(self, _: Any) -> 'i32': - """Construct an i32.""" - - def __add__(self, other: 'i32') -> 'i32': - pass - - def __radd__(self, other: 'i32') -> 'i32': - pass - - def __iadd__(self, other: 'i32') -> 'i32': - pass - - def __sub__(self, other: 'i32') -> 'i32': - pass - - def __rsub__(self, other: 'i32') -> 'i32': - pass - - def __isub__(self, other: 'i32') -> 'i32': - pass - - def __mul__(self, other: 'i32') -> 'i32': - pass - - def __rmul__(self, other: 'i32') -> 'i32': - pass - - def __imul__(self, other: 'i32') -> 'i32': - pass - - def __truediv__(self, other: 'f64') -> 'f64': - pass - - def __rtruediv__(self, other: 'f64') -> 'f64': - pass - - def __itruediv__(self, other: 'f64') -> 'f64': - pass - - def __floordiv__(self, other: 'i32') -> 'i32': - pass - - def __rfloordiv__(self, other: 'i32') -> 'i32': - pass - - def __ifloordiv__(self, other: 'i32') -> 'i32': - pass - - def __lt__(self, other: 'i32') -> bool: - pass - - def __le__(self, other: 'i32') -> bool: - pass - - def __eq__(self, other: 'i32') -> bool: - pass - - def __ne__(self, other: 'i32') -> bool: - pass - - def __ge__(self, other: 'i32') -> bool: - pass - - def __gt__(self, other: 'i32') -> bool: - pass - -class i64: - """64-bit signed integer.""" - - def __init__(self, _: Any) -> 'i64': - """Construct an i64.""" - - def __add__(self, other: 'i64') -> 'i64': - pass - - def __radd__(self, other: 'i64') -> 'i64': - pass - - def __iadd__(self, other: 'i64') -> 'i64': - pass - - def __sub__(self, other: 'i64') -> 'i64': - pass - - def __rsub__(self, other: 'i64') -> 'i64': - pass - - def __isub__(self, other: 'i64') -> 'i64': - pass - - def __mul__(self, other: 'i64') -> 'i64': - pass - - def __rmul__(self, other: 'i64') -> 'i64': - pass - - def __imul__(self, other: 'i64') -> 'i64': - pass - - def __truediv__(self, other: 'f64') -> 'f64': - pass - - def __rtruediv__(self, other: 'f64') -> 'f64': - pass - - def __itruediv__(self, other: 'f64') -> 'f64': - pass - - def __floordiv__(self, other: 'i64') -> 'i64': - pass - - def __rfloordiv__(self, other: 'i64') -> 'i64': - pass - - def __ifloordiv__(self, other: 'i64') -> 'i64': - pass - - def __lt__(self, other: 'i64') -> bool: - pass - - def __le__(self, other: 'i64') -> bool: - pass - - def __eq__(self, other: 'i64') -> bool: - pass - - def __ne__(self, other: 'i64') -> bool: - pass - - def __ge__(self, other: 'i64') -> bool: - pass - - def __gt__(self, other: 'i64') -> bool: - pass - -class i128: - """128-bit signed integer.""" - - def __init__(self, _: Any) -> 'i128': - """Construct an i128.""" - - def __add__(self, other: 'i128') -> 'i128': - pass - - def __radd__(self, other: 'i128') -> 'i128': - pass - - def __iadd__(self, other: 'i128') -> 'i128': - pass - - def __sub__(self, other: 'i128') -> 'i128': - pass - - def __rsub__(self, other: 'i128') -> 'i128': - pass - - def __isub__(self, other: 'i128') -> 'i128': - pass - - def __mul__(self, other: 'i128') -> 'i128': - pass - - def __rmul__(self, other: 'i128') -> 'i128': - pass - - def __imul__(self, other: 'i128') -> 'i128': - pass - - def __truediv__(self, other: 'f64') -> 'f64': - pass - - def __rtruediv__(self, other: 'f64') -> 'f64': - pass - - def __itruediv__(self, other: 'f64') -> 'f64': - pass - - def __floordiv__(self, other: 'i128') -> 'i128': - pass - - def __rfloordiv__(self, other: 'i128') -> 'i128': - pass - - def __ifloordiv__(self, other: 'i128') -> 'i128': - pass - - def __lt__(self, other: 'i128') -> bool: - pass - - def __le__(self, other: 'i128') -> bool: - pass - - def __eq__(self, other: 'i128') -> bool: - pass - - def __ne__(self, other: 'i128') -> bool: - pass - - def __ge__(self, other: 'i128') -> bool: - pass - - def __gt__(self, other: 'i128') -> bool: - pass - -class f64: - """64-bit floating point number.""" - - def __init__(self, _: Any) -> 'f64': - """Construct an f64.""" - - def __add__(self, other: 'f64') -> 'f64': - pass - - def __radd__(self, other: 'f64') -> 'f64': - pass - - def __iadd__(self, other: 'f64') -> 'f64': - pass - - def __sub__(self, other: 'f64') -> 'f64': - pass - - def __rsub__(self, other: 'f64') -> 'f64': - pass - - def __isub__(self, other: 'f64') -> 'f64': - pass - - def __mul__(self, other: 'f64') -> 'f64': - pass - - def __rmul__(self, other: 'f64') -> 'f64': - pass - - def __imul__(self, other: 'f64') -> 'f64': - pass - - def __truediv__(self, other: 'f64') -> 'f64': - pass - - def __rtruediv__(self, other: 'f64') -> 'f64': - pass - - def __itruediv__(self, other: 'f64') -> 'f64': - pass - - def __floordiv__(self, other: 'f64') -> 'f64': - pass - - def __rfloordiv__(self, other: 'f64') -> 'f64': - pass - - def __ifloordiv__(self, other: 'f64') -> 'f64': - pass - - def __lt__(self, other: 'f64') -> bool: - pass - - def __le__(self, other: 'f64') -> bool: - pass - - def __eq__(self, other: 'f64') -> bool: - pass - - def __ne__(self, other: 'f64') -> bool: - pass - - def __ge__(self, other: 'f64') -> bool: - pass - - def __gt__(self, other: 'f64') -> bool: - pass - -class Array(Generic[T, N]): - """ - A fixed-length array: contains type T and has size N. - - N must be known at compile-time, and may not be anything other than a non-negative integer literal. Example: - - ``` - # Good - a: Array[u8, 4] - - # Bad - N = 4 - a: Array[u8, N] - ``` - """ - - def __init__(iterable: Iterable[T], len: N) -> 'Array[T, N]': - """ - Construct an array from an iterable and a length. - - The parameter len must be known at compile-time, and may not be anything other than a non-negative integer literal. Example: - - ``` - a = [0, 1, 2, 3] - - # Good - Array(a, 4) - # Compiles, but will definitely error at runtime - Array(a, 5) - - # Bad (will not compile) - a = [0, 1, 2, 3] - Array(a, len(a)) - ``` - """ - - def __getitem__(self, index: Any) -> T: - """ - Index into this array. - - Like Python's native list type, performs wrapping indexing - if you pass in -1, you'll get the last element of the array. - """ - -def array(*elements: T) -> Array[T, N]: - """ - Create an array from a variadic list of elements. Example: - - ``` - # Array[u64, 3] - array(u64(0), 1, 2) - - # Array[str, 4] - array('seahorse', 'is', 'the', 'best!') - ``` - """ - -class Enum: - """ - A type that can have one of multiple named values. - - Note that unlike Rust enums, these cannot contain any data (other than the variant itself). Example: - - ``` - class MyEnum(Enum): - ONE = 1 - TWO = 2 - THREE = 3 - - @instruction - def use_enum(code: MyEnum): - if code == MyEnum.ONE: - print(1) - # ... - ``` - """ - - -# ============ -# Solana types -# ============ - -class Pubkey: - """32-byte account identifier.""" - - def find_program_address(seeds: List[Any], program_id: 'Pubkey' = None) -> Tuple['Pubkey', u8]: - """ - Find a valid program derived address and its corresponding bump seed. Calls the same function from Solana's Pubkey struct - read more [here](https://docs.rs/solana-program/latest/solana_program/pubkey/struct.Pubkey.html#method.find_program_address). - - @param seeds: A list of parameters to uniquely identify this account among all accounts created by your program. These may be string literals, other accounts, integers, or lists of bytes. - @param program_id: The pubkey of the program that the PDA belongs to. Defaults to the current program's key. - @returns: The canonical pubkey and bump seed. - """ - -class AccountWithKey: - """Generic Solana account.""" - - def key(self) -> Pubkey: - """Get this account's key.""" - -class Account(AccountWithKey): - """User-defined Solana account.""" - - def transfer_lamports(self, to: AccountWithKey, amount: u64): - """ - Transfer some SOL directly to another account. Since this account is program-owned, this transfer does not require a CPI. - - @param to: The recipient Solana account. - @param amount: The amount (in lamports, not SOL) to transfer. - """ - -class Event: - """Anchor event that clients can listen for""" - - def emit(self): - """ - Emit the event to the blockchain - """ - -class Signer(AccountWithKey): - """Instruction signer.""" - - def transfer_lamports(self, to: AccountWithKey, amount: u64): - """ - Transfer some SOL directly to another account. Unlike using transfer_lamports from a program account, this transfer will require a CPI. - - @param to: The recipient Solana account. - @param amount: The amount (in lamports, not SOL) to transfer. - """ - -class Empty(Generic[T]): - """An account that needs to be initialized.""" - - def init(self, payer: Signer, seeds: List[Any] = None, mint: 'TokenMint' = None, decimals: u8 = None, authority: AccountWithKey = None, associated: bool = False, space: u64 = None, padding: u64 = None) -> T: - """ - Initialize the account. - - @param payer: The account that will pay for the rent cost of the initialized account. Must be an instruction signer. - @param seeds: A list of parameters to uniquely identify this account among all accounts created by your program. These may be string literals, other accounts, integers, or lists of bytes. - @param mint: If initializing a TokenAccount, this is the mint that the account belongs to. - @param decimals: If initializing a TokenMint, this is the number of decimals the new token has. - @param authority: If initializing a TokenAccount/TokenMint, this is the account that has authority over the account. - @param associated: If initializing an associated token account, must be set to true. - @param space: If initializing a program account, you can use this to overwrite Seahorse's calculation of the account size. - @param padding: If initializing a program account, you can use this to add extra space to Seahorse's calculation of the account size. - @returns: The new, initialized account. All of the data in this account will be set to 0, bytewise. - """ - - def bump(self) -> u8: - """ - Get this account's bump, needed if you want to use this account to sign CPI calls. - - If you've initialized an account without seeds, then a bump will not have been calculated. This will result in a runtime error when you try to access it. - """ - - def key(self) -> Pubkey: - """Get this account's key.""" - -class CpiAccount: - """Account and metadata used for making arbitrary CPIs (via `Program.invoke`).""" - - def __init__(account: AccountWithKey, mut: bool = False, signer: bool = False, seeds: List[Any] = None) -> 'CpiAccount': - """ - Create the CpiAccount. - - @param account: The account being passed to the CPI. - @param mut: Whether this account needs to be mutable for the CPI - defaults to false. - @param signer: Whether this account needs to be an instruction signer - defaults to false. Mutually exclusive with seeds, and should only really be true if account is a Signer. - @param seeds: PDA signer seeds, if this account needs to sign the CPI. Mutually exclusive with signer. - """ - -class Program(AccountWithKey): - """Arbitrary program.""" - - def invoke(self, accounts: List[CpiAccount], data: List[u8]): - """ - Call this program in a cross-program invocation. Make sure you know what you're doing before you try using this - a poorly crafted data list could cost you real money. - - @param accounts: List of accounts being passed to the CPI - the program itself does not need to be in here. - @param data: "Raw" list of bytes used to tell the program what to do, pass args, etc. - """ - -class UncheckedAccount(AccountWithKey): - """ - Raw account that has had no safety checks performed on it. - - The underlying Anchor code cannot guarantee anything about the account unless you check it in your instruction - not the type, not the data, not the program it came from. Use carefully. - """ - -class Clock: - """ - Solana's Clock sysvar. - - Consult Solana's reference to learn more. Information copied from https://docs.rs/solana-program/1.14.3/solana_program/clock/struct.Clock.html. - """ - - def slot(self) -> u64: - """Get the current network/bank Slot.""" - - def epoch_start_timestamp(self) -> i64: - """Get the timestamp of the first Slot in this Epoch.""" - - def epoch(self) -> u64: - """Get the bank Epoch.""" - - def leader_schedule_epoch(self) -> u64: - """Get the future Epoch for which the leader schedule has most recently been calculated.""" - - def unix_timestamp(self) -> i64: - """ - Get the estimated current UNIX timestamp. - - Originally computed from genesis creation time and network time in slots (drifty); corrected using validator timestamp oracle as of timestamp_correction and timestamp_bounding features. - """ - -class TokenAccount(AccountWithKey): - """SPL token account.""" - - def authority(self) -> Pubkey: - """Get the owner of this token account.""" - - def amount(self) -> u64: - """Get the amount of token stored in this account.""" - - def mint(self) -> Pubkey: - """Get the mint that this token account corresponds to.""" - - def transfer(self, authority: AccountWithKey, to: 'TokenAccount', amount: u64, signer: List[Any] = None): - """ - Transfer funds from this SPL token account to another. - - @param authority: The account that owns this TokenAccount. Must be an instruction signer or the account given by the `signer` param. - @param to: The recipient TokenAccount. - @param amount: How much (in *native* token units) to transfer. - @param signer: (Optional) seeds for the signature of a PDA. - """ - -class TokenMint(AccountWithKey): - """SPL token mint.""" - - def authority(self) -> Pubkey: - """Get the owner of this token mint.""" - - def freeze_authority(self) -> Pubkey: - """Get the freeze authority of this token mint.""" - - def decimals(self) -> u8: - """Get the number of decimals for this token.""" - - def supply(self) -> u64: - """Get the amount of this token that exists.""" - - def mint(self, authority: AccountWithKey, to: TokenAccount, amount: u64, signer: List[Any] = None): - """ - Mint new tokens to a token account. - - @param authority: The account that owns this TokenMint. Must be an instruction signer or the account given by the `signer` param. - @param to: The recipient TokenAccount. - @param amount: How much (in *native* token units) to mint. - @param signer: (Optional) seeds for the signature of a PDA. - """ - - def burn(self, authority: AccountWithKey, holder: TokenAccount, amount: u64, signer: List[Any] = None): - """ - Burn tokens from a token account. - - @param authority: The account that owns the `holder` TokenAccount. Must be an instruction signer or the account given by the `signer` param. - @param holder: The TokenAccount to burn from. - @param amount: How much (in *native* token units) to burn. - @param signer: (Optional) seeds for the signature of a PDA. - """ - - -# ================ -# Helper functions -# ================ - -def declare_id(id: str): - """Inform Anchor what this program's ID is. - - @param id: The program's ID, generated by Anchor in /target/idl/.json. This must be copied-pasted straight from there as a string literal. - """ - -def instruction(function: Callable[..., None]) -> Callable[..., None]: - """Decorator to turn a function into a program instruction.""" - -def dataclass(function: Callable[..., None]) -> Callable[..., None]: - """Decorator to create an automatic default class constructor.""" - -def int_bytes(n: Any, be: bool = False) -> List[u8]: - """ - Convenience method to turn an integer type into a little-endian (by default) list of bytes. - - @param n: The integer you wish to convert to bytes. - @param be: Whether you want the conversion to be big-endian - defaults to false. - """ - -def size(ob: str) -> u64: - """ - Get the size of an object in bytes. - Currently this is only supported for strings. - - @param ob: The object to get the size of. - """ diff --git a/oracles/pyth/seahorse/programs_py/seahorse/pyth.py b/oracles/pyth/seahorse/programs_py/seahorse/pyth.py deleted file mode 100644 index efce5de1c..000000000 --- a/oracles/pyth/seahorse/programs_py/seahorse/pyth.py +++ /dev/null @@ -1,56 +0,0 @@ -# seahorse.pyth: support for the Pyth oracle in Seahorse. -# -# NOTE: this file just contains types and documentation for your editor. This -# is NOT executable code, and you won't be able to change the behavior of your -# Seahorse programs by editing this file. - -from typing import * -from prelude import * - -T = TypeVar('T') - - -class Price: - """ - Pyth `Price` struct with some extra convenience functions. You can access the raw data of the struct through its fields. - - "A price with a degree of uncertainty, represented as a price +- a confidence interval." (from https://docs.rs/pyth-sdk-solana/0.7.1/pyth_sdk_solana/struct.Price.html) - """ - - price: i64 - conf: u64 - expo: i32 - publish_time: i64 - - def num(self) -> f64: - """Simply get price as a floating-point number. Does not take confidence into account, instead reporting the average estimated price.""" - - -class PriceFeed: - """ - Pyth `PriceFeed` struct with some extra convience functions. - - "Represents a current aggregation price from pyth publisher feeds." (from https://docs.rs/pyth-sdk-solana/0.7.1/pyth_sdk_solana/struct.PriceFeed.html) - """ - - def get_price(self) -> Price: - """Get the price. Throws an error if the product is not currently trading.""" - pass - - -class PriceAccount(AccountWithKey): - """Raw Pyth price account. Needs to be validated before use.""" - - def validate_price_feed(self, product: str) -> PriceFeed: - """ - Validate the price account - checks the pubkey against the known Pyth price pubkey list. - - Without checking the account key against a known Pyth key, you can not guarantee that the account actually comes from Pyth. Therefore, this step is mandatory, otherwise your program would be at risk of an easy exploit. - - The `product` parameter must be a string literal with the following format: `[cluster-]BASE/QUOTE`. The cluster is optional, and defaults to mainnet. - - For example, mainnet SOL/USD is just 'SOL/USD'. Devnet USD/JPY is 'devnet-USD/JPY'. - - @param product: The symbol of the product whose price you want. Must be a string literal in the format discussed above. - """ - pass diff --git a/oracles/pyth/seahorse/tests/seahorse.ts b/oracles/pyth/seahorse/tests/seahorse.ts deleted file mode 100644 index ebb71e7fe..000000000 --- a/oracles/pyth/seahorse/tests/seahorse.ts +++ /dev/null @@ -1,23 +0,0 @@ -import * as anchor from '@coral-xyz/anchor'; -import type { Program } from '@coral-xyz/anchor'; -import type { Seahorse } from '../target/types/seahorse'; - -describe('seahorse', () => { - // Configure the client to use the local cluster. - anchor.setProvider(anchor.AnchorProvider.env()); - - const program = anchor.workspace.Seahorse as Program; - - const PYTH_PRICE_ACCOUNT = new anchor.web3.PublicKey('H6ARHf6YXhGYeQfUzQNGk6rDNnLBQKrenN712K4AQJEG'); - - it('Is initialized!', async () => { - // Add your test here. - const tx = await program.methods - .getPythPrice() - .accounts({ - pythPriceAccount: PYTH_PRICE_ACCOUNT, - }) - .rpc(); - console.log('Your transaction signature', tx); - }); -}); diff --git a/oracles/pyth/seahorse/tsconfig.json b/oracles/pyth/seahorse/tsconfig.json deleted file mode 100644 index cd5d2e3d0..000000000 --- a/oracles/pyth/seahorse/tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "compilerOptions": { - "types": ["mocha", "chai"], - "typeRoots": ["./node_modules/@types"], - "lib": ["es2015"], - "module": "commonjs", - "target": "es6", - "esModuleInterop": true - } -} diff --git a/tokens/create-token/steel/Cargo.toml b/tokens/create-token/steel/Cargo.toml deleted file mode 100644 index 7c33548c6..000000000 --- a/tokens/create-token/steel/Cargo.toml +++ /dev/null @@ -1,24 +0,0 @@ -[workspace] -resolver = "2" -members = ["api", "program"] - -[workspace.package] -version = "0.1.0" -edition = "2021" -license = "Apache-2.0" -homepage = "" -documentation = "" -repository = "" -readme = "./README.md" -keywords = ["solana"] - -[workspace.dependencies] -steel-api = { path = "./api", version = "0.1.0" } -bytemuck = "1.14" -num_enum = "0.7" -solana-program = "2.1" -steel = "3.0" -thiserror = "1.0" -mpl-token-metadata = { version = "5.1.0", features = ["no-entrypoint"] } -spl-token = { version = "7.0.0", features = ["no-entrypoint"] } - diff --git a/tokens/create-token/steel/README.md b/tokens/create-token/steel/README.md deleted file mode 100644 index 921043238..000000000 --- a/tokens/create-token/steel/README.md +++ /dev/null @@ -1,32 +0,0 @@ -# Steel - -**Steel** is a ... - -## API - -- [`Consts`](api/src/consts.rs) – Program constants. -- [`Error`](api/src/error.rs) – Custom program errors. -- [`Event`](api/src/event.rs) – Custom program events. -- [`Instruction`](api/src/instruction.rs) – Declared instructions. - -## Instructions - -- [`Create-Token`](program/src/create_token.rs) – Create Token ... - -## State - -- [`Token`](api/src/state/token.rs) – Token ... - -## Get started - -Compile your program: - -```sh -steel build -``` - -Run unit and integration tests: - -```sh -steel test -``` diff --git a/tokens/create-token/steel/api/Cargo.toml b/tokens/create-token/steel/api/Cargo.toml deleted file mode 100644 index 11e99b96c..000000000 --- a/tokens/create-token/steel/api/Cargo.toml +++ /dev/null @@ -1,20 +0,0 @@ -[package] -name = "steel-api" -description = "API for interacting with the Steel program" -version.workspace = true -edition.workspace = true -license.workspace = true -homepage.workspace = true -documentation.workspace = true -repository.workspace = true -readme.workspace = true -keywords.workspace = true - -[dependencies] -bytemuck.workspace = true -mpl-token-metadata = "5.1.0" -num_enum.workspace = true -solana-program.workspace = true -spl-token.workspace = true -steel.workspace = true -thiserror.workspace = true diff --git a/tokens/create-token/steel/api/src/consts.rs b/tokens/create-token/steel/api/src/consts.rs deleted file mode 100644 index 453b624f8..000000000 --- a/tokens/create-token/steel/api/src/consts.rs +++ /dev/null @@ -1,2 +0,0 @@ -/// Seed of the token metadata account PDA. -pub const METADATA: &[u8] = b"metadata"; diff --git a/tokens/create-token/steel/api/src/error.rs b/tokens/create-token/steel/api/src/error.rs deleted file mode 100644 index 96e84da4d..000000000 --- a/tokens/create-token/steel/api/src/error.rs +++ /dev/null @@ -1,10 +0,0 @@ -use steel::*; - -#[derive(Debug, Error, Clone, Copy, PartialEq, Eq, IntoPrimitive)] -#[repr(u32)] -pub enum SteelError { - #[error("This is a dummy error")] - Dummy = 0, -} - -error!(SteelError); diff --git a/tokens/create-token/steel/api/src/instruction.rs b/tokens/create-token/steel/api/src/instruction.rs deleted file mode 100644 index 168bbe8db..000000000 --- a/tokens/create-token/steel/api/src/instruction.rs +++ /dev/null @@ -1,18 +0,0 @@ -use steel::*; - -#[repr(u8)] -#[derive(Clone, Copy, Debug, Eq, PartialEq, TryFromPrimitive)] -pub enum TokenInstruction { - CreateToken = 0, -} - -#[repr(C)] -#[derive(Clone, Copy, Debug, Pod, Zeroable)] -pub struct CreateToken { - pub name: [u8; 32], - pub symbol: [u8; 8], - pub uri: [u8; 128], - pub decimals: u8, -} - -instruction!(TokenInstruction, CreateToken); diff --git a/tokens/create-token/steel/api/src/lib.rs b/tokens/create-token/steel/api/src/lib.rs deleted file mode 100644 index 25c5c8be6..000000000 --- a/tokens/create-token/steel/api/src/lib.rs +++ /dev/null @@ -1,16 +0,0 @@ -pub mod consts; -pub mod error; -pub mod instruction; -pub mod sdk; - -pub mod prelude { - pub use crate::consts::*; - pub use crate::error::*; - pub use crate::instruction::*; - pub use crate::sdk::*; -} - -use steel::*; - -// TODO Set program id -declare_id!("z7msBPQHDJjTvdQRoEcKyENgXDhSRYeHieN1ZMTqo35"); diff --git a/tokens/create-token/steel/api/src/sdk.rs b/tokens/create-token/steel/api/src/sdk.rs deleted file mode 100644 index 729701196..000000000 --- a/tokens/create-token/steel/api/src/sdk.rs +++ /dev/null @@ -1,39 +0,0 @@ -use crate::prelude::*; -use steel::*; - -pub fn create_token( - signer: Pubkey, - mint: Pubkey, - name: [u8; 32], - symbol: [u8; 8], - uri: [u8; 128], - decimals: u8, -) -> Instruction { - Instruction { - program_id: crate::ID, - accounts: vec![ - AccountMeta::new(signer, true), - AccountMeta::new(mint, true), - AccountMeta::new(metadata_pda(mint).0, false), - AccountMeta::new_readonly(system_program::ID, false), - AccountMeta::new_readonly(spl_token::ID, false), - AccountMeta::new_readonly(mpl_token_metadata::ID, false), - AccountMeta::new_readonly(sysvar::rent::ID, false), - ], - data: CreateToken { - name, - symbol, - uri, - decimals, - } - .to_bytes(), - } -} - -// Fetch PDA of a metadata account. -pub fn metadata_pda(mint: Pubkey) -> (Pubkey, u8) { - Pubkey::find_program_address( - &[METADATA, mpl_token_metadata::ID.as_ref(), mint.as_ref()], - &mpl_token_metadata::ID, - ) -} diff --git a/tokens/create-token/steel/cicd.sh b/tokens/create-token/steel/cicd.sh deleted file mode 100644 index 3d91ab427..000000000 --- a/tokens/create-token/steel/cicd.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash - -# This script is for quick building & deploying of the program. -# It also serves as a reference for the commands used for building & deploying Solana programs. -# Run this bad boy with "bash cicd.sh" or "./cicd.sh" - -cargo build-sbf --manifest-path=./program/Cargo.toml -solana program deploy ./program/target/deploy/program.so \ No newline at end of file diff --git a/tokens/create-token/steel/package.json b/tokens/create-token/steel/package.json deleted file mode 100644 index 0646336b5..000000000 --- a/tokens/create-token/steel/package.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "scripts": { - "test": "pnpm ts-mocha -p ./tsconfig.json -t 1000000 ./tests/bankrun.test.ts", - "build-and-test": "cargo build-sbf --manifest-path=./program/Cargo.toml --sbf-out-dir=./tests/fixtures && pnpm test", - "build": "cargo build-sbf --manifest-path=./program/Cargo.toml --sbf-out-dir=./program/target/so", - "deploy": "solana program deploy ./program/target/so/create_token_program.so", - "postinstall": "zx prepare.mjs" - }, - "dependencies": { - "@metaplex-foundation/mpl-token-metadata": "^2.5.2", - "@solana/spl-token": "^0.3.7", - "@solana/web3.js": "^1.73.0", - "borsh": "^0.7.0", - "buffer": "^6.0.3", - "fs": "^0.0.1-security" - }, - "devDependencies": { - "@types/bn.js": "^5.1.0", - "@types/chai": "^4.3.1", - "@types/mocha": "^9.1.1", - "chai": "^4.3.4", - "mocha": "^9.0.3", - "ts-mocha": "^10.0.0", - "typescript": "^4.3.5", - "solana-bankrun": "^0.4.0", - "zx": "^8.1.4" - } -} diff --git a/tokens/create-token/steel/pnpm-lock.yaml b/tokens/create-token/steel/pnpm-lock.yaml deleted file mode 100644 index 23a80d868..000000000 --- a/tokens/create-token/steel/pnpm-lock.yaml +++ /dev/null @@ -1,1915 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -importers: - - .: - dependencies: - '@metaplex-foundation/mpl-token-metadata': - specifier: ^2.5.2 - version: 2.13.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)(utf-8-validate@5.0.10) - '@solana/spl-token': - specifier: ^0.3.7 - version: 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)(utf-8-validate@5.0.10) - '@solana/web3.js': - specifier: ^1.73.0 - version: 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - borsh: - specifier: ^0.7.0 - version: 0.7.0 - buffer: - specifier: ^6.0.3 - version: 6.0.3 - fs: - specifier: ^0.0.1-security - version: 0.0.1-security - devDependencies: - '@types/bn.js': - specifier: ^5.1.0 - version: 5.1.6 - '@types/chai': - specifier: ^4.3.1 - version: 4.3.20 - '@types/mocha': - specifier: ^9.1.1 - version: 9.1.1 - chai: - specifier: ^4.3.4 - version: 4.5.0 - mocha: - specifier: ^9.0.3 - version: 9.2.2 - solana-bankrun: - specifier: ^0.4.0 - version: 0.4.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - ts-mocha: - specifier: ^10.0.0 - version: 10.1.0(mocha@9.2.2) - typescript: - specifier: ^4.3.5 - version: 4.9.5 - zx: - specifier: ^8.1.4 - version: 8.4.1 - -packages: - - '@babel/runtime@7.27.0': - resolution: {integrity: sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==} - engines: {node: '>=6.9.0'} - - '@metaplex-foundation/beet-solana@0.4.1': - resolution: {integrity: sha512-/6o32FNUtwK8tjhotrvU/vorP7umBuRFvBZrC6XCk51aKidBHe5LPVPA5AjGPbV3oftMfRuXPNd9yAGeEqeCDQ==} - - '@metaplex-foundation/beet@0.7.2': - resolution: {integrity: sha512-K+g3WhyFxKPc0xIvcIjNyV1eaTVJTiuaHZpig7Xx0MuYRMoJLLvhLTnUXhFdR5Tu2l2QSyKwfyXDgZlzhULqFg==} - - '@metaplex-foundation/cusper@0.0.2': - resolution: {integrity: sha512-S9RulC2fFCFOQraz61bij+5YCHhSO9llJegK8c8Y6731fSi6snUSQJdCUqYS8AIgR0TKbQvdvgSyIIdbDFZbBA==} - - '@metaplex-foundation/mpl-token-metadata@2.13.0': - resolution: {integrity: sha512-Fl/8I0L9rv4bKTV/RAl5YIbJe9SnQPInKvLz+xR1fEc4/VQkuCn3RPgypfUMEKWmCznzaw4sApDxy6CFS4qmJw==} - - '@noble/curves@1.8.1': - resolution: {integrity: sha512-warwspo+UYUPep0Q+vtdVB4Ugn8GGQj8iyB3gnRWsztmUHTI3S1nhdiWNsPUGL0vud7JlRRk1XEu7Lq1KGTnMQ==} - engines: {node: ^14.21.3 || >=16} - - '@noble/hashes@1.7.1': - resolution: {integrity: sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==} - engines: {node: ^14.21.3 || >=16} - - '@solana/buffer-layout-utils@0.2.0': - resolution: {integrity: sha512-szG4sxgJGktbuZYDg2FfNmkMi0DYQoVjN2h7ta1W1hPrwzarcFLBq9UpX1UjNXsNpT9dn+chgprtWGioUAr4/g==} - engines: {node: '>= 10'} - - '@solana/buffer-layout@4.0.1': - resolution: {integrity: sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==} - engines: {node: '>=5.10'} - - '@solana/codecs-core@2.0.0-rc.1': - resolution: {integrity: sha512-bauxqMfSs8EHD0JKESaNmNuNvkvHSuN3bbWAF5RjOfDu2PugxHrvRebmYauvSumZ3cTfQ4HJJX6PG5rN852qyQ==} - peerDependencies: - typescript: '>=5' - - '@solana/codecs-data-structures@2.0.0-rc.1': - resolution: {integrity: sha512-rinCv0RrAVJ9rE/rmaibWJQxMwC5lSaORSZuwjopSUE6T0nb/MVg6Z1siNCXhh/HFTOg0l8bNvZHgBcN/yvXog==} - peerDependencies: - typescript: '>=5' - - '@solana/codecs-numbers@2.0.0-rc.1': - resolution: {integrity: sha512-J5i5mOkvukXn8E3Z7sGIPxsThRCgSdgTWJDQeZvucQ9PT6Y3HiVXJ0pcWiOWAoQ3RX8e/f4I3IC+wE6pZiJzDQ==} - peerDependencies: - typescript: '>=5' - - '@solana/codecs-strings@2.0.0-rc.1': - resolution: {integrity: sha512-9/wPhw8TbGRTt6mHC4Zz1RqOnuPTqq1Nb4EyuvpZ39GW6O2t2Q7Q0XxiB3+BdoEjwA2XgPw6e2iRfvYgqty44g==} - peerDependencies: - fastestsmallesttextencoderdecoder: ^1.0.22 - typescript: '>=5' - - '@solana/codecs@2.0.0-rc.1': - resolution: {integrity: sha512-qxoR7VybNJixV51L0G1RD2boZTcxmwUWnKCaJJExQ5qNKwbpSyDdWfFJfM5JhGyKe9DnPVOZB+JHWXnpbZBqrQ==} - peerDependencies: - typescript: '>=5' - - '@solana/errors@2.0.0-rc.1': - resolution: {integrity: sha512-ejNvQ2oJ7+bcFAYWj225lyRkHnixuAeb7RQCixm+5mH4n1IA4Qya/9Bmfy5RAAHQzxK43clu3kZmL5eF9VGtYQ==} - hasBin: true - peerDependencies: - typescript: '>=5' - - '@solana/options@2.0.0-rc.1': - resolution: {integrity: sha512-mLUcR9mZ3qfHlmMnREdIFPf9dpMc/Bl66tLSOOWxw4ml5xMT2ohFn7WGqoKcu/UHkT9CrC6+amEdqCNvUqI7AA==} - peerDependencies: - typescript: '>=5' - - '@solana/spl-token-metadata@0.1.6': - resolution: {integrity: sha512-7sMt1rsm/zQOQcUWllQX9mD2O6KhSAtY1hFR2hfFwgqfFWzSY9E9GDvFVNYUI1F0iQKcm6HmePU9QbKRXTEBiA==} - engines: {node: '>=16'} - peerDependencies: - '@solana/web3.js': ^1.95.3 - - '@solana/spl-token@0.3.11': - resolution: {integrity: sha512-bvohO3rIMSVL24Pb+I4EYTJ6cL82eFpInEXD/I8K8upOGjpqHsKUoAempR/RnUlI1qSFNyFlWJfu6MNUgfbCQQ==} - engines: {node: '>=16'} - peerDependencies: - '@solana/web3.js': ^1.88.0 - - '@solana/web3.js@1.98.0': - resolution: {integrity: sha512-nz3Q5OeyGFpFCR+erX2f6JPt3sKhzhYcSycBCSPkWjzSVDh/Rr1FqTVMRe58FKO16/ivTUcuJjeS5MyBvpkbzA==} - - '@swc/helpers@0.5.15': - resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} - - '@types/bn.js@5.1.6': - resolution: {integrity: sha512-Xh8vSwUeMKeYYrj3cX4lGQgFSF/N03r+tv4AiLl1SucqV+uTQpxRcnM8AkXKHwYP9ZPXOYXRr2KPXpVlIvqh9w==} - - '@types/chai@4.3.20': - resolution: {integrity: sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==} - - '@types/connect@3.4.38': - resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} - - '@types/json5@0.0.29': - resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - - '@types/mocha@9.1.1': - resolution: {integrity: sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==} - - '@types/node@12.20.55': - resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - - '@types/node@22.13.13': - resolution: {integrity: sha512-ClsL5nMwKaBRwPcCvH8E7+nU4GxHVx1axNvMZTFHMEfNI7oahimt26P5zjVCRrjiIWj6YFXfE1v3dEp94wLcGQ==} - - '@types/uuid@8.3.4': - resolution: {integrity: sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==} - - '@types/ws@7.4.7': - resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==} - - '@types/ws@8.18.0': - resolution: {integrity: sha512-8svvI3hMyvN0kKCJMvTJP/x6Y/EoQbepff882wL+Sn5QsXb3etnamgrJq4isrBxSJj5L2AuXcI0+bgkoAXGUJw==} - - '@ungap/promise-all-settled@1.1.2': - resolution: {integrity: sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==} - - JSONStream@1.3.5: - resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} - hasBin: true - - agentkeepalive@4.6.0: - resolution: {integrity: sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==} - engines: {node: '>= 8.0.0'} - - ansi-colors@4.1.1: - resolution: {integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==} - engines: {node: '>=6'} - - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - - ansicolors@0.3.2: - resolution: {integrity: sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==} - - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - - argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - - arrify@1.0.1: - resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} - engines: {node: '>=0.10.0'} - - assert@2.1.0: - resolution: {integrity: sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==} - - assertion-error@1.1.0: - resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} - - available-typed-arrays@1.0.7: - resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} - engines: {node: '>= 0.4'} - - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - base-x@3.0.11: - resolution: {integrity: sha512-xz7wQ8xDhdyP7tQxwdteLYeFfS68tSMNCZ/Y37WJ4bhGfKPpqEIlmIyueQHqOyoPhE6xNUqjzRr8ra0eF9VRvA==} - - base-x@4.0.1: - resolution: {integrity: sha512-uAZ8x6r6S3aUM9rbHGVOIsR15U/ZSc82b3ymnCPsT45Gk1DDvhDPdIgB5MrhirZWt+5K0EEPQH985kNqZgNPFw==} - - base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - - bigint-buffer@1.1.5: - resolution: {integrity: sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA==} - engines: {node: '>= 10.0.0'} - - bignumber.js@9.1.2: - resolution: {integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==} - - binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} - - bindings@1.5.0: - resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} - - bn.js@5.2.1: - resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} - - borsh@0.7.0: - resolution: {integrity: sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==} - - brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - - braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} - - browser-stdout@1.3.1: - resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} - - bs58@4.0.1: - resolution: {integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==} - - bs58@5.0.0: - resolution: {integrity: sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==} - - buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - - buffer@6.0.3: - resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} - - bufferutil@4.0.9: - resolution: {integrity: sha512-WDtdLmJvAuNNPzByAYpRo2rF1Mmradw6gvWsQKf63476DDXmomT9zUiGypLcG4ibIM67vhAj8jJRdbmEws2Aqw==} - engines: {node: '>=6.14.2'} - - call-bind-apply-helpers@1.0.2: - resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} - engines: {node: '>= 0.4'} - - call-bind@1.0.8: - resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} - engines: {node: '>= 0.4'} - - call-bound@1.0.4: - resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} - engines: {node: '>= 0.4'} - - camelcase@6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} - - chai@4.5.0: - resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==} - engines: {node: '>=4'} - - chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - - chalk@5.4.1: - resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - - check-error@1.0.3: - resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} - - chokidar@3.5.3: - resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} - engines: {node: '>= 8.10.0'} - - cliui@7.0.4: - resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} - - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - commander@12.1.0: - resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} - engines: {node: '>=18'} - - commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - - concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - - debug@4.3.3: - resolution: {integrity: sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - debug@4.4.0: - resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - decamelize@4.0.0: - resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} - engines: {node: '>=10'} - - deep-eql@4.1.4: - resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==} - engines: {node: '>=6'} - - define-data-property@1.1.4: - resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} - engines: {node: '>= 0.4'} - - define-properties@1.2.1: - resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} - engines: {node: '>= 0.4'} - - delay@5.0.0: - resolution: {integrity: sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==} - engines: {node: '>=10'} - - diff@3.5.0: - resolution: {integrity: sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==} - engines: {node: '>=0.3.1'} - - diff@5.0.0: - resolution: {integrity: sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==} - engines: {node: '>=0.3.1'} - - dunder-proto@1.0.1: - resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} - engines: {node: '>= 0.4'} - - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - - es-define-property@1.0.1: - resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} - engines: {node: '>= 0.4'} - - es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} - - es-object-atoms@1.1.1: - resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} - engines: {node: '>= 0.4'} - - es6-promise@4.2.8: - resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} - - es6-promisify@5.0.0: - resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==} - - escalade@3.2.0: - resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} - engines: {node: '>=6'} - - escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - - eventemitter3@5.0.1: - resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} - - eyes@0.1.8: - resolution: {integrity: sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==} - engines: {node: '> 0.1.90'} - - fast-stable-stringify@1.0.0: - resolution: {integrity: sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==} - - fastestsmallesttextencoderdecoder@1.0.22: - resolution: {integrity: sha512-Pb8d48e+oIuY4MaM64Cd7OW1gt4nxCHs7/ddPPZ/Ic3sg8yVGM7O9wDvZ7us6ScaUupzM+pfBolwtYhN1IxBIw==} - - file-uri-to-path@1.0.0: - resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} - - fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} - - find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - - flat@5.0.2: - resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} - hasBin: true - - for-each@0.3.5: - resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} - engines: {node: '>= 0.4'} - - fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - - fs@0.0.1-security: - resolution: {integrity: sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w==} - - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - - get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - - get-func-name@2.0.2: - resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} - - get-intrinsic@1.3.0: - resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} - engines: {node: '>= 0.4'} - - get-proto@1.0.1: - resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} - engines: {node: '>= 0.4'} - - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - - glob@7.2.0: - resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==} - deprecated: Glob versions prior to v9 are no longer supported - - gopd@1.2.0: - resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} - engines: {node: '>= 0.4'} - - growl@1.10.5: - resolution: {integrity: sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==} - engines: {node: '>=4.x'} - - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - - has-property-descriptors@1.0.2: - resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} - - has-symbols@1.1.0: - resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} - engines: {node: '>= 0.4'} - - has-tostringtag@1.0.2: - resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} - engines: {node: '>= 0.4'} - - hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} - - he@1.2.0: - resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} - hasBin: true - - humanize-ms@1.2.1: - resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} - - ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - - inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. - - inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - - is-arguments@1.2.0: - resolution: {integrity: sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==} - engines: {node: '>= 0.4'} - - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - - is-callable@1.2.7: - resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} - engines: {node: '>= 0.4'} - - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - - is-generator-function@1.1.0: - resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} - engines: {node: '>= 0.4'} - - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - - is-nan@1.3.2: - resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==} - engines: {node: '>= 0.4'} - - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - - is-plain-obj@2.1.0: - resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} - engines: {node: '>=8'} - - is-regex@1.2.1: - resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} - engines: {node: '>= 0.4'} - - is-typed-array@1.1.15: - resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} - engines: {node: '>= 0.4'} - - is-unicode-supported@0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} - engines: {node: '>=10'} - - isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - - isomorphic-ws@4.0.1: - resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==} - peerDependencies: - ws: '*' - - jayson@4.1.3: - resolution: {integrity: sha512-LtXh5aYZodBZ9Fc3j6f2w+MTNcnxteMOrb+QgIouguGOulWi0lieEkOUg+HkjjFs0DGoWDds6bi4E9hpNFLulQ==} - engines: {node: '>=8'} - hasBin: true - - js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true - - json-stringify-safe@5.0.1: - resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} - - json5@1.0.2: - resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} - hasBin: true - - jsonparse@1.3.1: - resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} - engines: {'0': node >= 0.2.0} - - locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - - log-symbols@4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} - engines: {node: '>=10'} - - loupe@2.3.7: - resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} - - make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - - math-intrinsics@1.1.0: - resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} - engines: {node: '>= 0.4'} - - minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - - minimatch@4.2.1: - resolution: {integrity: sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==} - engines: {node: '>=10'} - - minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - - mkdirp@0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} - hasBin: true - - mocha@9.2.2: - resolution: {integrity: sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==} - engines: {node: '>= 12.0.0'} - hasBin: true - - ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - - ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - - nanoid@3.3.1: - resolution: {integrity: sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - - node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - - node-gyp-build@4.8.4: - resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==} - hasBin: true - - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - - object-is@1.1.6: - resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} - engines: {node: '>= 0.4'} - - object-keys@1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} - engines: {node: '>= 0.4'} - - object.assign@4.1.7: - resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} - engines: {node: '>= 0.4'} - - once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - - p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - - p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - - path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - - path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - - pathval@1.1.1: - resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} - - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - - possible-typed-array-names@1.1.0: - resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} - engines: {node: '>= 0.4'} - - randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - - regenerator-runtime@0.14.1: - resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - - require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - - rpc-websockets@9.1.1: - resolution: {integrity: sha512-1IXGM/TfPT6nfYMIXkJdzn+L4JEsmb0FL1O2OBjaH03V3yuUDdKFulGLMFG6ErV+8pZ5HVC0limve01RyO+saA==} - - safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - - safe-regex-test@1.1.0: - resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} - engines: {node: '>= 0.4'} - - serialize-javascript@6.0.0: - resolution: {integrity: sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==} - - set-function-length@1.2.2: - resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} - engines: {node: '>= 0.4'} - - solana-bankrun-darwin-arm64@0.4.0: - resolution: {integrity: sha512-6dz78Teoz7ez/3lpRLDjktYLJb79FcmJk2me4/YaB8WiO6W43OdExU4h+d2FyuAryO2DgBPXaBoBNY/8J1HJmw==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - - solana-bankrun-darwin-universal@0.4.0: - resolution: {integrity: sha512-zSSw/Jx3KNU42pPMmrEWABd0nOwGJfsj7nm9chVZ3ae7WQg3Uty0hHAkn5NSDCj3OOiN0py9Dr1l9vmRJpOOxg==} - engines: {node: '>= 10'} - os: [darwin] - - solana-bankrun-darwin-x64@0.4.0: - resolution: {integrity: sha512-LWjs5fsgHFtyr7YdJR6r0Ho5zrtzI6CY4wvwPXr8H2m3b4pZe6RLIZjQtabCav4cguc14G0K8yQB2PTMuGub8w==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - - solana-bankrun-linux-x64-gnu@0.4.0: - resolution: {integrity: sha512-SrlVrb82UIxt21Zr/XZFHVV/h9zd2/nP25PMpLJVLD7Pgl2yhkhfi82xj3OjxoQqWe+zkBJ+uszA0EEKr67yNw==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - solana-bankrun-linux-x64-musl@0.4.0: - resolution: {integrity: sha512-Nv328ZanmURdYfcLL+jwB1oMzX4ZzK57NwIcuJjGlf0XSNLq96EoaO5buEiUTo4Ls7MqqMyLbClHcrPE7/aKyA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - solana-bankrun@0.4.0: - resolution: {integrity: sha512-NMmXUipPBkt8NgnyNO3SCnPERP6xT/AMNMBooljGA3+rG6NN8lmXJsKeLqQTiFsDeWD74U++QM/DgcueSWvrIg==} - engines: {node: '>= 10'} - - source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - - source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - - strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - - strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - - superstruct@2.0.2: - resolution: {integrity: sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A==} - engines: {node: '>=14.0.0'} - - supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - - supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} - - text-encoding-utf-8@1.0.2: - resolution: {integrity: sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==} - - through@2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - - tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - - ts-mocha@10.1.0: - resolution: {integrity: sha512-T0C0Xm3/WqCuF2tpa0GNGESTBoKZaiqdUP8guNv4ZY316AFXlyidnrzQ1LUrCT0Wb1i3J0zFTgOh/55Un44WdA==} - engines: {node: '>= 6.X.X'} - hasBin: true - peerDependencies: - mocha: ^3.X.X || ^4.X.X || ^5.X.X || ^6.X.X || ^7.X.X || ^8.X.X || ^9.X.X || ^10.X.X || ^11.X.X - - ts-node@7.0.1: - resolution: {integrity: sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==} - engines: {node: '>=4.2.0'} - hasBin: true - - tsconfig-paths@3.15.0: - resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} - - tslib@2.8.1: - resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - - type-detect@4.1.0: - resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==} - engines: {node: '>=4'} - - typescript@4.9.5: - resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} - engines: {node: '>=4.2.0'} - hasBin: true - - undici-types@6.20.0: - resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} - - utf-8-validate@5.0.10: - resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==} - engines: {node: '>=6.14.2'} - - util@0.12.5: - resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} - - uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - hasBin: true - - webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - - whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - - which-typed-array@1.1.19: - resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==} - engines: {node: '>= 0.4'} - - which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - - workerpool@6.2.0: - resolution: {integrity: sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==} - - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - - wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - - ws@7.5.10: - resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} - engines: {node: '>=8.3.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - ws@8.18.1: - resolution: {integrity: sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - - yargs-parser@20.2.4: - resolution: {integrity: sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==} - engines: {node: '>=10'} - - yargs-unparser@2.0.0: - resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} - engines: {node: '>=10'} - - yargs@16.2.0: - resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} - engines: {node: '>=10'} - - yn@2.0.0: - resolution: {integrity: sha512-uTv8J/wiWTgUTg+9vLTi//leUl5vDQS6uii/emeTb2ssY7vl6QWf2fFbIIGjnhjvbdKlU0ed7QPgY1htTC86jQ==} - engines: {node: '>=4'} - - yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - - zx@8.4.1: - resolution: {integrity: sha512-1Cb+Tfwt/daKV6wckBeDbB6h3IMauqj9KWp+EcbYzi9doeJeIHCktxp/yWspXOXRdoUzBCQSKoUgm3g8r9fz5A==} - engines: {node: '>= 12.17.0'} - hasBin: true - -snapshots: - - '@babel/runtime@7.27.0': - dependencies: - regenerator-runtime: 0.14.1 - - '@metaplex-foundation/beet-solana@0.4.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)': - dependencies: - '@metaplex-foundation/beet': 0.7.2 - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - bs58: 5.0.0 - debug: 4.4.0 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - - '@metaplex-foundation/beet@0.7.2': - dependencies: - ansicolors: 0.3.2 - assert: 2.1.0 - bn.js: 5.2.1 - debug: 4.4.0 - transitivePeerDependencies: - - supports-color - - '@metaplex-foundation/cusper@0.0.2': {} - - '@metaplex-foundation/mpl-token-metadata@2.13.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)(utf-8-validate@5.0.10)': - dependencies: - '@metaplex-foundation/beet': 0.7.2 - '@metaplex-foundation/beet-solana': 0.4.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@metaplex-foundation/cusper': 0.0.2 - '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - bn.js: 5.2.1 - debug: 4.4.0 - transitivePeerDependencies: - - bufferutil - - encoding - - fastestsmallesttextencoderdecoder - - supports-color - - typescript - - utf-8-validate - - '@noble/curves@1.8.1': - dependencies: - '@noble/hashes': 1.7.1 - - '@noble/hashes@1.7.1': {} - - '@solana/buffer-layout-utils@0.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)': - dependencies: - '@solana/buffer-layout': 4.0.1 - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - bigint-buffer: 1.1.5 - bignumber.js: 9.1.2 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - - '@solana/buffer-layout@4.0.1': - dependencies: - buffer: 6.0.3 - - '@solana/codecs-core@2.0.0-rc.1(typescript@4.9.5)': - dependencies: - '@solana/errors': 2.0.0-rc.1(typescript@4.9.5) - typescript: 4.9.5 - - '@solana/codecs-data-structures@2.0.0-rc.1(typescript@4.9.5)': - dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@4.9.5) - '@solana/codecs-numbers': 2.0.0-rc.1(typescript@4.9.5) - '@solana/errors': 2.0.0-rc.1(typescript@4.9.5) - typescript: 4.9.5 - - '@solana/codecs-numbers@2.0.0-rc.1(typescript@4.9.5)': - dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@4.9.5) - '@solana/errors': 2.0.0-rc.1(typescript@4.9.5) - typescript: 4.9.5 - - '@solana/codecs-strings@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)': - dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@4.9.5) - '@solana/codecs-numbers': 2.0.0-rc.1(typescript@4.9.5) - '@solana/errors': 2.0.0-rc.1(typescript@4.9.5) - fastestsmallesttextencoderdecoder: 1.0.22 - typescript: 4.9.5 - - '@solana/codecs@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)': - dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@4.9.5) - '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@4.9.5) - '@solana/codecs-numbers': 2.0.0-rc.1(typescript@4.9.5) - '@solana/codecs-strings': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5) - '@solana/options': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5) - typescript: 4.9.5 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/errors@2.0.0-rc.1(typescript@4.9.5)': - dependencies: - chalk: 5.4.1 - commander: 12.1.0 - typescript: 4.9.5 - - '@solana/options@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)': - dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@4.9.5) - '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@4.9.5) - '@solana/codecs-numbers': 2.0.0-rc.1(typescript@4.9.5) - '@solana/codecs-strings': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5) - '@solana/errors': 2.0.0-rc.1(typescript@4.9.5) - typescript: 4.9.5 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)': - dependencies: - '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - typescript - - '@solana/spl-token@0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)(utf-8-validate@5.0.10)': - dependencies: - '@solana/buffer-layout': 4.0.1 - '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - buffer: 6.0.3 - transitivePeerDependencies: - - bufferutil - - encoding - - fastestsmallesttextencoderdecoder - - typescript - - utf-8-validate - - '@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)': - dependencies: - '@babel/runtime': 7.27.0 - '@noble/curves': 1.8.1 - '@noble/hashes': 1.7.1 - '@solana/buffer-layout': 4.0.1 - agentkeepalive: 4.6.0 - bigint-buffer: 1.1.5 - bn.js: 5.2.1 - borsh: 0.7.0 - bs58: 4.0.1 - buffer: 6.0.3 - fast-stable-stringify: 1.0.0 - jayson: 4.1.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) - node-fetch: 2.7.0 - rpc-websockets: 9.1.1 - superstruct: 2.0.2 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - - '@swc/helpers@0.5.15': - dependencies: - tslib: 2.8.1 - - '@types/bn.js@5.1.6': - dependencies: - '@types/node': 22.13.13 - - '@types/chai@4.3.20': {} - - '@types/connect@3.4.38': - dependencies: - '@types/node': 12.20.55 - - '@types/json5@0.0.29': - optional: true - - '@types/mocha@9.1.1': {} - - '@types/node@12.20.55': {} - - '@types/node@22.13.13': - dependencies: - undici-types: 6.20.0 - - '@types/uuid@8.3.4': {} - - '@types/ws@7.4.7': - dependencies: - '@types/node': 12.20.55 - - '@types/ws@8.18.0': - dependencies: - '@types/node': 22.13.13 - - '@ungap/promise-all-settled@1.1.2': {} - - JSONStream@1.3.5: - dependencies: - jsonparse: 1.3.1 - through: 2.3.8 - - agentkeepalive@4.6.0: - dependencies: - humanize-ms: 1.2.1 - - ansi-colors@4.1.1: {} - - ansi-regex@5.0.1: {} - - ansi-styles@4.3.0: - dependencies: - color-convert: 2.0.1 - - ansicolors@0.3.2: {} - - anymatch@3.1.3: - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - - argparse@2.0.1: {} - - arrify@1.0.1: {} - - assert@2.1.0: - dependencies: - call-bind: 1.0.8 - is-nan: 1.3.2 - object-is: 1.1.6 - object.assign: 4.1.7 - util: 0.12.5 - - assertion-error@1.1.0: {} - - available-typed-arrays@1.0.7: - dependencies: - possible-typed-array-names: 1.1.0 - - balanced-match@1.0.2: {} - - base-x@3.0.11: - dependencies: - safe-buffer: 5.2.1 - - base-x@4.0.1: {} - - base64-js@1.5.1: {} - - bigint-buffer@1.1.5: - dependencies: - bindings: 1.5.0 - - bignumber.js@9.1.2: {} - - binary-extensions@2.3.0: {} - - bindings@1.5.0: - dependencies: - file-uri-to-path: 1.0.0 - - bn.js@5.2.1: {} - - borsh@0.7.0: - dependencies: - bn.js: 5.2.1 - bs58: 4.0.1 - text-encoding-utf-8: 1.0.2 - - brace-expansion@1.1.11: - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - - braces@3.0.3: - dependencies: - fill-range: 7.1.1 - - browser-stdout@1.3.1: {} - - bs58@4.0.1: - dependencies: - base-x: 3.0.11 - - bs58@5.0.0: - dependencies: - base-x: 4.0.1 - - buffer-from@1.1.2: {} - - buffer@6.0.3: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - - bufferutil@4.0.9: - dependencies: - node-gyp-build: 4.8.4 - optional: true - - call-bind-apply-helpers@1.0.2: - dependencies: - es-errors: 1.3.0 - function-bind: 1.1.2 - - call-bind@1.0.8: - dependencies: - call-bind-apply-helpers: 1.0.2 - es-define-property: 1.0.1 - get-intrinsic: 1.3.0 - set-function-length: 1.2.2 - - call-bound@1.0.4: - dependencies: - call-bind-apply-helpers: 1.0.2 - get-intrinsic: 1.3.0 - - camelcase@6.3.0: {} - - chai@4.5.0: - dependencies: - assertion-error: 1.1.0 - check-error: 1.0.3 - deep-eql: 4.1.4 - get-func-name: 2.0.2 - loupe: 2.3.7 - pathval: 1.1.1 - type-detect: 4.1.0 - - chalk@4.1.2: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - - chalk@5.4.1: {} - - check-error@1.0.3: - dependencies: - get-func-name: 2.0.2 - - chokidar@3.5.3: - dependencies: - anymatch: 3.1.3 - braces: 3.0.3 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - - cliui@7.0.4: - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - - color-convert@2.0.1: - dependencies: - color-name: 1.1.4 - - color-name@1.1.4: {} - - commander@12.1.0: {} - - commander@2.20.3: {} - - concat-map@0.0.1: {} - - debug@4.3.3(supports-color@8.1.1): - dependencies: - ms: 2.1.2 - optionalDependencies: - supports-color: 8.1.1 - - debug@4.4.0: - dependencies: - ms: 2.1.3 - - decamelize@4.0.0: {} - - deep-eql@4.1.4: - dependencies: - type-detect: 4.1.0 - - define-data-property@1.1.4: - dependencies: - es-define-property: 1.0.1 - es-errors: 1.3.0 - gopd: 1.2.0 - - define-properties@1.2.1: - dependencies: - define-data-property: 1.1.4 - has-property-descriptors: 1.0.2 - object-keys: 1.1.1 - - delay@5.0.0: {} - - diff@3.5.0: {} - - diff@5.0.0: {} - - dunder-proto@1.0.1: - dependencies: - call-bind-apply-helpers: 1.0.2 - es-errors: 1.3.0 - gopd: 1.2.0 - - emoji-regex@8.0.0: {} - - es-define-property@1.0.1: {} - - es-errors@1.3.0: {} - - es-object-atoms@1.1.1: - dependencies: - es-errors: 1.3.0 - - es6-promise@4.2.8: {} - - es6-promisify@5.0.0: - dependencies: - es6-promise: 4.2.8 - - escalade@3.2.0: {} - - escape-string-regexp@4.0.0: {} - - eventemitter3@5.0.1: {} - - eyes@0.1.8: {} - - fast-stable-stringify@1.0.0: {} - - fastestsmallesttextencoderdecoder@1.0.22: {} - - file-uri-to-path@1.0.0: {} - - fill-range@7.1.1: - dependencies: - to-regex-range: 5.0.1 - - find-up@5.0.0: - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - - flat@5.0.2: {} - - for-each@0.3.5: - dependencies: - is-callable: 1.2.7 - - fs.realpath@1.0.0: {} - - fs@0.0.1-security: {} - - fsevents@2.3.3: - optional: true - - function-bind@1.1.2: {} - - get-caller-file@2.0.5: {} - - get-func-name@2.0.2: {} - - get-intrinsic@1.3.0: - dependencies: - call-bind-apply-helpers: 1.0.2 - es-define-property: 1.0.1 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - function-bind: 1.1.2 - get-proto: 1.0.1 - gopd: 1.2.0 - has-symbols: 1.1.0 - hasown: 2.0.2 - math-intrinsics: 1.1.0 - - get-proto@1.0.1: - dependencies: - dunder-proto: 1.0.1 - es-object-atoms: 1.1.1 - - glob-parent@5.1.2: - dependencies: - is-glob: 4.0.3 - - glob@7.2.0: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - - gopd@1.2.0: {} - - growl@1.10.5: {} - - has-flag@4.0.0: {} - - has-property-descriptors@1.0.2: - dependencies: - es-define-property: 1.0.1 - - has-symbols@1.1.0: {} - - has-tostringtag@1.0.2: - dependencies: - has-symbols: 1.1.0 - - hasown@2.0.2: - dependencies: - function-bind: 1.1.2 - - he@1.2.0: {} - - humanize-ms@1.2.1: - dependencies: - ms: 2.1.3 - - ieee754@1.2.1: {} - - inflight@1.0.6: - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - - inherits@2.0.4: {} - - is-arguments@1.2.0: - dependencies: - call-bound: 1.0.4 - has-tostringtag: 1.0.2 - - is-binary-path@2.1.0: - dependencies: - binary-extensions: 2.3.0 - - is-callable@1.2.7: {} - - is-extglob@2.1.1: {} - - is-fullwidth-code-point@3.0.0: {} - - is-generator-function@1.1.0: - dependencies: - call-bound: 1.0.4 - get-proto: 1.0.1 - has-tostringtag: 1.0.2 - safe-regex-test: 1.1.0 - - is-glob@4.0.3: - dependencies: - is-extglob: 2.1.1 - - is-nan@1.3.2: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - - is-number@7.0.0: {} - - is-plain-obj@2.1.0: {} - - is-regex@1.2.1: - dependencies: - call-bound: 1.0.4 - gopd: 1.2.0 - has-tostringtag: 1.0.2 - hasown: 2.0.2 - - is-typed-array@1.1.15: - dependencies: - which-typed-array: 1.1.19 - - is-unicode-supported@0.1.0: {} - - isexe@2.0.0: {} - - isomorphic-ws@4.0.1(ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10)): - dependencies: - ws: 7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10) - - jayson@4.1.3(bufferutil@4.0.9)(utf-8-validate@5.0.10): - dependencies: - '@types/connect': 3.4.38 - '@types/node': 12.20.55 - '@types/ws': 7.4.7 - JSONStream: 1.3.5 - commander: 2.20.3 - delay: 5.0.0 - es6-promisify: 5.0.0 - eyes: 0.1.8 - isomorphic-ws: 4.0.1(ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - json-stringify-safe: 5.0.1 - uuid: 8.3.2 - ws: 7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - js-yaml@4.1.0: - dependencies: - argparse: 2.0.1 - - json-stringify-safe@5.0.1: {} - - json5@1.0.2: - dependencies: - minimist: 1.2.8 - optional: true - - jsonparse@1.3.1: {} - - locate-path@6.0.0: - dependencies: - p-locate: 5.0.0 - - log-symbols@4.1.0: - dependencies: - chalk: 4.1.2 - is-unicode-supported: 0.1.0 - - loupe@2.3.7: - dependencies: - get-func-name: 2.0.2 - - make-error@1.3.6: {} - - math-intrinsics@1.1.0: {} - - minimatch@3.1.2: - dependencies: - brace-expansion: 1.1.11 - - minimatch@4.2.1: - dependencies: - brace-expansion: 1.1.11 - - minimist@1.2.8: {} - - mkdirp@0.5.6: - dependencies: - minimist: 1.2.8 - - mocha@9.2.2: - dependencies: - '@ungap/promise-all-settled': 1.1.2 - ansi-colors: 4.1.1 - browser-stdout: 1.3.1 - chokidar: 3.5.3 - debug: 4.3.3(supports-color@8.1.1) - diff: 5.0.0 - escape-string-regexp: 4.0.0 - find-up: 5.0.0 - glob: 7.2.0 - growl: 1.10.5 - he: 1.2.0 - js-yaml: 4.1.0 - log-symbols: 4.1.0 - minimatch: 4.2.1 - ms: 2.1.3 - nanoid: 3.3.1 - serialize-javascript: 6.0.0 - strip-json-comments: 3.1.1 - supports-color: 8.1.1 - which: 2.0.2 - workerpool: 6.2.0 - yargs: 16.2.0 - yargs-parser: 20.2.4 - yargs-unparser: 2.0.0 - - ms@2.1.2: {} - - ms@2.1.3: {} - - nanoid@3.3.1: {} - - node-fetch@2.7.0: - dependencies: - whatwg-url: 5.0.0 - - node-gyp-build@4.8.4: - optional: true - - normalize-path@3.0.0: {} - - object-is@1.1.6: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - - object-keys@1.1.1: {} - - object.assign@4.1.7: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-object-atoms: 1.1.1 - has-symbols: 1.1.0 - object-keys: 1.1.1 - - once@1.4.0: - dependencies: - wrappy: 1.0.2 - - p-limit@3.1.0: - dependencies: - yocto-queue: 0.1.0 - - p-locate@5.0.0: - dependencies: - p-limit: 3.1.0 - - path-exists@4.0.0: {} - - path-is-absolute@1.0.1: {} - - pathval@1.1.1: {} - - picomatch@2.3.1: {} - - possible-typed-array-names@1.1.0: {} - - randombytes@2.1.0: - dependencies: - safe-buffer: 5.2.1 - - readdirp@3.6.0: - dependencies: - picomatch: 2.3.1 - - regenerator-runtime@0.14.1: {} - - require-directory@2.1.1: {} - - rpc-websockets@9.1.1: - dependencies: - '@swc/helpers': 0.5.15 - '@types/uuid': 8.3.4 - '@types/ws': 8.18.0 - buffer: 6.0.3 - eventemitter3: 5.0.1 - uuid: 8.3.2 - ws: 8.18.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) - optionalDependencies: - bufferutil: 4.0.9 - utf-8-validate: 5.0.10 - - safe-buffer@5.2.1: {} - - safe-regex-test@1.1.0: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - is-regex: 1.2.1 - - serialize-javascript@6.0.0: - dependencies: - randombytes: 2.1.0 - - set-function-length@1.2.2: - dependencies: - define-data-property: 1.1.4 - es-errors: 1.3.0 - function-bind: 1.1.2 - get-intrinsic: 1.3.0 - gopd: 1.2.0 - has-property-descriptors: 1.0.2 - - solana-bankrun-darwin-arm64@0.4.0: - optional: true - - solana-bankrun-darwin-universal@0.4.0: - optional: true - - solana-bankrun-darwin-x64@0.4.0: - optional: true - - solana-bankrun-linux-x64-gnu@0.4.0: - optional: true - - solana-bankrun-linux-x64-musl@0.4.0: - optional: true - - solana-bankrun@0.4.0(bufferutil@4.0.9)(utf-8-validate@5.0.10): - dependencies: - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - bs58: 4.0.1 - optionalDependencies: - solana-bankrun-darwin-arm64: 0.4.0 - solana-bankrun-darwin-universal: 0.4.0 - solana-bankrun-darwin-x64: 0.4.0 - solana-bankrun-linux-x64-gnu: 0.4.0 - solana-bankrun-linux-x64-musl: 0.4.0 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - - source-map-support@0.5.21: - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - - source-map@0.6.1: {} - - string-width@4.2.3: - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - - strip-ansi@6.0.1: - dependencies: - ansi-regex: 5.0.1 - - strip-bom@3.0.0: - optional: true - - strip-json-comments@3.1.1: {} - - superstruct@2.0.2: {} - - supports-color@7.2.0: - dependencies: - has-flag: 4.0.0 - - supports-color@8.1.1: - dependencies: - has-flag: 4.0.0 - - text-encoding-utf-8@1.0.2: {} - - through@2.3.8: {} - - to-regex-range@5.0.1: - dependencies: - is-number: 7.0.0 - - tr46@0.0.3: {} - - ts-mocha@10.1.0(mocha@9.2.2): - dependencies: - mocha: 9.2.2 - ts-node: 7.0.1 - optionalDependencies: - tsconfig-paths: 3.15.0 - - ts-node@7.0.1: - dependencies: - arrify: 1.0.1 - buffer-from: 1.1.2 - diff: 3.5.0 - make-error: 1.3.6 - minimist: 1.2.8 - mkdirp: 0.5.6 - source-map-support: 0.5.21 - yn: 2.0.0 - - tsconfig-paths@3.15.0: - dependencies: - '@types/json5': 0.0.29 - json5: 1.0.2 - minimist: 1.2.8 - strip-bom: 3.0.0 - optional: true - - tslib@2.8.1: {} - - type-detect@4.1.0: {} - - typescript@4.9.5: {} - - undici-types@6.20.0: {} - - utf-8-validate@5.0.10: - dependencies: - node-gyp-build: 4.8.4 - optional: true - - util@0.12.5: - dependencies: - inherits: 2.0.4 - is-arguments: 1.2.0 - is-generator-function: 1.1.0 - is-typed-array: 1.1.15 - which-typed-array: 1.1.19 - - uuid@8.3.2: {} - - webidl-conversions@3.0.1: {} - - whatwg-url@5.0.0: - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - - which-typed-array@1.1.19: - dependencies: - available-typed-arrays: 1.0.7 - call-bind: 1.0.8 - call-bound: 1.0.4 - for-each: 0.3.5 - get-proto: 1.0.1 - gopd: 1.2.0 - has-tostringtag: 1.0.2 - - which@2.0.2: - dependencies: - isexe: 2.0.0 - - workerpool@6.2.0: {} - - wrap-ansi@7.0.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - wrappy@1.0.2: {} - - ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10): - optionalDependencies: - bufferutil: 4.0.9 - utf-8-validate: 5.0.10 - - ws@8.18.1(bufferutil@4.0.9)(utf-8-validate@5.0.10): - optionalDependencies: - bufferutil: 4.0.9 - utf-8-validate: 5.0.10 - - y18n@5.0.8: {} - - yargs-parser@20.2.4: {} - - yargs-unparser@2.0.0: - dependencies: - camelcase: 6.3.0 - decamelize: 4.0.0 - flat: 5.0.2 - is-plain-obj: 2.1.0 - - yargs@16.2.0: - dependencies: - cliui: 7.0.4 - escalade: 3.2.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 20.2.4 - - yn@2.0.0: {} - - yocto-queue@0.1.0: {} - - zx@8.4.1: {} diff --git a/tokens/create-token/steel/pnpm.lock.yaml b/tokens/create-token/steel/pnpm.lock.yaml deleted file mode 100644 index 60694fac6..000000000 --- a/tokens/create-token/steel/pnpm.lock.yaml +++ /dev/null @@ -1,2520 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -importers: - .: - dependencies: - '@metaplex-foundation/mpl-token-metadata': - specifier: ^2.5.2 - version: 2.13.0(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)(utf-8-validate@5.0.10) - '@solana/spl-token': - specifier: ^0.3.7 - version: 0.3.11(@solana/web3.js@1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)(utf-8-validate@5.0.10) - '@solana/web3.js': - specifier: ^1.73.0 - version: 1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) - borsh: - specifier: ^0.7.0 - version: 0.7.0 - buffer: - specifier: ^6.0.3 - version: 6.0.3 - fs: - specifier: ^0.0.1-security - version: 0.0.1-security - devDependencies: - '@types/bn.js': - specifier: ^5.1.0 - version: 5.1.6 - '@types/chai': - specifier: ^4.3.1 - version: 4.3.20 - '@types/mocha': - specifier: ^9.1.1 - version: 9.1.1 - chai: - specifier: ^4.3.4 - version: 4.5.0 - mocha: - specifier: ^9.0.3 - version: 9.2.2 - solana-bankrun: - specifier: ^0.4.0 - version: 0.4.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - ts-mocha: - specifier: ^10.0.0 - version: 10.0.0(mocha@9.2.2) - typescript: - specifier: ^4.3.5 - version: 4.9.5 - zx: - specifier: ^8.1.4 - version: 8.1.9 - -packages: - '@babel/runtime@7.26.0': - resolution: - { - integrity: sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==, - } - engines: { node: '>=6.9.0' } - - '@metaplex-foundation/beet-solana@0.4.1': - resolution: - { - integrity: sha512-/6o32FNUtwK8tjhotrvU/vorP7umBuRFvBZrC6XCk51aKidBHe5LPVPA5AjGPbV3oftMfRuXPNd9yAGeEqeCDQ==, - } - - '@metaplex-foundation/beet@0.7.2': - resolution: - { - integrity: sha512-K+g3WhyFxKPc0xIvcIjNyV1eaTVJTiuaHZpig7Xx0MuYRMoJLLvhLTnUXhFdR5Tu2l2QSyKwfyXDgZlzhULqFg==, - } - - '@metaplex-foundation/cusper@0.0.2': - resolution: - { - integrity: sha512-S9RulC2fFCFOQraz61bij+5YCHhSO9llJegK8c8Y6731fSi6snUSQJdCUqYS8AIgR0TKbQvdvgSyIIdbDFZbBA==, - } - - '@metaplex-foundation/mpl-token-metadata@2.13.0': - resolution: - { - integrity: sha512-Fl/8I0L9rv4bKTV/RAl5YIbJe9SnQPInKvLz+xR1fEc4/VQkuCn3RPgypfUMEKWmCznzaw4sApDxy6CFS4qmJw==, - } - - '@noble/curves@1.6.0': - resolution: - { - integrity: sha512-TlaHRXDehJuRNR9TfZDNQ45mMEd5dwUwmicsafcIX4SsNiqnCHKjE/1alYPd/lDRVhxdhUAlv8uEhMCI5zjIJQ==, - } - engines: { node: ^14.21.3 || >=16 } - - '@noble/hashes@1.5.0': - resolution: - { - integrity: sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==, - } - engines: { node: ^14.21.3 || >=16 } - - '@solana/buffer-layout-utils@0.2.0': - resolution: - { - integrity: sha512-szG4sxgJGktbuZYDg2FfNmkMi0DYQoVjN2h7ta1W1hPrwzarcFLBq9UpX1UjNXsNpT9dn+chgprtWGioUAr4/g==, - } - engines: { node: '>= 10' } - - '@solana/buffer-layout@4.0.1': - resolution: - { - integrity: sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==, - } - engines: { node: '>=5.10' } - - '@solana/codecs-core@2.0.0-rc.1': - resolution: - { - integrity: sha512-bauxqMfSs8EHD0JKESaNmNuNvkvHSuN3bbWAF5RjOfDu2PugxHrvRebmYauvSumZ3cTfQ4HJJX6PG5rN852qyQ==, - } - peerDependencies: - typescript: '>=5' - - '@solana/codecs-data-structures@2.0.0-rc.1': - resolution: - { - integrity: sha512-rinCv0RrAVJ9rE/rmaibWJQxMwC5lSaORSZuwjopSUE6T0nb/MVg6Z1siNCXhh/HFTOg0l8bNvZHgBcN/yvXog==, - } - peerDependencies: - typescript: '>=5' - - '@solana/codecs-numbers@2.0.0-rc.1': - resolution: - { - integrity: sha512-J5i5mOkvukXn8E3Z7sGIPxsThRCgSdgTWJDQeZvucQ9PT6Y3HiVXJ0pcWiOWAoQ3RX8e/f4I3IC+wE6pZiJzDQ==, - } - peerDependencies: - typescript: '>=5' - - '@solana/codecs-strings@2.0.0-rc.1': - resolution: - { - integrity: sha512-9/wPhw8TbGRTt6mHC4Zz1RqOnuPTqq1Nb4EyuvpZ39GW6O2t2Q7Q0XxiB3+BdoEjwA2XgPw6e2iRfvYgqty44g==, - } - peerDependencies: - fastestsmallesttextencoderdecoder: ^1.0.22 - typescript: '>=5' - - '@solana/codecs@2.0.0-rc.1': - resolution: - { - integrity: sha512-qxoR7VybNJixV51L0G1RD2boZTcxmwUWnKCaJJExQ5qNKwbpSyDdWfFJfM5JhGyKe9DnPVOZB+JHWXnpbZBqrQ==, - } - peerDependencies: - typescript: '>=5' - - '@solana/errors@2.0.0-rc.1': - resolution: - { - integrity: sha512-ejNvQ2oJ7+bcFAYWj225lyRkHnixuAeb7RQCixm+5mH4n1IA4Qya/9Bmfy5RAAHQzxK43clu3kZmL5eF9VGtYQ==, - } - hasBin: true - peerDependencies: - typescript: '>=5' - - '@solana/options@2.0.0-rc.1': - resolution: - { - integrity: sha512-mLUcR9mZ3qfHlmMnREdIFPf9dpMc/Bl66tLSOOWxw4ml5xMT2ohFn7WGqoKcu/UHkT9CrC6+amEdqCNvUqI7AA==, - } - peerDependencies: - typescript: '>=5' - - '@solana/spl-token-metadata@0.1.6': - resolution: - { - integrity: sha512-7sMt1rsm/zQOQcUWllQX9mD2O6KhSAtY1hFR2hfFwgqfFWzSY9E9GDvFVNYUI1F0iQKcm6HmePU9QbKRXTEBiA==, - } - engines: { node: '>=16' } - peerDependencies: - '@solana/web3.js': ^1.95.3 - - '@solana/spl-token@0.3.11': - resolution: - { - integrity: sha512-bvohO3rIMSVL24Pb+I4EYTJ6cL82eFpInEXD/I8K8upOGjpqHsKUoAempR/RnUlI1qSFNyFlWJfu6MNUgfbCQQ==, - } - engines: { node: '>=16' } - peerDependencies: - '@solana/web3.js': ^1.88.0 - - '@solana/web3.js@1.95.4': - resolution: - { - integrity: sha512-sdewnNEA42ZSMxqkzdwEWi6fDgzwtJHaQa5ndUGEJYtoOnM6X5cvPmjoTUp7/k7bRrVAxfBgDnvQQHD6yhlLYw==, - } - - '@swc/helpers@0.5.13': - resolution: - { - integrity: sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==, - } - - '@types/bn.js@5.1.6': - resolution: - { - integrity: sha512-Xh8vSwUeMKeYYrj3cX4lGQgFSF/N03r+tv4AiLl1SucqV+uTQpxRcnM8AkXKHwYP9ZPXOYXRr2KPXpVlIvqh9w==, - } - - '@types/chai@4.3.20': - resolution: - { - integrity: sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==, - } - - '@types/connect@3.4.38': - resolution: - { - integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==, - } - - '@types/fs-extra@11.0.4': - resolution: - { - integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==, - } - - '@types/json5@0.0.29': - resolution: - { - integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==, - } - - '@types/jsonfile@6.1.4': - resolution: - { - integrity: sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==, - } - - '@types/mocha@9.1.1': - resolution: - { - integrity: sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==, - } - - '@types/node@12.20.55': - resolution: - { - integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==, - } - - '@types/node@22.8.4': - resolution: - { - integrity: sha512-SpNNxkftTJOPk0oN+y2bIqurEXHTA2AOZ3EJDDKeJ5VzkvvORSvmQXGQarcOzWV1ac7DCaPBEdMDxBsM+d8jWw==, - } - - '@types/uuid@8.3.4': - resolution: - { - integrity: sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==, - } - - '@types/ws@7.4.7': - resolution: - { - integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==, - } - - '@types/ws@8.5.12': - resolution: - { - integrity: sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==, - } - - '@ungap/promise-all-settled@1.1.2': - resolution: - { - integrity: sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==, - } - - JSONStream@1.3.5: - resolution: - { - integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==, - } - hasBin: true - - agentkeepalive@4.5.0: - resolution: - { - integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==, - } - engines: { node: '>= 8.0.0' } - - ansi-colors@4.1.1: - resolution: - { - integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==, - } - engines: { node: '>=6' } - - ansi-regex@5.0.1: - resolution: - { - integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==, - } - engines: { node: '>=8' } - - ansi-styles@4.3.0: - resolution: - { - integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==, - } - engines: { node: '>=8' } - - ansicolors@0.3.2: - resolution: - { - integrity: sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==, - } - - anymatch@3.1.3: - resolution: - { - integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==, - } - engines: { node: '>= 8' } - - argparse@2.0.1: - resolution: - { - integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==, - } - - arrify@1.0.1: - resolution: - { - integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==, - } - engines: { node: '>=0.10.0' } - - assert@2.1.0: - resolution: - { - integrity: sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==, - } - - assertion-error@1.1.0: - resolution: - { - integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==, - } - - available-typed-arrays@1.0.7: - resolution: - { - integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==, - } - engines: { node: '>= 0.4' } - - balanced-match@1.0.2: - resolution: - { - integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==, - } - - base-x@3.0.10: - resolution: - { - integrity: sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==, - } - - base-x@4.0.0: - resolution: - { - integrity: sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==, - } - - base64-js@1.5.1: - resolution: - { - integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==, - } - - bigint-buffer@1.1.5: - resolution: - { - integrity: sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA==, - } - engines: { node: '>= 10.0.0' } - - bignumber.js@9.1.2: - resolution: - { - integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==, - } - - binary-extensions@2.3.0: - resolution: - { - integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==, - } - engines: { node: '>=8' } - - bindings@1.5.0: - resolution: - { - integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==, - } - - bn.js@5.2.1: - resolution: - { - integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==, - } - - borsh@0.7.0: - resolution: - { - integrity: sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==, - } - - brace-expansion@1.1.11: - resolution: - { - integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==, - } - - braces@3.0.3: - resolution: - { - integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==, - } - engines: { node: '>=8' } - - browser-stdout@1.3.1: - resolution: - { - integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==, - } - - bs58@4.0.1: - resolution: - { - integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==, - } - - bs58@5.0.0: - resolution: - { - integrity: sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==, - } - - buffer-from@1.1.2: - resolution: - { - integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==, - } - - buffer@6.0.3: - resolution: - { - integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==, - } - - bufferutil@4.0.8: - resolution: - { - integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==, - } - engines: { node: '>=6.14.2' } - - call-bind@1.0.7: - resolution: - { - integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==, - } - engines: { node: '>= 0.4' } - - camelcase@6.3.0: - resolution: - { - integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==, - } - engines: { node: '>=10' } - - chai@4.5.0: - resolution: - { - integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==, - } - engines: { node: '>=4' } - - chalk@4.1.2: - resolution: - { - integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==, - } - engines: { node: '>=10' } - - chalk@5.3.0: - resolution: - { - integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==, - } - engines: { node: ^12.17.0 || ^14.13 || >=16.0.0 } - - check-error@1.0.3: - resolution: - { - integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==, - } - - chokidar@3.5.3: - resolution: - { - integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==, - } - engines: { node: '>= 8.10.0' } - - cliui@7.0.4: - resolution: - { - integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==, - } - - color-convert@2.0.1: - resolution: - { - integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==, - } - engines: { node: '>=7.0.0' } - - color-name@1.1.4: - resolution: - { - integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==, - } - - commander@12.1.0: - resolution: - { - integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==, - } - engines: { node: '>=18' } - - commander@2.20.3: - resolution: - { - integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==, - } - - concat-map@0.0.1: - resolution: - { - integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==, - } - - debug@4.3.3: - resolution: - { - integrity: sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==, - } - engines: { node: '>=6.0' } - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - debug@4.3.7: - resolution: - { - integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==, - } - engines: { node: '>=6.0' } - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - decamelize@4.0.0: - resolution: - { - integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==, - } - engines: { node: '>=10' } - - deep-eql@4.1.4: - resolution: - { - integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==, - } - engines: { node: '>=6' } - - define-data-property@1.1.4: - resolution: - { - integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==, - } - engines: { node: '>= 0.4' } - - define-properties@1.2.1: - resolution: - { - integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==, - } - engines: { node: '>= 0.4' } - - delay@5.0.0: - resolution: - { - integrity: sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==, - } - engines: { node: '>=10' } - - diff@3.5.0: - resolution: - { - integrity: sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==, - } - engines: { node: '>=0.3.1' } - - diff@5.0.0: - resolution: - { - integrity: sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==, - } - engines: { node: '>=0.3.1' } - - emoji-regex@8.0.0: - resolution: - { - integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==, - } - - es-define-property@1.0.0: - resolution: - { - integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==, - } - engines: { node: '>= 0.4' } - - es-errors@1.3.0: - resolution: - { - integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==, - } - engines: { node: '>= 0.4' } - - es6-promise@4.2.8: - resolution: - { - integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==, - } - - es6-promisify@5.0.0: - resolution: - { - integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==, - } - - escalade@3.2.0: - resolution: - { - integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==, - } - engines: { node: '>=6' } - - escape-string-regexp@4.0.0: - resolution: - { - integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==, - } - engines: { node: '>=10' } - - eventemitter3@5.0.1: - resolution: - { - integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==, - } - - eyes@0.1.8: - resolution: - { - integrity: sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==, - } - engines: { node: '> 0.1.90' } - - fast-stable-stringify@1.0.0: - resolution: - { - integrity: sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==, - } - - fastestsmallesttextencoderdecoder@1.0.22: - resolution: - { - integrity: sha512-Pb8d48e+oIuY4MaM64Cd7OW1gt4nxCHs7/ddPPZ/Ic3sg8yVGM7O9wDvZ7us6ScaUupzM+pfBolwtYhN1IxBIw==, - } - - file-uri-to-path@1.0.0: - resolution: - { - integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==, - } - - fill-range@7.1.1: - resolution: - { - integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==, - } - engines: { node: '>=8' } - - find-up@5.0.0: - resolution: - { - integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==, - } - engines: { node: '>=10' } - - flat@5.0.2: - resolution: - { - integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==, - } - hasBin: true - - for-each@0.3.3: - resolution: - { - integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==, - } - - fs.realpath@1.0.0: - resolution: - { - integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==, - } - - fs@0.0.1-security: - resolution: - { - integrity: sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w==, - } - - fsevents@2.3.3: - resolution: - { - integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==, - } - engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 } - os: [darwin] - - function-bind@1.1.2: - resolution: - { - integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==, - } - - get-caller-file@2.0.5: - resolution: - { - integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==, - } - engines: { node: 6.* || 8.* || >= 10.* } - - get-func-name@2.0.2: - resolution: - { - integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==, - } - - get-intrinsic@1.2.4: - resolution: - { - integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==, - } - engines: { node: '>= 0.4' } - - glob-parent@5.1.2: - resolution: - { - integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==, - } - engines: { node: '>= 6' } - - glob@7.2.0: - resolution: - { - integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==, - } - deprecated: Glob versions prior to v9 are no longer supported - - gopd@1.0.1: - resolution: - { - integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==, - } - - growl@1.10.5: - resolution: - { - integrity: sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==, - } - engines: { node: '>=4.x' } - - has-flag@4.0.0: - resolution: - { - integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==, - } - engines: { node: '>=8' } - - has-property-descriptors@1.0.2: - resolution: - { - integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==, - } - - has-proto@1.0.3: - resolution: - { - integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==, - } - engines: { node: '>= 0.4' } - - has-symbols@1.0.3: - resolution: - { - integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==, - } - engines: { node: '>= 0.4' } - - has-tostringtag@1.0.2: - resolution: - { - integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==, - } - engines: { node: '>= 0.4' } - - hasown@2.0.2: - resolution: - { - integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==, - } - engines: { node: '>= 0.4' } - - he@1.2.0: - resolution: - { - integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==, - } - hasBin: true - - humanize-ms@1.2.1: - resolution: - { - integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==, - } - - ieee754@1.2.1: - resolution: - { - integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==, - } - - inflight@1.0.6: - resolution: - { - integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==, - } - deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. - - inherits@2.0.4: - resolution: - { - integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==, - } - - is-arguments@1.1.1: - resolution: - { - integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==, - } - engines: { node: '>= 0.4' } - - is-binary-path@2.1.0: - resolution: - { - integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==, - } - engines: { node: '>=8' } - - is-callable@1.2.7: - resolution: - { - integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==, - } - engines: { node: '>= 0.4' } - - is-extglob@2.1.1: - resolution: - { - integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==, - } - engines: { node: '>=0.10.0' } - - is-fullwidth-code-point@3.0.0: - resolution: - { - integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==, - } - engines: { node: '>=8' } - - is-generator-function@1.0.10: - resolution: - { - integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==, - } - engines: { node: '>= 0.4' } - - is-glob@4.0.3: - resolution: - { - integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==, - } - engines: { node: '>=0.10.0' } - - is-nan@1.3.2: - resolution: - { - integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==, - } - engines: { node: '>= 0.4' } - - is-number@7.0.0: - resolution: - { - integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==, - } - engines: { node: '>=0.12.0' } - - is-plain-obj@2.1.0: - resolution: - { - integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==, - } - engines: { node: '>=8' } - - is-typed-array@1.1.13: - resolution: - { - integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==, - } - engines: { node: '>= 0.4' } - - is-unicode-supported@0.1.0: - resolution: - { - integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==, - } - engines: { node: '>=10' } - - isexe@2.0.0: - resolution: - { - integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==, - } - - isomorphic-ws@4.0.1: - resolution: - { - integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==, - } - peerDependencies: - ws: '*' - - jayson@4.1.2: - resolution: - { - integrity: sha512-5nzMWDHy6f+koZOuYsArh2AXs73NfWYVlFyJJuCedr93GpY+Ku8qq10ropSXVfHK+H0T6paA88ww+/dV+1fBNA==, - } - engines: { node: '>=8' } - hasBin: true - - js-yaml@4.1.0: - resolution: - { - integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==, - } - hasBin: true - - json-stringify-safe@5.0.1: - resolution: - { - integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==, - } - - json5@1.0.2: - resolution: - { - integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==, - } - hasBin: true - - jsonparse@1.3.1: - resolution: - { - integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==, - } - engines: { '0': node >= 0.2.0 } - - locate-path@6.0.0: - resolution: - { - integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==, - } - engines: { node: '>=10' } - - log-symbols@4.1.0: - resolution: - { - integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==, - } - engines: { node: '>=10' } - - loupe@2.3.7: - resolution: - { - integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==, - } - - make-error@1.3.6: - resolution: - { - integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==, - } - - minimatch@3.1.2: - resolution: - { - integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==, - } - - minimatch@4.2.1: - resolution: - { - integrity: sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==, - } - engines: { node: '>=10' } - - minimist@1.2.8: - resolution: - { - integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==, - } - - mkdirp@0.5.6: - resolution: - { - integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==, - } - hasBin: true - - mocha@9.2.2: - resolution: - { - integrity: sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==, - } - engines: { node: '>= 12.0.0' } - hasBin: true - - ms@2.1.2: - resolution: - { - integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==, - } - - ms@2.1.3: - resolution: - { - integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==, - } - - nanoid@3.3.1: - resolution: - { - integrity: sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==, - } - engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 } - hasBin: true - - node-fetch@2.7.0: - resolution: - { - integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==, - } - engines: { node: 4.x || >=6.0.0 } - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - - node-gyp-build@4.8.2: - resolution: - { - integrity: sha512-IRUxE4BVsHWXkV/SFOut4qTlagw2aM8T5/vnTsmrHJvVoKueJHRc/JaFND7QDDc61kLYUJ6qlZM3sqTSyx2dTw==, - } - hasBin: true - - normalize-path@3.0.0: - resolution: - { - integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==, - } - engines: { node: '>=0.10.0' } - - object-is@1.1.6: - resolution: - { - integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==, - } - engines: { node: '>= 0.4' } - - object-keys@1.1.1: - resolution: - { - integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==, - } - engines: { node: '>= 0.4' } - - object.assign@4.1.5: - resolution: - { - integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==, - } - engines: { node: '>= 0.4' } - - once@1.4.0: - resolution: - { - integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==, - } - - p-limit@3.1.0: - resolution: - { - integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==, - } - engines: { node: '>=10' } - - p-locate@5.0.0: - resolution: - { - integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==, - } - engines: { node: '>=10' } - - path-exists@4.0.0: - resolution: - { - integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==, - } - engines: { node: '>=8' } - - path-is-absolute@1.0.1: - resolution: - { - integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==, - } - engines: { node: '>=0.10.0' } - - pathval@1.1.1: - resolution: - { - integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==, - } - - picomatch@2.3.1: - resolution: - { - integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==, - } - engines: { node: '>=8.6' } - - possible-typed-array-names@1.0.0: - resolution: - { - integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==, - } - engines: { node: '>= 0.4' } - - randombytes@2.1.0: - resolution: - { - integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==, - } - - readdirp@3.6.0: - resolution: - { - integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==, - } - engines: { node: '>=8.10.0' } - - regenerator-runtime@0.14.1: - resolution: - { - integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==, - } - - require-directory@2.1.1: - resolution: - { - integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==, - } - engines: { node: '>=0.10.0' } - - rpc-websockets@9.0.4: - resolution: - { - integrity: sha512-yWZWN0M+bivtoNLnaDbtny4XchdAIF5Q4g/ZsC5UC61Ckbp0QczwO8fg44rV3uYmY4WHd+EZQbn90W1d8ojzqQ==, - } - - safe-buffer@5.2.1: - resolution: - { - integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==, - } - - serialize-javascript@6.0.0: - resolution: - { - integrity: sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==, - } - - set-function-length@1.2.2: - resolution: - { - integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==, - } - engines: { node: '>= 0.4' } - - solana-bankrun-darwin-arm64@0.4.0: - resolution: - { - integrity: sha512-6dz78Teoz7ez/3lpRLDjktYLJb79FcmJk2me4/YaB8WiO6W43OdExU4h+d2FyuAryO2DgBPXaBoBNY/8J1HJmw==, - } - engines: { node: '>= 10' } - cpu: [arm64] - os: [darwin] - - solana-bankrun-darwin-universal@0.4.0: - resolution: - { - integrity: sha512-zSSw/Jx3KNU42pPMmrEWABd0nOwGJfsj7nm9chVZ3ae7WQg3Uty0hHAkn5NSDCj3OOiN0py9Dr1l9vmRJpOOxg==, - } - engines: { node: '>= 10' } - os: [darwin] - - solana-bankrun-darwin-x64@0.4.0: - resolution: - { - integrity: sha512-LWjs5fsgHFtyr7YdJR6r0Ho5zrtzI6CY4wvwPXr8H2m3b4pZe6RLIZjQtabCav4cguc14G0K8yQB2PTMuGub8w==, - } - engines: { node: '>= 10' } - cpu: [x64] - os: [darwin] - - solana-bankrun-linux-x64-gnu@0.4.0: - resolution: - { - integrity: sha512-SrlVrb82UIxt21Zr/XZFHVV/h9zd2/nP25PMpLJVLD7Pgl2yhkhfi82xj3OjxoQqWe+zkBJ+uszA0EEKr67yNw==, - } - engines: { node: '>= 10' } - cpu: [x64] - os: [linux] - - solana-bankrun-linux-x64-musl@0.4.0: - resolution: - { - integrity: sha512-Nv328ZanmURdYfcLL+jwB1oMzX4ZzK57NwIcuJjGlf0XSNLq96EoaO5buEiUTo4Ls7MqqMyLbClHcrPE7/aKyA==, - } - engines: { node: '>= 10' } - cpu: [x64] - os: [linux] - - solana-bankrun@0.4.0: - resolution: - { - integrity: sha512-NMmXUipPBkt8NgnyNO3SCnPERP6xT/AMNMBooljGA3+rG6NN8lmXJsKeLqQTiFsDeWD74U++QM/DgcueSWvrIg==, - } - engines: { node: '>= 10' } - - source-map-support@0.5.21: - resolution: - { - integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==, - } - - source-map@0.6.1: - resolution: - { - integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==, - } - engines: { node: '>=0.10.0' } - - string-width@4.2.3: - resolution: - { - integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==, - } - engines: { node: '>=8' } - - strip-ansi@6.0.1: - resolution: - { - integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==, - } - engines: { node: '>=8' } - - strip-bom@3.0.0: - resolution: - { - integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==, - } - engines: { node: '>=4' } - - strip-json-comments@3.1.1: - resolution: - { - integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==, - } - engines: { node: '>=8' } - - superstruct@2.0.2: - resolution: - { - integrity: sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A==, - } - engines: { node: '>=14.0.0' } - - supports-color@7.2.0: - resolution: - { - integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==, - } - engines: { node: '>=8' } - - supports-color@8.1.1: - resolution: - { - integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==, - } - engines: { node: '>=10' } - - text-encoding-utf-8@1.0.2: - resolution: - { - integrity: sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==, - } - - through@2.3.8: - resolution: - { - integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==, - } - - to-regex-range@5.0.1: - resolution: - { - integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==, - } - engines: { node: '>=8.0' } - - tr46@0.0.3: - resolution: - { - integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==, - } - - ts-mocha@10.0.0: - resolution: - { - integrity: sha512-VRfgDO+iiuJFlNB18tzOfypJ21xn2xbuZyDvJvqpTbWgkAgD17ONGr8t+Tl8rcBtOBdjXp5e/Rk+d39f7XBHRw==, - } - engines: { node: '>= 6.X.X' } - hasBin: true - peerDependencies: - mocha: ^3.X.X || ^4.X.X || ^5.X.X || ^6.X.X || ^7.X.X || ^8.X.X || ^9.X.X || ^10.X.X - - ts-node@7.0.1: - resolution: - { - integrity: sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==, - } - engines: { node: '>=4.2.0' } - hasBin: true - - tsconfig-paths@3.15.0: - resolution: - { - integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==, - } - - tslib@2.8.0: - resolution: - { - integrity: sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==, - } - - type-detect@4.1.0: - resolution: - { - integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==, - } - engines: { node: '>=4' } - - typescript@4.9.5: - resolution: - { - integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==, - } - engines: { node: '>=4.2.0' } - hasBin: true - - undici-types@6.19.8: - resolution: - { - integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==, - } - - utf-8-validate@5.0.10: - resolution: - { - integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==, - } - engines: { node: '>=6.14.2' } - - util@0.12.5: - resolution: - { - integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==, - } - - uuid@8.3.2: - resolution: - { - integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==, - } - hasBin: true - - webidl-conversions@3.0.1: - resolution: - { - integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==, - } - - whatwg-url@5.0.0: - resolution: - { - integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==, - } - - which-typed-array@1.1.15: - resolution: - { - integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==, - } - engines: { node: '>= 0.4' } - - which@2.0.2: - resolution: - { - integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==, - } - engines: { node: '>= 8' } - hasBin: true - - workerpool@6.2.0: - resolution: - { - integrity: sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==, - } - - wrap-ansi@7.0.0: - resolution: - { - integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==, - } - engines: { node: '>=10' } - - wrappy@1.0.2: - resolution: - { - integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==, - } - - ws@7.5.10: - resolution: - { - integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==, - } - engines: { node: '>=8.3.0' } - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - ws@8.18.0: - resolution: - { - integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==, - } - engines: { node: '>=10.0.0' } - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - y18n@5.0.8: - resolution: - { - integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==, - } - engines: { node: '>=10' } - - yargs-parser@20.2.4: - resolution: - { - integrity: sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==, - } - engines: { node: '>=10' } - - yargs-unparser@2.0.0: - resolution: - { - integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==, - } - engines: { node: '>=10' } - - yargs@16.2.0: - resolution: - { - integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==, - } - engines: { node: '>=10' } - - yn@2.0.0: - resolution: - { - integrity: sha512-uTv8J/wiWTgUTg+9vLTi//leUl5vDQS6uii/emeTb2ssY7vl6QWf2fFbIIGjnhjvbdKlU0ed7QPgY1htTC86jQ==, - } - engines: { node: '>=4' } - - yocto-queue@0.1.0: - resolution: - { - integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==, - } - engines: { node: '>=10' } - - zx@8.1.9: - resolution: - { - integrity: sha512-UHuLHphHmsBYKkAchkSrEN4nzDyagafqC9HUxtc1J7eopaScW6H9dsLJ1lmkAntnLtDTGoM8fa+jrJrXiIfKFA==, - } - engines: { node: '>= 12.17.0' } - hasBin: true - -snapshots: - '@babel/runtime@7.26.0': - dependencies: - regenerator-runtime: 0.14.1 - - '@metaplex-foundation/beet-solana@0.4.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)': - dependencies: - '@metaplex-foundation/beet': 0.7.2 - '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) - bs58: 5.0.0 - debug: 4.3.7 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - - '@metaplex-foundation/beet@0.7.2': - dependencies: - ansicolors: 0.3.2 - assert: 2.1.0 - bn.js: 5.2.1 - debug: 4.3.7 - transitivePeerDependencies: - - supports-color - - '@metaplex-foundation/cusper@0.0.2': {} - - '@metaplex-foundation/mpl-token-metadata@2.13.0(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)(utf-8-validate@5.0.10)': - dependencies: - '@metaplex-foundation/beet': 0.7.2 - '@metaplex-foundation/beet-solana': 0.4.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) - '@metaplex-foundation/cusper': 0.0.2 - '@solana/spl-token': 0.3.11(@solana/web3.js@1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) - bn.js: 5.2.1 - debug: 4.3.7 - transitivePeerDependencies: - - bufferutil - - encoding - - fastestsmallesttextencoderdecoder - - supports-color - - typescript - - utf-8-validate - - '@noble/curves@1.6.0': - dependencies: - '@noble/hashes': 1.5.0 - - '@noble/hashes@1.5.0': {} - - '@solana/buffer-layout-utils@0.2.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)': - dependencies: - '@solana/buffer-layout': 4.0.1 - '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) - bigint-buffer: 1.1.5 - bignumber.js: 9.1.2 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - - '@solana/buffer-layout@4.0.1': - dependencies: - buffer: 6.0.3 - - '@solana/codecs-core@2.0.0-rc.1(typescript@4.9.5)': - dependencies: - '@solana/errors': 2.0.0-rc.1(typescript@4.9.5) - typescript: 4.9.5 - - '@solana/codecs-data-structures@2.0.0-rc.1(typescript@4.9.5)': - dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@4.9.5) - '@solana/codecs-numbers': 2.0.0-rc.1(typescript@4.9.5) - '@solana/errors': 2.0.0-rc.1(typescript@4.9.5) - typescript: 4.9.5 - - '@solana/codecs-numbers@2.0.0-rc.1(typescript@4.9.5)': - dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@4.9.5) - '@solana/errors': 2.0.0-rc.1(typescript@4.9.5) - typescript: 4.9.5 - - '@solana/codecs-strings@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)': - dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@4.9.5) - '@solana/codecs-numbers': 2.0.0-rc.1(typescript@4.9.5) - '@solana/errors': 2.0.0-rc.1(typescript@4.9.5) - fastestsmallesttextencoderdecoder: 1.0.22 - typescript: 4.9.5 - - '@solana/codecs@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)': - dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@4.9.5) - '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@4.9.5) - '@solana/codecs-numbers': 2.0.0-rc.1(typescript@4.9.5) - '@solana/codecs-strings': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5) - '@solana/options': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5) - typescript: 4.9.5 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/errors@2.0.0-rc.1(typescript@4.9.5)': - dependencies: - chalk: 5.3.0 - commander: 12.1.0 - typescript: 4.9.5 - - '@solana/options@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)': - dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@4.9.5) - '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@4.9.5) - '@solana/codecs-numbers': 2.0.0-rc.1(typescript@4.9.5) - '@solana/codecs-strings': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5) - '@solana/errors': 2.0.0-rc.1(typescript@4.9.5) - typescript: 4.9.5 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)': - dependencies: - '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5) - '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - typescript - - '@solana/spl-token@0.3.11(@solana/web3.js@1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)(utf-8-validate@5.0.10)': - dependencies: - '@solana/buffer-layout': 4.0.1 - '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5) - '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) - buffer: 6.0.3 - transitivePeerDependencies: - - bufferutil - - encoding - - fastestsmallesttextencoderdecoder - - typescript - - utf-8-validate - - '@solana/web3.js@1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10)': - dependencies: - '@babel/runtime': 7.26.0 - '@noble/curves': 1.6.0 - '@noble/hashes': 1.5.0 - '@solana/buffer-layout': 4.0.1 - agentkeepalive: 4.5.0 - bigint-buffer: 1.1.5 - bn.js: 5.2.1 - borsh: 0.7.0 - bs58: 4.0.1 - buffer: 6.0.3 - fast-stable-stringify: 1.0.0 - jayson: 4.1.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) - node-fetch: 2.7.0 - rpc-websockets: 9.0.4 - superstruct: 2.0.2 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - - '@swc/helpers@0.5.13': - dependencies: - tslib: 2.8.0 - - '@types/bn.js@5.1.6': - dependencies: - '@types/node': 22.8.4 - - '@types/chai@4.3.20': {} - - '@types/connect@3.4.38': - dependencies: - '@types/node': 12.20.55 - - '@types/fs-extra@11.0.4': - dependencies: - '@types/jsonfile': 6.1.4 - '@types/node': 22.8.4 - optional: true - - '@types/json5@0.0.29': - optional: true - - '@types/jsonfile@6.1.4': - dependencies: - '@types/node': 22.8.4 - optional: true - - '@types/mocha@9.1.1': {} - - '@types/node@12.20.55': {} - - '@types/node@22.8.4': - dependencies: - undici-types: 6.19.8 - - '@types/uuid@8.3.4': {} - - '@types/ws@7.4.7': - dependencies: - '@types/node': 12.20.55 - - '@types/ws@8.5.12': - dependencies: - '@types/node': 22.8.4 - - '@ungap/promise-all-settled@1.1.2': {} - - JSONStream@1.3.5: - dependencies: - jsonparse: 1.3.1 - through: 2.3.8 - - agentkeepalive@4.5.0: - dependencies: - humanize-ms: 1.2.1 - - ansi-colors@4.1.1: {} - - ansi-regex@5.0.1: {} - - ansi-styles@4.3.0: - dependencies: - color-convert: 2.0.1 - - ansicolors@0.3.2: {} - - anymatch@3.1.3: - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - - argparse@2.0.1: {} - - arrify@1.0.1: {} - - assert@2.1.0: - dependencies: - call-bind: 1.0.7 - is-nan: 1.3.2 - object-is: 1.1.6 - object.assign: 4.1.5 - util: 0.12.5 - - assertion-error@1.1.0: {} - - available-typed-arrays@1.0.7: - dependencies: - possible-typed-array-names: 1.0.0 - - balanced-match@1.0.2: {} - - base-x@3.0.10: - dependencies: - safe-buffer: 5.2.1 - - base-x@4.0.0: {} - - base64-js@1.5.1: {} - - bigint-buffer@1.1.5: - dependencies: - bindings: 1.5.0 - - bignumber.js@9.1.2: {} - - binary-extensions@2.3.0: {} - - bindings@1.5.0: - dependencies: - file-uri-to-path: 1.0.0 - - bn.js@5.2.1: {} - - borsh@0.7.0: - dependencies: - bn.js: 5.2.1 - bs58: 4.0.1 - text-encoding-utf-8: 1.0.2 - - brace-expansion@1.1.11: - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - - braces@3.0.3: - dependencies: - fill-range: 7.1.1 - - browser-stdout@1.3.1: {} - - bs58@4.0.1: - dependencies: - base-x: 3.0.10 - - bs58@5.0.0: - dependencies: - base-x: 4.0.0 - - buffer-from@1.1.2: {} - - buffer@6.0.3: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - - bufferutil@4.0.8: - dependencies: - node-gyp-build: 4.8.2 - optional: true - - call-bind@1.0.7: - dependencies: - es-define-property: 1.0.0 - es-errors: 1.3.0 - function-bind: 1.1.2 - get-intrinsic: 1.2.4 - set-function-length: 1.2.2 - - camelcase@6.3.0: {} - - chai@4.5.0: - dependencies: - assertion-error: 1.1.0 - check-error: 1.0.3 - deep-eql: 4.1.4 - get-func-name: 2.0.2 - loupe: 2.3.7 - pathval: 1.1.1 - type-detect: 4.1.0 - - chalk@4.1.2: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - - chalk@5.3.0: {} - - check-error@1.0.3: - dependencies: - get-func-name: 2.0.2 - - chokidar@3.5.3: - dependencies: - anymatch: 3.1.3 - braces: 3.0.3 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - - cliui@7.0.4: - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - - color-convert@2.0.1: - dependencies: - color-name: 1.1.4 - - color-name@1.1.4: {} - - commander@12.1.0: {} - - commander@2.20.3: {} - - concat-map@0.0.1: {} - - debug@4.3.3(supports-color@8.1.1): - dependencies: - ms: 2.1.2 - optionalDependencies: - supports-color: 8.1.1 - - debug@4.3.7: - dependencies: - ms: 2.1.3 - - decamelize@4.0.0: {} - - deep-eql@4.1.4: - dependencies: - type-detect: 4.1.0 - - define-data-property@1.1.4: - dependencies: - es-define-property: 1.0.0 - es-errors: 1.3.0 - gopd: 1.0.1 - - define-properties@1.2.1: - dependencies: - define-data-property: 1.1.4 - has-property-descriptors: 1.0.2 - object-keys: 1.1.1 - - delay@5.0.0: {} - - diff@3.5.0: {} - - diff@5.0.0: {} - - emoji-regex@8.0.0: {} - - es-define-property@1.0.0: - dependencies: - get-intrinsic: 1.2.4 - - es-errors@1.3.0: {} - - es6-promise@4.2.8: {} - - es6-promisify@5.0.0: - dependencies: - es6-promise: 4.2.8 - - escalade@3.2.0: {} - - escape-string-regexp@4.0.0: {} - - eventemitter3@5.0.1: {} - - eyes@0.1.8: {} - - fast-stable-stringify@1.0.0: {} - - fastestsmallesttextencoderdecoder@1.0.22: {} - - file-uri-to-path@1.0.0: {} - - fill-range@7.1.1: - dependencies: - to-regex-range: 5.0.1 - - find-up@5.0.0: - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - - flat@5.0.2: {} - - for-each@0.3.3: - dependencies: - is-callable: 1.2.7 - - fs.realpath@1.0.0: {} - - fs@0.0.1-security: {} - - fsevents@2.3.3: - optional: true - - function-bind@1.1.2: {} - - get-caller-file@2.0.5: {} - - get-func-name@2.0.2: {} - - get-intrinsic@1.2.4: - dependencies: - es-errors: 1.3.0 - function-bind: 1.1.2 - has-proto: 1.0.3 - has-symbols: 1.0.3 - hasown: 2.0.2 - - glob-parent@5.1.2: - dependencies: - is-glob: 4.0.3 - - glob@7.2.0: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - - gopd@1.0.1: - dependencies: - get-intrinsic: 1.2.4 - - growl@1.10.5: {} - - has-flag@4.0.0: {} - - has-property-descriptors@1.0.2: - dependencies: - es-define-property: 1.0.0 - - has-proto@1.0.3: {} - - has-symbols@1.0.3: {} - - has-tostringtag@1.0.2: - dependencies: - has-symbols: 1.0.3 - - hasown@2.0.2: - dependencies: - function-bind: 1.1.2 - - he@1.2.0: {} - - humanize-ms@1.2.1: - dependencies: - ms: 2.1.3 - - ieee754@1.2.1: {} - - inflight@1.0.6: - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - - inherits@2.0.4: {} - - is-arguments@1.1.1: - dependencies: - call-bind: 1.0.7 - has-tostringtag: 1.0.2 - - is-binary-path@2.1.0: - dependencies: - binary-extensions: 2.3.0 - - is-callable@1.2.7: {} - - is-extglob@2.1.1: {} - - is-fullwidth-code-point@3.0.0: {} - - is-generator-function@1.0.10: - dependencies: - has-tostringtag: 1.0.2 - - is-glob@4.0.3: - dependencies: - is-extglob: 2.1.1 - - is-nan@1.3.2: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - - is-number@7.0.0: {} - - is-plain-obj@2.1.0: {} - - is-typed-array@1.1.13: - dependencies: - which-typed-array: 1.1.15 - - is-unicode-supported@0.1.0: {} - - isexe@2.0.0: {} - - isomorphic-ws@4.0.1(ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10)): - dependencies: - ws: 7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) - - jayson@4.1.2(bufferutil@4.0.8)(utf-8-validate@5.0.10): - dependencies: - '@types/connect': 3.4.38 - '@types/node': 12.20.55 - '@types/ws': 7.4.7 - JSONStream: 1.3.5 - commander: 2.20.3 - delay: 5.0.0 - es6-promisify: 5.0.0 - eyes: 0.1.8 - isomorphic-ws: 4.0.1(ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10)) - json-stringify-safe: 5.0.1 - uuid: 8.3.2 - ws: 7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - js-yaml@4.1.0: - dependencies: - argparse: 2.0.1 - - json-stringify-safe@5.0.1: {} - - json5@1.0.2: - dependencies: - minimist: 1.2.8 - optional: true - - jsonparse@1.3.1: {} - - locate-path@6.0.0: - dependencies: - p-locate: 5.0.0 - - log-symbols@4.1.0: - dependencies: - chalk: 4.1.2 - is-unicode-supported: 0.1.0 - - loupe@2.3.7: - dependencies: - get-func-name: 2.0.2 - - make-error@1.3.6: {} - - minimatch@3.1.2: - dependencies: - brace-expansion: 1.1.11 - - minimatch@4.2.1: - dependencies: - brace-expansion: 1.1.11 - - minimist@1.2.8: {} - - mkdirp@0.5.6: - dependencies: - minimist: 1.2.8 - - mocha@9.2.2: - dependencies: - '@ungap/promise-all-settled': 1.1.2 - ansi-colors: 4.1.1 - browser-stdout: 1.3.1 - chokidar: 3.5.3 - debug: 4.3.3(supports-color@8.1.1) - diff: 5.0.0 - escape-string-regexp: 4.0.0 - find-up: 5.0.0 - glob: 7.2.0 - growl: 1.10.5 - he: 1.2.0 - js-yaml: 4.1.0 - log-symbols: 4.1.0 - minimatch: 4.2.1 - ms: 2.1.3 - nanoid: 3.3.1 - serialize-javascript: 6.0.0 - strip-json-comments: 3.1.1 - supports-color: 8.1.1 - which: 2.0.2 - workerpool: 6.2.0 - yargs: 16.2.0 - yargs-parser: 20.2.4 - yargs-unparser: 2.0.0 - - ms@2.1.2: {} - - ms@2.1.3: {} - - nanoid@3.3.1: {} - - node-fetch@2.7.0: - dependencies: - whatwg-url: 5.0.0 - - node-gyp-build@4.8.2: - optional: true - - normalize-path@3.0.0: {} - - object-is@1.1.6: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - - object-keys@1.1.1: {} - - object.assign@4.1.5: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - has-symbols: 1.0.3 - object-keys: 1.1.1 - - once@1.4.0: - dependencies: - wrappy: 1.0.2 - - p-limit@3.1.0: - dependencies: - yocto-queue: 0.1.0 - - p-locate@5.0.0: - dependencies: - p-limit: 3.1.0 - - path-exists@4.0.0: {} - - path-is-absolute@1.0.1: {} - - pathval@1.1.1: {} - - picomatch@2.3.1: {} - - possible-typed-array-names@1.0.0: {} - - randombytes@2.1.0: - dependencies: - safe-buffer: 5.2.1 - - readdirp@3.6.0: - dependencies: - picomatch: 2.3.1 - - regenerator-runtime@0.14.1: {} - - require-directory@2.1.1: {} - - rpc-websockets@9.0.4: - dependencies: - '@swc/helpers': 0.5.13 - '@types/uuid': 8.3.4 - '@types/ws': 8.5.12 - buffer: 6.0.3 - eventemitter3: 5.0.1 - uuid: 8.3.2 - ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - optionalDependencies: - bufferutil: 4.0.8 - utf-8-validate: 5.0.10 - - safe-buffer@5.2.1: {} - - serialize-javascript@6.0.0: - dependencies: - randombytes: 2.1.0 - - set-function-length@1.2.2: - dependencies: - define-data-property: 1.1.4 - es-errors: 1.3.0 - function-bind: 1.1.2 - get-intrinsic: 1.2.4 - gopd: 1.0.1 - has-property-descriptors: 1.0.2 - - solana-bankrun-darwin-arm64@0.4.0: - optional: true - - solana-bankrun-darwin-universal@0.4.0: - optional: true - - solana-bankrun-darwin-x64@0.4.0: - optional: true - - solana-bankrun-linux-x64-gnu@0.4.0: - optional: true - - solana-bankrun-linux-x64-musl@0.4.0: - optional: true - - solana-bankrun@0.4.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): - dependencies: - '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) - bs58: 4.0.1 - optionalDependencies: - solana-bankrun-darwin-arm64: 0.4.0 - solana-bankrun-darwin-universal: 0.4.0 - solana-bankrun-darwin-x64: 0.4.0 - solana-bankrun-linux-x64-gnu: 0.4.0 - solana-bankrun-linux-x64-musl: 0.4.0 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - - source-map-support@0.5.21: - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - - source-map@0.6.1: {} - - string-width@4.2.3: - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - - strip-ansi@6.0.1: - dependencies: - ansi-regex: 5.0.1 - - strip-bom@3.0.0: - optional: true - - strip-json-comments@3.1.1: {} - - superstruct@2.0.2: {} - - supports-color@7.2.0: - dependencies: - has-flag: 4.0.0 - - supports-color@8.1.1: - dependencies: - has-flag: 4.0.0 - - text-encoding-utf-8@1.0.2: {} - - through@2.3.8: {} - - to-regex-range@5.0.1: - dependencies: - is-number: 7.0.0 - - tr46@0.0.3: {} - - ts-mocha@10.0.0(mocha@9.2.2): - dependencies: - mocha: 9.2.2 - ts-node: 7.0.1 - optionalDependencies: - tsconfig-paths: 3.15.0 - - ts-node@7.0.1: - dependencies: - arrify: 1.0.1 - buffer-from: 1.1.2 - diff: 3.5.0 - make-error: 1.3.6 - minimist: 1.2.8 - mkdirp: 0.5.6 - source-map-support: 0.5.21 - yn: 2.0.0 - - tsconfig-paths@3.15.0: - dependencies: - '@types/json5': 0.0.29 - json5: 1.0.2 - minimist: 1.2.8 - strip-bom: 3.0.0 - optional: true - - tslib@2.8.0: {} - - type-detect@4.1.0: {} - - typescript@4.9.5: {} - - undici-types@6.19.8: {} - - utf-8-validate@5.0.10: - dependencies: - node-gyp-build: 4.8.2 - optional: true - - util@0.12.5: - dependencies: - inherits: 2.0.4 - is-arguments: 1.1.1 - is-generator-function: 1.0.10 - is-typed-array: 1.1.13 - which-typed-array: 1.1.15 - - uuid@8.3.2: {} - - webidl-conversions@3.0.1: {} - - whatwg-url@5.0.0: - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - - which-typed-array@1.1.15: - dependencies: - available-typed-arrays: 1.0.7 - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-tostringtag: 1.0.2 - - which@2.0.2: - dependencies: - isexe: 2.0.0 - - workerpool@6.2.0: {} - - wrap-ansi@7.0.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - wrappy@1.0.2: {} - - ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10): - optionalDependencies: - bufferutil: 4.0.8 - utf-8-validate: 5.0.10 - - ws@8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): - optionalDependencies: - bufferutil: 4.0.8 - utf-8-validate: 5.0.10 - - y18n@5.0.8: {} - - yargs-parser@20.2.4: {} - - yargs-unparser@2.0.0: - dependencies: - camelcase: 6.3.0 - decamelize: 4.0.0 - flat: 5.0.2 - is-plain-obj: 2.1.0 - - yargs@16.2.0: - dependencies: - cliui: 7.0.4 - escalade: 3.2.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 20.2.4 - - yn@2.0.0: {} - - yocto-queue@0.1.0: {} - - zx@8.1.9: - optionalDependencies: - '@types/fs-extra': 11.0.4 - '@types/node': 22.8.4 diff --git a/tokens/create-token/steel/prepare.mjs b/tokens/create-token/steel/prepare.mjs deleted file mode 100644 index 7c5ec464b..000000000 --- a/tokens/create-token/steel/prepare.mjs +++ /dev/null @@ -1,34 +0,0 @@ -#!/usr/bin/env zx - -import { mkdir, rm } from 'node:fs/promises'; -import { join } from 'node:path'; -import { $ } from 'zx'; - -const programs = [ - { - id: 'metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s', - name: 'token_metadata.so', - }, -]; - -const outputDir = 'tests/fixtures'; -const overwrite = true; - -try { - for (const program of programs) { - const { id, name } = program; - const outputFile = join(outputDir, name); - await $`solana config set -um`; - - try { - await mkdir(outputDir, { recursive: true }); - if (overwrite) await rm(outputFile, { force: true }); - await $`solana program dump ${id} ${outputFile}`; - console.log(`Program ${id} dumped to ${outputFile}`); - } catch (error) { - console.error(`Error dumping ${id}: ${error.message}`); - } - } -} catch (error) { - console.error(`Error preparing programs: ${error.message}`); -} diff --git a/tokens/create-token/steel/program/Cargo.toml b/tokens/create-token/steel/program/Cargo.toml deleted file mode 100644 index 694428712..000000000 --- a/tokens/create-token/steel/program/Cargo.toml +++ /dev/null @@ -1,30 +0,0 @@ -[package] -name = "steel-program" -description = "" -version.workspace = true -edition.workspace = true -license.workspace = true -homepage.workspace = true -documentation.workspace = true -repository.workspace = true -readme.workspace = true -keywords.workspace = true - -[lib] -crate-type = ["cdylib", "lib"] - -[dependencies] -steel-api.workspace = true -solana-program.workspace = true -steel.workspace = true -spl-token.workspace = true -mpl-token-metadata = "5.1.0" - -[dev-dependencies] -base64 = "0.21" -rand = "0.8.5" -solana-program-test = "2.1" -solana-sdk = "2.1" -tokio = { version = "1.35", features = ["full"] } -bytemuck_derive = ">=1.8.1, <1.9.0" -half = "=2.4.1" diff --git a/tokens/create-token/steel/program/build.rs b/tokens/create-token/steel/program/build.rs deleted file mode 100644 index e4ff00ff7..000000000 --- a/tokens/create-token/steel/program/build.rs +++ /dev/null @@ -1,24 +0,0 @@ -// build.rs -use std::fs; -use std::process::Command; - -fn main() { - println!("cargo:rerun-if-changed=build.rs"); - - // Create the fixtures directory path - fs::create_dir_all("tests/fixtures").expect("Failed to create fixtures directory"); - - let status = Command::new("solana") - .args([ - "program", - "dump", - "metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s", - "tests/fixtures/token_metadata.so", - ]) - .status() - .expect("Failed to run solana program dump command"); - - if !status.success() { - panic!("Failed to dump Solana program"); - } -} diff --git a/tokens/create-token/steel/program/src/create_token.rs b/tokens/create-token/steel/program/src/create_token.rs deleted file mode 100644 index 1cb3de352..000000000 --- a/tokens/create-token/steel/program/src/create_token.rs +++ /dev/null @@ -1,112 +0,0 @@ -use solana_program::msg; -use solana_program::program_pack::Pack; -use spl_token::state::Mint; -use steel::*; -use steel_api::prelude::*; - -pub fn process_create_token(accounts: &[AccountInfo<'_>], data: &[u8]) -> ProgramResult { - //Parse Args - let args = CreateToken::try_from_bytes(data)?; - let name = String::from_utf8(args.name.to_vec()).expect("Invalid UTF-8"); - let symbol = String::from_utf8(args.symbol.to_vec()).expect("Invalid UTF-8"); - let uri = String::from_utf8(args.uri.to_vec()).expect("Invalid UTF-8"); - let decimals = args.decimals; - msg!("Parsed Arguments"); - - // Load accounts. - let [signer_info, mint_info, metadata_info, system_program, token_program, metadata_program, rent_sysvar] = - accounts - else { - return Err(ProgramError::NotEnoughAccountKeys); - }; - msg!("Loaded Accounts"); - - //Validation - signer_info.is_signer()?; - mint_info.is_signer()?.is_empty()?.is_writable()?; - metadata_info.is_empty()?.is_writable()?.has_seeds( - &[ - METADATA, - mpl_token_metadata::ID.as_ref(), - mint_info.key.as_ref(), - ], - &mpl_token_metadata::ID, - )?; - system_program.is_program(&system_program::ID)?; - token_program.is_program(&spl_token::ID)?; - metadata_program.is_program(&mpl_token_metadata::ID)?; - rent_sysvar.is_sysvar(&sysvar::rent::ID)?; - msg!("Accounts validated"); - - // First, create an account for the Mint. - // - msg!("Creating mint account..."); - msg!("Mint: {}", mint_info.key); - solana_program::program::invoke( - &solana_program::system_instruction::create_account( - signer_info.key, - mint_info.key, - (solana_program::rent::Rent::get()?).minimum_balance(Mint::LEN), - Mint::LEN as u64, - token_program.key, - ), - &[ - mint_info.clone(), - signer_info.clone(), - system_program.clone(), - token_program.clone(), - ], - )?; - - // Second, Initialize account as Mint Account - // - msg!("Initializing mint account..."); - solana_program::program::invoke( - &spl_token::instruction::initialize_mint( - token_program.key, - mint_info.key, - signer_info.key, - Some(signer_info.key), - decimals, // 9 Decimals for the default SPL Token standard - )?, - &[ - mint_info.clone(), - signer_info.clone(), - token_program.clone(), - rent_sysvar.clone(), - ], - )?; - - // Lastly, create the account for that Mint's metadata - // - msg!("Creating metadata account..."); - msg!("Metadata account address: {}", metadata_info.key); - mpl_token_metadata::instructions::CreateMetadataAccountV3Cpi { - __program: metadata_program, - metadata: metadata_info, - mint: mint_info, - mint_authority: signer_info, - payer: signer_info, - update_authority: (signer_info, true), - system_program, - rent: Some(rent_sysvar), - __args: mpl_token_metadata::instructions::CreateMetadataAccountV3InstructionArgs { - data: mpl_token_metadata::types::DataV2 { - name: name, - symbol: symbol, - uri: uri, - seller_fee_basis_points: 0, - creators: None, - collection: None, - uses: None, - }, - is_mutable: true, - collection_details: None, - }, - } - .invoke()?; - - msg!("Token mint created successfully."); - - Ok(()) -} diff --git a/tokens/create-token/steel/program/src/lib.rs b/tokens/create-token/steel/program/src/lib.rs deleted file mode 100644 index e8ad43149..000000000 --- a/tokens/create-token/steel/program/src/lib.rs +++ /dev/null @@ -1,24 +0,0 @@ -mod create_token; -use solana_program::msg; - -use create_token::*; - -use steel::*; -use steel_api::prelude::*; - -pub fn process_instruction( - program_id: &Pubkey, - accounts: &[AccountInfo], - data: &[u8], -) -> ProgramResult { - msg!("Instruction started"); - let (ix, data) = parse_instruction(&steel_api::ID, program_id, data)?; - - match ix { - TokenInstruction::CreateToken => process_create_token(accounts, data)?, - } - - Ok(()) -} - -entrypoint!(process_instruction); diff --git a/tokens/create-token/steel/program/tests/test.rs b/tokens/create-token/steel/program/tests/test.rs deleted file mode 100644 index 303208e16..000000000 --- a/tokens/create-token/steel/program/tests/test.rs +++ /dev/null @@ -1,152 +0,0 @@ -use solana_program::hash::Hash; -use solana_program_test::{processor, BanksClient, ProgramTest}; -use solana_sdk::{ - program_pack::Pack, signature::Keypair, signer::Signer, transaction::Transaction, -}; -use steel::*; -use steel_api::prelude::*; - -async fn setup() -> (BanksClient, Keypair, Hash) { - let mut program_test = ProgramTest::new( - "steel_program", - steel_api::ID, - processor!(steel_program::process_instruction), - ); - - program_test.add_program("token_metadata", mpl_token_metadata::ID, None); - - program_test.prefer_bpf(true); - program_test.start().await -} - -#[tokio::test] -async fn run_test() { - // Setup test - let (mut banks, payer, blockhash) = setup().await; - - //SPL TOKEN - let token_mint_keypair = Keypair::new(); - - let name = string_to_bytes::<32>("Solana Gold").unwrap(); - let symbol = string_to_bytes::<8>("GOLDSOL").unwrap(); - let uri = string_to_bytes::<128>("https://raw.githubusercontent.com/solana-developers/program-examples/new-examples/tokens/tokens/.assets/spl-token.json").unwrap(); - let decimals = 9; - - // Submit create transaction for spl_token. - let ix = create_token( - payer.pubkey(), - token_mint_keypair.pubkey(), - name, - symbol, - uri, - decimals, - ); - let tx = Transaction::new_signed_with_payer( - &[ix], - Some(&payer.pubkey()), - &[&payer, &token_mint_keypair], - blockhash, - ); - let res = banks.process_transaction(tx).await; - assert!(res.is_ok()); - - // Check token mint account data - let mint_account_data = banks - .get_account(token_mint_keypair.pubkey()) - .await - .unwrap() - .unwrap() - .data; - let deserialized_mint_data = spl_token::state::Mint::unpack(&mint_account_data).unwrap(); - assert!(deserialized_mint_data.is_initialized); - assert_eq!(deserialized_mint_data.decimals, decimals); - assert_eq!( - deserialized_mint_data.mint_authority.unwrap(), - payer.pubkey() - ); - - // Check token metadata account data - let metadata_account_data = banks - .get_account(metadata_pda(token_mint_keypair.pubkey()).0) - .await - .unwrap() - .unwrap() - .data; - let deserialized_metadata_data = - mpl_token_metadata::accounts::Metadata::from_bytes(&metadata_account_data).unwrap(); - assert_eq!(deserialized_metadata_data.update_authority, payer.pubkey()); - assert_eq!(deserialized_metadata_data.mint, token_mint_keypair.pubkey()); - assert_eq!( - deserialized_metadata_data.name.trim_end_matches('\0'), - "Solana Gold" - ); - assert_eq!( - deserialized_metadata_data.symbol.trim_end_matches('\0'), - "GOLDSOL" - ); - assert_eq!(deserialized_metadata_data.uri.trim_end_matches('\0'), "https://raw.githubusercontent.com/solana-developers/program-examples/new-examples/tokens/tokens/.assets/spl-token.json" ); - - //NFT - let nft_mint_keypair = Keypair::new(); - - let name = string_to_bytes::<32>("Homer NFT").unwrap(); - let symbol = string_to_bytes::<8>("HOMR").unwrap(); - let uri = string_to_bytes::<128>("https://raw.githubusercontent.com/solana-developers/program-examples/new-examples/tokens/tokens/.assets/nft.json").unwrap(); - let decimals = 0; - - //Submit create transaction for nft - let ix = create_token( - payer.pubkey(), - nft_mint_keypair.pubkey(), - name, - symbol, - uri, - decimals, - ); - - let tx = Transaction::new_signed_with_payer( - &[ix], - Some(&payer.pubkey()), - &[&payer, &nft_mint_keypair], - blockhash, - ); - - let res = banks.process_transaction(tx).await; - assert!(res.is_ok()); - - //Check nft mint account data - let mint_account_data = banks - .get_account(nft_mint_keypair.pubkey()) - .await - .unwrap() - .unwrap() - .data; - let deserialized_mint_data = spl_token::state::Mint::unpack(&mint_account_data).unwrap(); - assert!(deserialized_mint_data.is_initialized); - assert_eq!(deserialized_mint_data.decimals, decimals); - assert_eq!( - deserialized_mint_data.mint_authority.unwrap(), - payer.pubkey() - ); - - //Check nft metadata account data - let metadata_account_data = banks - .get_account(metadata_pda(nft_mint_keypair.pubkey()).0) - .await - .unwrap() - .unwrap() - .data; - let deserialized_metadata_data = - mpl_token_metadata::accounts::Metadata::from_bytes(&metadata_account_data).unwrap(); - assert_eq!(deserialized_metadata_data.update_authority, payer.pubkey()); - assert_eq!(deserialized_metadata_data.mint, nft_mint_keypair.pubkey()); - assert_eq!( - deserialized_metadata_data.name.trim_end_matches('\0'), - "Homer NFT" - ); - assert_eq!( - deserialized_metadata_data.symbol.trim_end_matches('\0'), - "HOMR" - ); - assert_eq!(deserialized_metadata_data.uri.trim_end_matches('\0'), "https://raw.githubusercontent.com/solana-developers/program-examples/new-examples/tokens/tokens/.assets/nft.json" ); -} diff --git a/tokens/create-token/steel/tests/bankrun.test.ts b/tokens/create-token/steel/tests/bankrun.test.ts deleted file mode 100644 index 46c397aa1..000000000 --- a/tokens/create-token/steel/tests/bankrun.test.ts +++ /dev/null @@ -1,123 +0,0 @@ -import { Buffer } from 'node:buffer'; -import { describe, test } from 'node:test'; -import { PROGRAM_ID as TOKEN_METADATA_PROGRAM_ID } from '@metaplex-foundation/mpl-token-metadata'; -import { ASSOCIATED_TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID, getAssociatedTokenAddressSync } from '@solana/spl-token'; -import { Keypair, PublicKey, SYSVAR_RENT_PUBKEY, SystemProgram, Transaction, TransactionInstruction } from '@solana/web3.js'; -import { start } from 'solana-bankrun'; -import { CreateTokenArgs } from './instructions'; - -describe('Create Tokens!', async () => { - const PROGRAM_ID = new PublicKey('z7msBPQHDJjTvdQRoEcKyENgXDhSRYeHieN1ZMTqo35'); - const context = await start( - [ - { name: 'steel_program', programId: PROGRAM_ID }, - { name: 'token_metadata', programId: TOKEN_METADATA_PROGRAM_ID }, - ], - [], - ); - const client = context.banksClient; - const payer = context.payer; - - const tokenMintKeypair: Keypair = Keypair.generate(); - const nftMintKeypair: Keypair = Keypair.generate(); - - test('Create an SPL Token!', async () => { - const metadataPDA = PublicKey.findProgramAddressSync( - [Buffer.from('metadata'), TOKEN_METADATA_PROGRAM_ID.toBuffer(), tokenMintKeypair.publicKey.toBuffer()], - TOKEN_METADATA_PROGRAM_ID, - )[0]; - - // SPL Token default = 9 decimals - // - const createArgs = new CreateTokenArgs( - 'Solana Gold', - 'GOLDSOL', - 'https://raw.githubusercontent.com/solana-developers/program-examples/new-examples/tokens/tokens/.assets/spl-token.json', - 9, - ); - - const createTokenIx = new TransactionInstruction({ - keys: [ - { pubkey: payer.publicKey, isSigner: true, isWritable: true }, - { - pubkey: tokenMintKeypair.publicKey, - isSigner: true, - isWritable: true, - }, - { pubkey: metadataPDA, isSigner: false, isWritable: true }, - { - pubkey: SystemProgram.programId, - isSigner: false, - isWritable: false, - }, - { pubkey: TOKEN_PROGRAM_ID, isSigner: false, isWritable: false }, - { - pubkey: TOKEN_METADATA_PROGRAM_ID, - isSigner: false, - isWritable: false, - }, - { pubkey: SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false }, - ], - programId: PROGRAM_ID, - data: createArgs.toBuffer(), - }); - - const tx = new Transaction(); - const [blockhash, _] = await client.getLatestBlockhash(); - tx.recentBlockhash = blockhash; - tx.add(createTokenIx).sign(payer, tokenMintKeypair); - - await client.processTransaction(tx); - - console.log('Success!'); - console.log(`Mint Address: ${tokenMintKeypair.publicKey}`); - }); - - test('Create an NFT!', async () => { - const metadataPDA = PublicKey.findProgramAddressSync( - [Buffer.from('metadata'), TOKEN_METADATA_PROGRAM_ID.toBuffer(), nftMintKeypair.publicKey.toBuffer()], - TOKEN_METADATA_PROGRAM_ID, - )[0]; - - // NFT default = 0 decimals - // - const createArgs = new CreateTokenArgs( - 'Homer NFT', - 'HOMR', - 'https://raw.githubusercontent.com/solana-developers/program-examples/new-examples/tokens/tokens/.assets/nft.json', - 0, - ); - - const createTokenIx = new TransactionInstruction({ - keys: [ - { pubkey: payer.publicKey, isSigner: true, isWritable: true }, - { pubkey: nftMintKeypair.publicKey, isSigner: true, isWritable: true }, - { pubkey: metadataPDA, isSigner: false, isWritable: true }, - { - pubkey: SystemProgram.programId, - isSigner: false, - isWritable: false, - }, - { pubkey: TOKEN_PROGRAM_ID, isSigner: false, isWritable: false }, - { - pubkey: TOKEN_METADATA_PROGRAM_ID, - isSigner: false, - isWritable: false, - }, - { pubkey: SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false }, - ], - programId: PROGRAM_ID, - data: createArgs.toBuffer(), - }); - - const tx = new Transaction(); - const [blockhash, _] = await client.getLatestBlockhash(); - tx.recentBlockhash = blockhash; - tx.add(createTokenIx).sign(payer, nftMintKeypair); - - await client.processTransaction(tx); - - console.log('Success!'); - console.log(`Mint Address: ${nftMintKeypair.publicKey}`); - }); -}); diff --git a/tokens/create-token/steel/tests/instructions.ts b/tokens/create-token/steel/tests/instructions.ts deleted file mode 100644 index 02c070630..000000000 --- a/tokens/create-token/steel/tests/instructions.ts +++ /dev/null @@ -1,61 +0,0 @@ -class Assignable { - constructor(properties) { - for (const [key, value] of Object.entries(properties)) { - this[key] = value; - } - } -} - -// Helper function to pad strings to fixed length buffers -function strToBytes(str: string, length: number): Buffer { - const buffer = Buffer.alloc(length); - buffer.write(str); - return buffer; -} - -export enum CreateTokenInstruction { - Create = 0, -} - -export class CreateTokenArgs { - instruction: number; - name: Buffer; - symbol: Buffer; - uri: Buffer; - decimals: number; - - constructor(name: string, symbol: string, uri: string, decimals: number) { - this.instruction = CreateTokenInstruction.Create; - this.name = strToBytes(name, 32); - this.symbol = strToBytes(symbol, 8); - this.uri = strToBytes(uri, 128); - this.decimals = decimals; - } - - toBuffer(): Buffer { - // Added 1 byte for decimals to the total buffer size - const buffer = Buffer.alloc(1 + 32 + 8 + 128 + 1); - let offset = 0; - - // Write instruction - buffer.writeUInt8(this.instruction, offset); - offset += 1; - - // Write name - this.name.copy(buffer, offset); - offset += 32; - - // Write symbol - this.symbol.copy(buffer, offset); - offset += 8; - - // Write uri - this.uri.copy(buffer, offset); - offset += 128; - - // Write decimals - buffer.writeUInt8(this.decimals, offset); - - return buffer; - } -} diff --git a/tokens/create-token/steel/tsconfig.json b/tokens/create-token/steel/tsconfig.json deleted file mode 100644 index cd5d2e3d0..000000000 --- a/tokens/create-token/steel/tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "compilerOptions": { - "types": ["mocha", "chai"], - "typeRoots": ["./node_modules/@types"], - "lib": ["es2015"], - "module": "commonjs", - "target": "es6", - "esModuleInterop": true - } -} diff --git a/tokens/escrow/steel/Cargo.toml b/tokens/escrow/steel/Cargo.toml deleted file mode 100644 index 3a05c7748..000000000 --- a/tokens/escrow/steel/Cargo.toml +++ /dev/null @@ -1,22 +0,0 @@ -[workspace] -resolver = "2" -members = ["api", "program"] - -[workspace.package] -version = "0.1.0" -edition = "2021" -license = "Apache-2.0" -homepage = "" -documentation = "" -repository = "" -readme = "./README.md" -keywords = ["solana"] - -[workspace.dependencies] -escrow-api = { path = "./api", version = "0.1.0" } -bytemuck = "1.14" -num_enum = "0.7" -solana-program = "2.1" -steel = { version = "3.0", features = ["spl"] } -thiserror = "1.0" -spl-token = "^4" diff --git a/tokens/escrow/steel/README.md b/tokens/escrow/steel/README.md deleted file mode 100644 index 18955045d..000000000 --- a/tokens/escrow/steel/README.md +++ /dev/null @@ -1,40 +0,0 @@ -# Escrow - -**Escrow** is a ... - -## API -- [`Consts`](api/src/consts.rs) – Program constants. -- [`Instruction`](api/src/instruction.rs) – Declared instructions. - -## Instructions -- [`MakeOffer`](program/src/make_offer.rs) – Make an offer ... -- [`TakerOffer`](program/src/take_offer.rs) – Take an offer ... - -## State -- [`Offer`](api/src/state/offer.rs) – Offer state ... - -## How to? - -Compile your program: - -```sh -pnpm build -``` - -Run tests: - -```sh -pnpm test -``` - -Run build and test - -```sh -pnpm build-and-test -``` - -Deploy your program: - -```sh -pnpm deploy -``` diff --git a/tokens/escrow/steel/api/Cargo.toml b/tokens/escrow/steel/api/Cargo.toml deleted file mode 100644 index 83cb3ecb4..000000000 --- a/tokens/escrow/steel/api/Cargo.toml +++ /dev/null @@ -1,19 +0,0 @@ -[package] -name = "escrow-api" -description = "API for interacting with the Escrow program" -version.workspace = true -edition.workspace = true -license.workspace = true -homepage.workspace = true -documentation.workspace = true -repository.workspace = true -readme.workspace = true -keywords.workspace = true - -[dependencies] -bytemuck.workspace = true -num_enum.workspace = true -solana-program.workspace = true -steel.workspace = true -thiserror.workspace = true -spl-token.workspace = true diff --git a/tokens/escrow/steel/api/src/consts.rs b/tokens/escrow/steel/api/src/consts.rs deleted file mode 100644 index a072bddee..000000000 --- a/tokens/escrow/steel/api/src/consts.rs +++ /dev/null @@ -1,8 +0,0 @@ -use solana_program::pubkey; -use steel::Pubkey; - -/// Seed of the offer account PDA. -pub const OFFER_SEED: &[u8] = b"offer"; - -pub const ASSOCIATED_TOKEN_PROGRAM_ID: Pubkey = - pubkey!("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"); diff --git a/tokens/escrow/steel/api/src/instruction.rs b/tokens/escrow/steel/api/src/instruction.rs deleted file mode 100644 index 95ee62862..000000000 --- a/tokens/escrow/steel/api/src/instruction.rs +++ /dev/null @@ -1,23 +0,0 @@ -use steel::*; - -#[repr(u8)] -#[derive(Clone, Copy, Debug, Eq, PartialEq, TryFromPrimitive)] -pub enum EscrowInstruction { - MakeOffer = 0, - TakerOffer = 1, -} - -#[repr(C)] -#[derive(Clone, Copy, Debug, Pod, Zeroable)] -pub struct MakeOffer { - pub id: [u8; 8], - pub token_a_offered_amount: [u8; 8], - pub token_b_wanted_amount: [u8; 8], -} - -#[repr(C)] -#[derive(Clone, Copy, Debug, Pod, Zeroable)] -pub struct TakerOffer {} - -instruction!(EscrowInstruction, MakeOffer); -instruction!(EscrowInstruction, TakerOffer); diff --git a/tokens/escrow/steel/api/src/lib.rs b/tokens/escrow/steel/api/src/lib.rs deleted file mode 100644 index 6db8ac73d..000000000 --- a/tokens/escrow/steel/api/src/lib.rs +++ /dev/null @@ -1,16 +0,0 @@ -pub mod consts; -pub mod instruction; -pub mod sdk; -pub mod state; - -pub mod prelude { - pub use crate::consts::*; - pub use crate::instruction::*; - pub use crate::sdk::*; - pub use crate::state::*; -} - -use steel::*; - -// TODO Set program id -declare_id!("z7msBPQHDJjTvdQRoEcKyENgXDhSRYeHieN1ZMTqo35"); diff --git a/tokens/escrow/steel/api/src/sdk.rs b/tokens/escrow/steel/api/src/sdk.rs deleted file mode 100644 index 3960a5a79..000000000 --- a/tokens/escrow/steel/api/src/sdk.rs +++ /dev/null @@ -1,86 +0,0 @@ -use steel::*; - -use crate::prelude::*; - -pub fn make_offer( - maker: Pubkey, - mint_a: Pubkey, - mint_b: Pubkey, - id: u64, - token_a_offered_amount: u64, - token_b_wanted_amount: u64, -) -> Instruction { - let (maker_token_account_a, _) = Pubkey::find_program_address( - &[maker.as_ref(), spl_token::ID.as_ref(), mint_a.as_ref()], - &spl_token::ID, - ); - - let offer = offer_pda(maker, id).0; - let (vault, _) = Pubkey::find_program_address( - &[offer.as_ref(), spl_token::ID.as_ref(), mint_a.as_ref()], - &spl_token::ID, - ); - Instruction { - program_id: crate::ID, - accounts: vec![ - AccountMeta::new(maker, true), - AccountMeta::new_readonly(mint_a, false), - AccountMeta::new_readonly(mint_b, false), - AccountMeta::new(maker_token_account_a, false), - AccountMeta::new(offer, false), - AccountMeta::new(vault, false), - AccountMeta::new_readonly(spl_token::ID, false), - AccountMeta::new_readonly(system_program::ID, false), - AccountMeta::new_readonly(ASSOCIATED_TOKEN_PROGRAM_ID, false), - ], - data: MakeOffer { - id: id.to_le_bytes(), - token_a_offered_amount: token_a_offered_amount.to_le_bytes(), - token_b_wanted_amount: token_b_wanted_amount.to_le_bytes(), - } - .to_bytes(), - } -} - -pub fn take_offer( - taker: Pubkey, - maker: Pubkey, - mint_a: Pubkey, - mint_b: Pubkey, - offer: Pubkey, -) -> Instruction { - let (taker_token_account_a, _) = Pubkey::find_program_address( - &[taker.as_ref(), spl_token::ID.as_ref(), mint_a.as_ref()], - &spl_token::ID, - ); - let (taker_token_account_b, _) = Pubkey::find_program_address( - &[taker.as_ref(), spl_token::ID.as_ref(), mint_b.as_ref()], - &spl_token::ID, - ); - let (maker_token_account_b, _) = Pubkey::find_program_address( - &[maker.as_ref(), spl_token::ID.as_ref(), mint_b.as_ref()], - &spl_token::ID, - ); - let (vault, _) = Pubkey::find_program_address( - &[offer.as_ref(), spl_token::ID.as_ref(), mint_a.as_ref()], - &spl_token::ID, - ); - Instruction { - program_id: crate::ID, - accounts: vec![ - AccountMeta::new(taker, true), - AccountMeta::new(maker, false), - AccountMeta::new_readonly(mint_a, false), - AccountMeta::new_readonly(mint_b, false), - AccountMeta::new(taker_token_account_a, false), - AccountMeta::new(taker_token_account_b, false), - AccountMeta::new(maker_token_account_b, false), - AccountMeta::new(offer, false), - AccountMeta::new(vault, false), - AccountMeta::new_readonly(spl_token::ID, false), - AccountMeta::new_readonly(system_program::ID, false), - AccountMeta::new_readonly(ASSOCIATED_TOKEN_PROGRAM_ID, false), - ], - data: TakerOffer {}.to_bytes(), - } -} diff --git a/tokens/escrow/steel/api/src/state/mod.rs b/tokens/escrow/steel/api/src/state/mod.rs deleted file mode 100644 index bffcf64b4..000000000 --- a/tokens/escrow/steel/api/src/state/mod.rs +++ /dev/null @@ -1,11 +0,0 @@ -mod offer; - -pub use offer::*; - -use steel::*; - -#[repr(u8)] -#[derive(Clone, Copy, Debug, Eq, PartialEq, IntoPrimitive, TryFromPrimitive)] -pub enum EscrowAccount { - Offer = 0, -} diff --git a/tokens/escrow/steel/api/src/state/offer.rs b/tokens/escrow/steel/api/src/state/offer.rs deleted file mode 100644 index 617866d85..000000000 --- a/tokens/escrow/steel/api/src/state/offer.rs +++ /dev/null @@ -1,26 +0,0 @@ -use steel::*; - -use crate::consts::OFFER_SEED; - -use super::EscrowAccount; - -/// Fetch PDA of the counter account. -pub fn offer_pda(maker: Pubkey, id: u64) -> (Pubkey, u8) { - Pubkey::find_program_address( - &[OFFER_SEED, maker.as_ref(), id.to_le_bytes().as_ref()], - &crate::id(), - ) -} - -#[repr(C)] -#[derive(Clone, Copy, Debug, PartialEq, Pod, Zeroable)] -pub struct Offer { - pub id: [u8; 8], - pub maker: Pubkey, - pub token_mint_a: Pubkey, - pub token_mint_b: Pubkey, - pub token_b_wanted_amount: [u8; 8], - pub bump: u8, -} - -account!(EscrowAccount, Offer); diff --git a/tokens/escrow/steel/package.json b/tokens/escrow/steel/package.json deleted file mode 100644 index 5f23801cb..000000000 --- a/tokens/escrow/steel/package.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "name": "steel", - "version": "1.0.0", - "description": "", - "main": "index.js", - "scripts": { - "test": "pnpm ts-mocha -p ./tsconfig.json -t 1000000 ./tests/*.test.ts", - "build-and-test": "cargo build-sbf --manifest-path=./program/Cargo.toml --sbf-out-dir=./tests/fixtures && pnpm test", - "build": "cargo build-sbf --manifest-path=./program/Cargo.toml --sbf-out-dir=./program/target/so", - "deploy": "solana program deploy ./program/target/so/account_data_program.so" - }, - "keywords": [], - "author": "Leo Pham ", - "license": "ISC", - "dependencies": { - "@solana/spl-token": "^0.4.9", - "@solana/web3.js": "^1.95.4", - "bs58": "^6.0.0" - }, - "devDependencies": { - "@types/chai": "^4.3.7", - "@types/mocha": "^10.0.9", - "@types/node": "^22.7.9", - "borsh": "^2.0.0", - "chai": "^4.3.7", - "mocha": "^10.7.3", - "solana-bankrun": "^0.4.0", - "ts-mocha": "^10.0.0", - "typescript": "^5.6.3" - } -} diff --git a/tokens/escrow/steel/pnpm-lock.yaml b/tokens/escrow/steel/pnpm-lock.yaml deleted file mode 100644 index a5ea70d28..000000000 --- a/tokens/escrow/steel/pnpm-lock.yaml +++ /dev/null @@ -1,1463 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -importers: - - .: - dependencies: - '@solana/spl-token': - specifier: ^0.4.9 - version: 0.4.9(@solana/web3.js@1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) - '@solana/web3.js': - specifier: ^1.95.4 - version: 1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) - bs58: - specifier: ^6.0.0 - version: 6.0.0 - devDependencies: - '@types/chai': - specifier: ^4.3.7 - version: 4.3.20 - '@types/mocha': - specifier: ^10.0.9 - version: 10.0.9 - '@types/node': - specifier: ^22.7.9 - version: 22.8.1 - borsh: - specifier: ^2.0.0 - version: 2.0.0 - chai: - specifier: ^4.3.7 - version: 4.5.0 - mocha: - specifier: ^10.7.3 - version: 10.7.3 - solana-bankrun: - specifier: ^0.4.0 - version: 0.4.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - ts-mocha: - specifier: ^10.0.0 - version: 10.0.0(mocha@10.7.3) - typescript: - specifier: ^5.6.3 - version: 5.6.3 - -packages: - - '@babel/runtime@7.26.0': - resolution: {integrity: sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==} - engines: {node: '>=6.9.0'} - - '@noble/curves@1.6.0': - resolution: {integrity: sha512-TlaHRXDehJuRNR9TfZDNQ45mMEd5dwUwmicsafcIX4SsNiqnCHKjE/1alYPd/lDRVhxdhUAlv8uEhMCI5zjIJQ==} - engines: {node: ^14.21.3 || >=16} - - '@noble/hashes@1.5.0': - resolution: {integrity: sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==} - engines: {node: ^14.21.3 || >=16} - - '@solana/buffer-layout-utils@0.2.0': - resolution: {integrity: sha512-szG4sxgJGktbuZYDg2FfNmkMi0DYQoVjN2h7ta1W1hPrwzarcFLBq9UpX1UjNXsNpT9dn+chgprtWGioUAr4/g==} - engines: {node: '>= 10'} - - '@solana/buffer-layout@4.0.1': - resolution: {integrity: sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==} - engines: {node: '>=5.10'} - - '@solana/codecs-core@2.0.0-rc.1': - resolution: {integrity: sha512-bauxqMfSs8EHD0JKESaNmNuNvkvHSuN3bbWAF5RjOfDu2PugxHrvRebmYauvSumZ3cTfQ4HJJX6PG5rN852qyQ==} - peerDependencies: - typescript: '>=5' - - '@solana/codecs-data-structures@2.0.0-rc.1': - resolution: {integrity: sha512-rinCv0RrAVJ9rE/rmaibWJQxMwC5lSaORSZuwjopSUE6T0nb/MVg6Z1siNCXhh/HFTOg0l8bNvZHgBcN/yvXog==} - peerDependencies: - typescript: '>=5' - - '@solana/codecs-numbers@2.0.0-rc.1': - resolution: {integrity: sha512-J5i5mOkvukXn8E3Z7sGIPxsThRCgSdgTWJDQeZvucQ9PT6Y3HiVXJ0pcWiOWAoQ3RX8e/f4I3IC+wE6pZiJzDQ==} - peerDependencies: - typescript: '>=5' - - '@solana/codecs-strings@2.0.0-rc.1': - resolution: {integrity: sha512-9/wPhw8TbGRTt6mHC4Zz1RqOnuPTqq1Nb4EyuvpZ39GW6O2t2Q7Q0XxiB3+BdoEjwA2XgPw6e2iRfvYgqty44g==} - peerDependencies: - fastestsmallesttextencoderdecoder: ^1.0.22 - typescript: '>=5' - - '@solana/codecs@2.0.0-rc.1': - resolution: {integrity: sha512-qxoR7VybNJixV51L0G1RD2boZTcxmwUWnKCaJJExQ5qNKwbpSyDdWfFJfM5JhGyKe9DnPVOZB+JHWXnpbZBqrQ==} - peerDependencies: - typescript: '>=5' - - '@solana/errors@2.0.0-rc.1': - resolution: {integrity: sha512-ejNvQ2oJ7+bcFAYWj225lyRkHnixuAeb7RQCixm+5mH4n1IA4Qya/9Bmfy5RAAHQzxK43clu3kZmL5eF9VGtYQ==} - hasBin: true - peerDependencies: - typescript: '>=5' - - '@solana/options@2.0.0-rc.1': - resolution: {integrity: sha512-mLUcR9mZ3qfHlmMnREdIFPf9dpMc/Bl66tLSOOWxw4ml5xMT2ohFn7WGqoKcu/UHkT9CrC6+amEdqCNvUqI7AA==} - peerDependencies: - typescript: '>=5' - - '@solana/spl-token-group@0.0.7': - resolution: {integrity: sha512-V1N/iX7Cr7H0uazWUT2uk27TMqlqedpXHRqqAbVO2gvmJyT0E0ummMEAVQeXZ05ZhQ/xF39DLSdBp90XebWEug==} - engines: {node: '>=16'} - peerDependencies: - '@solana/web3.js': ^1.95.3 - - '@solana/spl-token-metadata@0.1.6': - resolution: {integrity: sha512-7sMt1rsm/zQOQcUWllQX9mD2O6KhSAtY1hFR2hfFwgqfFWzSY9E9GDvFVNYUI1F0iQKcm6HmePU9QbKRXTEBiA==} - engines: {node: '>=16'} - peerDependencies: - '@solana/web3.js': ^1.95.3 - - '@solana/spl-token@0.4.9': - resolution: {integrity: sha512-g3wbj4F4gq82YQlwqhPB0gHFXfgsC6UmyGMxtSLf/BozT/oKd59465DbnlUK8L8EcimKMavxsVAMoLcEdeCicg==} - engines: {node: '>=16'} - peerDependencies: - '@solana/web3.js': ^1.95.3 - - '@solana/web3.js@1.95.4': - resolution: {integrity: sha512-sdewnNEA42ZSMxqkzdwEWi6fDgzwtJHaQa5ndUGEJYtoOnM6X5cvPmjoTUp7/k7bRrVAxfBgDnvQQHD6yhlLYw==} - - '@swc/helpers@0.5.13': - resolution: {integrity: sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==} - - '@types/chai@4.3.20': - resolution: {integrity: sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==} - - '@types/connect@3.4.38': - resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} - - '@types/json5@0.0.29': - resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - - '@types/mocha@10.0.9': - resolution: {integrity: sha512-sicdRoWtYevwxjOHNMPTl3vSfJM6oyW8o1wXeI7uww6b6xHg8eBznQDNSGBCDJmsE8UMxP05JgZRtsKbTqt//Q==} - - '@types/node@12.20.55': - resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - - '@types/node@22.8.1': - resolution: {integrity: sha512-k6Gi8Yyo8EtrNtkHXutUu2corfDf9su95VYVP10aGYMMROM6SAItZi0w1XszA6RtWTHSVp5OeFof37w0IEqCQg==} - - '@types/uuid@8.3.4': - resolution: {integrity: sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==} - - '@types/ws@7.4.7': - resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==} - - '@types/ws@8.5.12': - resolution: {integrity: sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==} - - JSONStream@1.3.5: - resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} - hasBin: true - - agentkeepalive@4.5.0: - resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} - engines: {node: '>= 8.0.0'} - - ansi-colors@4.1.3: - resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} - engines: {node: '>=6'} - - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - - argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - - arrify@1.0.1: - resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} - engines: {node: '>=0.10.0'} - - assertion-error@1.1.0: - resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} - - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - base-x@3.0.10: - resolution: {integrity: sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==} - - base-x@5.0.0: - resolution: {integrity: sha512-sMW3VGSX1QWVFA6l8U62MLKz29rRfpTlYdCqLdpLo1/Yd4zZwSbnUaDfciIAowAqvq7YFnWq9hrhdg1KYgc1lQ==} - - base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - - bigint-buffer@1.1.5: - resolution: {integrity: sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA==} - engines: {node: '>= 10.0.0'} - - bignumber.js@9.1.2: - resolution: {integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==} - - binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} - - bindings@1.5.0: - resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} - - bn.js@5.2.1: - resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} - - borsh@0.7.0: - resolution: {integrity: sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==} - - borsh@2.0.0: - resolution: {integrity: sha512-kc9+BgR3zz9+cjbwM8ODoUB4fs3X3I5A/HtX7LZKxCLaMrEeDFoBpnhZY//DTS1VZBSs6S5v46RZRbZjRFspEg==} - - brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - - braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} - - browser-stdout@1.3.1: - resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} - - bs58@4.0.1: - resolution: {integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==} - - bs58@6.0.0: - resolution: {integrity: sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw==} - - buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - - buffer@6.0.3: - resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} - - bufferutil@4.0.8: - resolution: {integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==} - engines: {node: '>=6.14.2'} - - camelcase@6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} - - chai@4.5.0: - resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==} - engines: {node: '>=4'} - - chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - - chalk@5.3.0: - resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - - check-error@1.0.3: - resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} - - chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} - - cliui@7.0.4: - resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} - - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - commander@12.1.0: - resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} - engines: {node: '>=18'} - - commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - - debug@4.3.7: - resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - decamelize@4.0.0: - resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} - engines: {node: '>=10'} - - deep-eql@4.1.4: - resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==} - engines: {node: '>=6'} - - delay@5.0.0: - resolution: {integrity: sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==} - engines: {node: '>=10'} - - diff@3.5.0: - resolution: {integrity: sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==} - engines: {node: '>=0.3.1'} - - diff@5.2.0: - resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} - engines: {node: '>=0.3.1'} - - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - - es6-promise@4.2.8: - resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} - - es6-promisify@5.0.0: - resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==} - - escalade@3.2.0: - resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} - engines: {node: '>=6'} - - escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - - eventemitter3@5.0.1: - resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} - - eyes@0.1.8: - resolution: {integrity: sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==} - engines: {node: '> 0.1.90'} - - fast-stable-stringify@1.0.0: - resolution: {integrity: sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==} - - fastestsmallesttextencoderdecoder@1.0.22: - resolution: {integrity: sha512-Pb8d48e+oIuY4MaM64Cd7OW1gt4nxCHs7/ddPPZ/Ic3sg8yVGM7O9wDvZ7us6ScaUupzM+pfBolwtYhN1IxBIw==} - - file-uri-to-path@1.0.0: - resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} - - fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} - - find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - - flat@5.0.2: - resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} - hasBin: true - - fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - - get-func-name@2.0.2: - resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} - - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - - glob@8.1.0: - resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} - engines: {node: '>=12'} - deprecated: Glob versions prior to v9 are no longer supported - - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - - he@1.2.0: - resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} - hasBin: true - - humanize-ms@1.2.1: - resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} - - ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - - inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. - - inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - - is-plain-obj@2.1.0: - resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} - engines: {node: '>=8'} - - is-unicode-supported@0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} - engines: {node: '>=10'} - - isomorphic-ws@4.0.1: - resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==} - peerDependencies: - ws: '*' - - jayson@4.1.2: - resolution: {integrity: sha512-5nzMWDHy6f+koZOuYsArh2AXs73NfWYVlFyJJuCedr93GpY+Ku8qq10ropSXVfHK+H0T6paA88ww+/dV+1fBNA==} - engines: {node: '>=8'} - hasBin: true - - js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true - - json-stringify-safe@5.0.1: - resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} - - json5@1.0.2: - resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} - hasBin: true - - jsonparse@1.3.1: - resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} - engines: {'0': node >= 0.2.0} - - locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - - log-symbols@4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} - engines: {node: '>=10'} - - loupe@2.3.7: - resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} - - make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - - minimatch@5.1.6: - resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} - engines: {node: '>=10'} - - minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - - mkdirp@0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} - hasBin: true - - mocha@10.7.3: - resolution: {integrity: sha512-uQWxAu44wwiACGqjbPYmjo7Lg8sFrS3dQe7PP2FQI+woptP4vZXSMcfMyFL/e1yFEeEpV4RtyTpZROOKmxis+A==} - engines: {node: '>= 14.0.0'} - hasBin: true - - ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - - node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - - node-gyp-build@4.8.2: - resolution: {integrity: sha512-IRUxE4BVsHWXkV/SFOut4qTlagw2aM8T5/vnTsmrHJvVoKueJHRc/JaFND7QDDc61kLYUJ6qlZM3sqTSyx2dTw==} - hasBin: true - - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - - once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - - p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - - p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - - path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - - pathval@1.1.1: - resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} - - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - - randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - - regenerator-runtime@0.14.1: - resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - - require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - - rpc-websockets@9.0.4: - resolution: {integrity: sha512-yWZWN0M+bivtoNLnaDbtny4XchdAIF5Q4g/ZsC5UC61Ckbp0QczwO8fg44rV3uYmY4WHd+EZQbn90W1d8ojzqQ==} - - safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - - serialize-javascript@6.0.2: - resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} - - solana-bankrun-darwin-arm64@0.4.0: - resolution: {integrity: sha512-6dz78Teoz7ez/3lpRLDjktYLJb79FcmJk2me4/YaB8WiO6W43OdExU4h+d2FyuAryO2DgBPXaBoBNY/8J1HJmw==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - - solana-bankrun-darwin-universal@0.4.0: - resolution: {integrity: sha512-zSSw/Jx3KNU42pPMmrEWABd0nOwGJfsj7nm9chVZ3ae7WQg3Uty0hHAkn5NSDCj3OOiN0py9Dr1l9vmRJpOOxg==} - engines: {node: '>= 10'} - os: [darwin] - - solana-bankrun-darwin-x64@0.4.0: - resolution: {integrity: sha512-LWjs5fsgHFtyr7YdJR6r0Ho5zrtzI6CY4wvwPXr8H2m3b4pZe6RLIZjQtabCav4cguc14G0K8yQB2PTMuGub8w==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - - solana-bankrun-linux-x64-gnu@0.4.0: - resolution: {integrity: sha512-SrlVrb82UIxt21Zr/XZFHVV/h9zd2/nP25PMpLJVLD7Pgl2yhkhfi82xj3OjxoQqWe+zkBJ+uszA0EEKr67yNw==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - solana-bankrun-linux-x64-musl@0.4.0: - resolution: {integrity: sha512-Nv328ZanmURdYfcLL+jwB1oMzX4ZzK57NwIcuJjGlf0XSNLq96EoaO5buEiUTo4Ls7MqqMyLbClHcrPE7/aKyA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - solana-bankrun@0.4.0: - resolution: {integrity: sha512-NMmXUipPBkt8NgnyNO3SCnPERP6xT/AMNMBooljGA3+rG6NN8lmXJsKeLqQTiFsDeWD74U++QM/DgcueSWvrIg==} - engines: {node: '>= 10'} - - source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - - source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - - strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - - strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - - superstruct@2.0.2: - resolution: {integrity: sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A==} - engines: {node: '>=14.0.0'} - - supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - - supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} - - text-encoding-utf-8@1.0.2: - resolution: {integrity: sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==} - - through@2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - - tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - - ts-mocha@10.0.0: - resolution: {integrity: sha512-VRfgDO+iiuJFlNB18tzOfypJ21xn2xbuZyDvJvqpTbWgkAgD17ONGr8t+Tl8rcBtOBdjXp5e/Rk+d39f7XBHRw==} - engines: {node: '>= 6.X.X'} - hasBin: true - peerDependencies: - mocha: ^3.X.X || ^4.X.X || ^5.X.X || ^6.X.X || ^7.X.X || ^8.X.X || ^9.X.X || ^10.X.X - - ts-node@7.0.1: - resolution: {integrity: sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==} - engines: {node: '>=4.2.0'} - hasBin: true - - tsconfig-paths@3.15.0: - resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} - - tslib@2.8.0: - resolution: {integrity: sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==} - - type-detect@4.1.0: - resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==} - engines: {node: '>=4'} - - typescript@5.6.3: - resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} - engines: {node: '>=14.17'} - hasBin: true - - undici-types@6.19.8: - resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} - - utf-8-validate@5.0.10: - resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==} - engines: {node: '>=6.14.2'} - - uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - hasBin: true - - webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - - whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - - workerpool@6.5.1: - resolution: {integrity: sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==} - - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - - wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - - ws@7.5.10: - resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} - engines: {node: '>=8.3.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - ws@8.18.0: - resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - - yargs-parser@20.2.9: - resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} - engines: {node: '>=10'} - - yargs-unparser@2.0.0: - resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} - engines: {node: '>=10'} - - yargs@16.2.0: - resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} - engines: {node: '>=10'} - - yn@2.0.0: - resolution: {integrity: sha512-uTv8J/wiWTgUTg+9vLTi//leUl5vDQS6uii/emeTb2ssY7vl6QWf2fFbIIGjnhjvbdKlU0ed7QPgY1htTC86jQ==} - engines: {node: '>=4'} - - yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - -snapshots: - - '@babel/runtime@7.26.0': - dependencies: - regenerator-runtime: 0.14.1 - - '@noble/curves@1.6.0': - dependencies: - '@noble/hashes': 1.5.0 - - '@noble/hashes@1.5.0': {} - - '@solana/buffer-layout-utils@0.2.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)': - dependencies: - '@solana/buffer-layout': 4.0.1 - '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) - bigint-buffer: 1.1.5 - bignumber.js: 9.1.2 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - - '@solana/buffer-layout@4.0.1': - dependencies: - buffer: 6.0.3 - - '@solana/codecs-core@2.0.0-rc.1(typescript@5.6.3)': - dependencies: - '@solana/errors': 2.0.0-rc.1(typescript@5.6.3) - typescript: 5.6.3 - - '@solana/codecs-data-structures@2.0.0-rc.1(typescript@5.6.3)': - dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@5.6.3) - '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.6.3) - '@solana/errors': 2.0.0-rc.1(typescript@5.6.3) - typescript: 5.6.3 - - '@solana/codecs-numbers@2.0.0-rc.1(typescript@5.6.3)': - dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@5.6.3) - '@solana/errors': 2.0.0-rc.1(typescript@5.6.3) - typescript: 5.6.3 - - '@solana/codecs-strings@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)': - dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@5.6.3) - '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.6.3) - '@solana/errors': 2.0.0-rc.1(typescript@5.6.3) - fastestsmallesttextencoderdecoder: 1.0.22 - typescript: 5.6.3 - - '@solana/codecs@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)': - dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@5.6.3) - '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@5.6.3) - '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.6.3) - '@solana/codecs-strings': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) - '@solana/options': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) - typescript: 5.6.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/errors@2.0.0-rc.1(typescript@5.6.3)': - dependencies: - chalk: 5.3.0 - commander: 12.1.0 - typescript: 5.6.3 - - '@solana/options@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)': - dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@5.6.3) - '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@5.6.3) - '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.6.3) - '@solana/codecs-strings': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) - '@solana/errors': 2.0.0-rc.1(typescript@5.6.3) - typescript: 5.6.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/spl-token-group@0.0.7(@solana/web3.js@1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)': - dependencies: - '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) - '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - typescript - - '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)': - dependencies: - '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) - '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - typescript - - '@solana/spl-token@0.4.9(@solana/web3.js@1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': - dependencies: - '@solana/buffer-layout': 4.0.1 - '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - '@solana/spl-token-group': 0.0.7(@solana/web3.js@1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) - '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) - buffer: 6.0.3 - transitivePeerDependencies: - - bufferutil - - encoding - - fastestsmallesttextencoderdecoder - - typescript - - utf-8-validate - - '@solana/web3.js@1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10)': - dependencies: - '@babel/runtime': 7.26.0 - '@noble/curves': 1.6.0 - '@noble/hashes': 1.5.0 - '@solana/buffer-layout': 4.0.1 - agentkeepalive: 4.5.0 - bigint-buffer: 1.1.5 - bn.js: 5.2.1 - borsh: 0.7.0 - bs58: 4.0.1 - buffer: 6.0.3 - fast-stable-stringify: 1.0.0 - jayson: 4.1.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) - node-fetch: 2.7.0 - rpc-websockets: 9.0.4 - superstruct: 2.0.2 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - - '@swc/helpers@0.5.13': - dependencies: - tslib: 2.8.0 - - '@types/chai@4.3.20': {} - - '@types/connect@3.4.38': - dependencies: - '@types/node': 22.8.1 - - '@types/json5@0.0.29': - optional: true - - '@types/mocha@10.0.9': {} - - '@types/node@12.20.55': {} - - '@types/node@22.8.1': - dependencies: - undici-types: 6.19.8 - - '@types/uuid@8.3.4': {} - - '@types/ws@7.4.7': - dependencies: - '@types/node': 22.8.1 - - '@types/ws@8.5.12': - dependencies: - '@types/node': 22.8.1 - - JSONStream@1.3.5: - dependencies: - jsonparse: 1.3.1 - through: 2.3.8 - - agentkeepalive@4.5.0: - dependencies: - humanize-ms: 1.2.1 - - ansi-colors@4.1.3: {} - - ansi-regex@5.0.1: {} - - ansi-styles@4.3.0: - dependencies: - color-convert: 2.0.1 - - anymatch@3.1.3: - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - - argparse@2.0.1: {} - - arrify@1.0.1: {} - - assertion-error@1.1.0: {} - - balanced-match@1.0.2: {} - - base-x@3.0.10: - dependencies: - safe-buffer: 5.2.1 - - base-x@5.0.0: {} - - base64-js@1.5.1: {} - - bigint-buffer@1.1.5: - dependencies: - bindings: 1.5.0 - - bignumber.js@9.1.2: {} - - binary-extensions@2.3.0: {} - - bindings@1.5.0: - dependencies: - file-uri-to-path: 1.0.0 - - bn.js@5.2.1: {} - - borsh@0.7.0: - dependencies: - bn.js: 5.2.1 - bs58: 4.0.1 - text-encoding-utf-8: 1.0.2 - - borsh@2.0.0: {} - - brace-expansion@2.0.1: - dependencies: - balanced-match: 1.0.2 - - braces@3.0.3: - dependencies: - fill-range: 7.1.1 - - browser-stdout@1.3.1: {} - - bs58@4.0.1: - dependencies: - base-x: 3.0.10 - - bs58@6.0.0: - dependencies: - base-x: 5.0.0 - - buffer-from@1.1.2: {} - - buffer@6.0.3: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - - bufferutil@4.0.8: - dependencies: - node-gyp-build: 4.8.2 - optional: true - - camelcase@6.3.0: {} - - chai@4.5.0: - dependencies: - assertion-error: 1.1.0 - check-error: 1.0.3 - deep-eql: 4.1.4 - get-func-name: 2.0.2 - loupe: 2.3.7 - pathval: 1.1.1 - type-detect: 4.1.0 - - chalk@4.1.2: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - - chalk@5.3.0: {} - - check-error@1.0.3: - dependencies: - get-func-name: 2.0.2 - - chokidar@3.6.0: - dependencies: - anymatch: 3.1.3 - braces: 3.0.3 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - - cliui@7.0.4: - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - - color-convert@2.0.1: - dependencies: - color-name: 1.1.4 - - color-name@1.1.4: {} - - commander@12.1.0: {} - - commander@2.20.3: {} - - debug@4.3.7(supports-color@8.1.1): - dependencies: - ms: 2.1.3 - optionalDependencies: - supports-color: 8.1.1 - - decamelize@4.0.0: {} - - deep-eql@4.1.4: - dependencies: - type-detect: 4.1.0 - - delay@5.0.0: {} - - diff@3.5.0: {} - - diff@5.2.0: {} - - emoji-regex@8.0.0: {} - - es6-promise@4.2.8: {} - - es6-promisify@5.0.0: - dependencies: - es6-promise: 4.2.8 - - escalade@3.2.0: {} - - escape-string-regexp@4.0.0: {} - - eventemitter3@5.0.1: {} - - eyes@0.1.8: {} - - fast-stable-stringify@1.0.0: {} - - fastestsmallesttextencoderdecoder@1.0.22: {} - - file-uri-to-path@1.0.0: {} - - fill-range@7.1.1: - dependencies: - to-regex-range: 5.0.1 - - find-up@5.0.0: - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - - flat@5.0.2: {} - - fs.realpath@1.0.0: {} - - fsevents@2.3.3: - optional: true - - get-caller-file@2.0.5: {} - - get-func-name@2.0.2: {} - - glob-parent@5.1.2: - dependencies: - is-glob: 4.0.3 - - glob@8.1.0: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 5.1.6 - once: 1.4.0 - - has-flag@4.0.0: {} - - he@1.2.0: {} - - humanize-ms@1.2.1: - dependencies: - ms: 2.1.3 - - ieee754@1.2.1: {} - - inflight@1.0.6: - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - - inherits@2.0.4: {} - - is-binary-path@2.1.0: - dependencies: - binary-extensions: 2.3.0 - - is-extglob@2.1.1: {} - - is-fullwidth-code-point@3.0.0: {} - - is-glob@4.0.3: - dependencies: - is-extglob: 2.1.1 - - is-number@7.0.0: {} - - is-plain-obj@2.1.0: {} - - is-unicode-supported@0.1.0: {} - - isomorphic-ws@4.0.1(ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10)): - dependencies: - ws: 7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) - - jayson@4.1.2(bufferutil@4.0.8)(utf-8-validate@5.0.10): - dependencies: - '@types/connect': 3.4.38 - '@types/node': 12.20.55 - '@types/ws': 7.4.7 - JSONStream: 1.3.5 - commander: 2.20.3 - delay: 5.0.0 - es6-promisify: 5.0.0 - eyes: 0.1.8 - isomorphic-ws: 4.0.1(ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10)) - json-stringify-safe: 5.0.1 - uuid: 8.3.2 - ws: 7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - js-yaml@4.1.0: - dependencies: - argparse: 2.0.1 - - json-stringify-safe@5.0.1: {} - - json5@1.0.2: - dependencies: - minimist: 1.2.8 - optional: true - - jsonparse@1.3.1: {} - - locate-path@6.0.0: - dependencies: - p-locate: 5.0.0 - - log-symbols@4.1.0: - dependencies: - chalk: 4.1.2 - is-unicode-supported: 0.1.0 - - loupe@2.3.7: - dependencies: - get-func-name: 2.0.2 - - make-error@1.3.6: {} - - minimatch@5.1.6: - dependencies: - brace-expansion: 2.0.1 - - minimist@1.2.8: {} - - mkdirp@0.5.6: - dependencies: - minimist: 1.2.8 - - mocha@10.7.3: - dependencies: - ansi-colors: 4.1.3 - browser-stdout: 1.3.1 - chokidar: 3.6.0 - debug: 4.3.7(supports-color@8.1.1) - diff: 5.2.0 - escape-string-regexp: 4.0.0 - find-up: 5.0.0 - glob: 8.1.0 - he: 1.2.0 - js-yaml: 4.1.0 - log-symbols: 4.1.0 - minimatch: 5.1.6 - ms: 2.1.3 - serialize-javascript: 6.0.2 - strip-json-comments: 3.1.1 - supports-color: 8.1.1 - workerpool: 6.5.1 - yargs: 16.2.0 - yargs-parser: 20.2.9 - yargs-unparser: 2.0.0 - - ms@2.1.3: {} - - node-fetch@2.7.0: - dependencies: - whatwg-url: 5.0.0 - - node-gyp-build@4.8.2: - optional: true - - normalize-path@3.0.0: {} - - once@1.4.0: - dependencies: - wrappy: 1.0.2 - - p-limit@3.1.0: - dependencies: - yocto-queue: 0.1.0 - - p-locate@5.0.0: - dependencies: - p-limit: 3.1.0 - - path-exists@4.0.0: {} - - pathval@1.1.1: {} - - picomatch@2.3.1: {} - - randombytes@2.1.0: - dependencies: - safe-buffer: 5.2.1 - - readdirp@3.6.0: - dependencies: - picomatch: 2.3.1 - - regenerator-runtime@0.14.1: {} - - require-directory@2.1.1: {} - - rpc-websockets@9.0.4: - dependencies: - '@swc/helpers': 0.5.13 - '@types/uuid': 8.3.4 - '@types/ws': 8.5.12 - buffer: 6.0.3 - eventemitter3: 5.0.1 - uuid: 8.3.2 - ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - optionalDependencies: - bufferutil: 4.0.8 - utf-8-validate: 5.0.10 - - safe-buffer@5.2.1: {} - - serialize-javascript@6.0.2: - dependencies: - randombytes: 2.1.0 - - solana-bankrun-darwin-arm64@0.4.0: - optional: true - - solana-bankrun-darwin-universal@0.4.0: - optional: true - - solana-bankrun-darwin-x64@0.4.0: - optional: true - - solana-bankrun-linux-x64-gnu@0.4.0: - optional: true - - solana-bankrun-linux-x64-musl@0.4.0: - optional: true - - solana-bankrun@0.4.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): - dependencies: - '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) - bs58: 4.0.1 - optionalDependencies: - solana-bankrun-darwin-arm64: 0.4.0 - solana-bankrun-darwin-universal: 0.4.0 - solana-bankrun-darwin-x64: 0.4.0 - solana-bankrun-linux-x64-gnu: 0.4.0 - solana-bankrun-linux-x64-musl: 0.4.0 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - - source-map-support@0.5.21: - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - - source-map@0.6.1: {} - - string-width@4.2.3: - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - - strip-ansi@6.0.1: - dependencies: - ansi-regex: 5.0.1 - - strip-bom@3.0.0: - optional: true - - strip-json-comments@3.1.1: {} - - superstruct@2.0.2: {} - - supports-color@7.2.0: - dependencies: - has-flag: 4.0.0 - - supports-color@8.1.1: - dependencies: - has-flag: 4.0.0 - - text-encoding-utf-8@1.0.2: {} - - through@2.3.8: {} - - to-regex-range@5.0.1: - dependencies: - is-number: 7.0.0 - - tr46@0.0.3: {} - - ts-mocha@10.0.0(mocha@10.7.3): - dependencies: - mocha: 10.7.3 - ts-node: 7.0.1 - optionalDependencies: - tsconfig-paths: 3.15.0 - - ts-node@7.0.1: - dependencies: - arrify: 1.0.1 - buffer-from: 1.1.2 - diff: 3.5.0 - make-error: 1.3.6 - minimist: 1.2.8 - mkdirp: 0.5.6 - source-map-support: 0.5.21 - yn: 2.0.0 - - tsconfig-paths@3.15.0: - dependencies: - '@types/json5': 0.0.29 - json5: 1.0.2 - minimist: 1.2.8 - strip-bom: 3.0.0 - optional: true - - tslib@2.8.0: {} - - type-detect@4.1.0: {} - - typescript@5.6.3: {} - - undici-types@6.19.8: {} - - utf-8-validate@5.0.10: - dependencies: - node-gyp-build: 4.8.2 - optional: true - - uuid@8.3.2: {} - - webidl-conversions@3.0.1: {} - - whatwg-url@5.0.0: - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - - workerpool@6.5.1: {} - - wrap-ansi@7.0.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - wrappy@1.0.2: {} - - ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10): - optionalDependencies: - bufferutil: 4.0.8 - utf-8-validate: 5.0.10 - - ws@8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): - optionalDependencies: - bufferutil: 4.0.8 - utf-8-validate: 5.0.10 - - y18n@5.0.8: {} - - yargs-parser@20.2.9: {} - - yargs-unparser@2.0.0: - dependencies: - camelcase: 6.3.0 - decamelize: 4.0.0 - flat: 5.0.2 - is-plain-obj: 2.1.0 - - yargs@16.2.0: - dependencies: - cliui: 7.0.4 - escalade: 3.2.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 20.2.9 - - yn@2.0.0: {} - - yocto-queue@0.1.0: {} diff --git a/tokens/escrow/steel/program/Cargo.toml b/tokens/escrow/steel/program/Cargo.toml deleted file mode 100644 index 5c49f9643..000000000 --- a/tokens/escrow/steel/program/Cargo.toml +++ /dev/null @@ -1,27 +0,0 @@ -[package] -name = "escrow-program" -description = "" -version.workspace = true -edition.workspace = true -license.workspace = true -homepage.workspace = true -documentation.workspace = true -repository.workspace = true -readme.workspace = true -keywords.workspace = true - -[lib] -crate-type = ["cdylib", "lib"] - -[dependencies] -escrow-api.workspace = true -solana-program.workspace = true -steel.workspace = true -spl-token.workspace = true - -[dev-dependencies] -base64 = "0.21" -rand = "0.8.5" -solana-program-test = "1.18" -solana-sdk = "1.18" -tokio = { version = "1.35", features = ["full"] } diff --git a/tokens/escrow/steel/program/src/lib.rs b/tokens/escrow/steel/program/src/lib.rs deleted file mode 100644 index b89852407..000000000 --- a/tokens/escrow/steel/program/src/lib.rs +++ /dev/null @@ -1,25 +0,0 @@ -mod make_offer; -mod take_offer; - -use make_offer::*; -use take_offer::*; - -use escrow_api::prelude::*; -use steel::*; - -pub fn process_instruction( - program_id: &Pubkey, - accounts: &[AccountInfo], - data: &[u8], -) -> ProgramResult { - let (ix, data) = parse_instruction(&escrow_api::ID, program_id, data)?; - - match ix { - EscrowInstruction::MakeOffer => process_make_offer(accounts, data)?, - EscrowInstruction::TakerOffer => process_take_offer(accounts, data)?, - } - - Ok(()) -} - -entrypoint!(process_instruction); diff --git a/tokens/escrow/steel/program/src/make_offer.rs b/tokens/escrow/steel/program/src/make_offer.rs deleted file mode 100644 index e4fab025d..000000000 --- a/tokens/escrow/steel/program/src/make_offer.rs +++ /dev/null @@ -1,80 +0,0 @@ -use escrow_api::prelude::*; -use steel::*; - -pub fn process_make_offer(accounts: &[AccountInfo<'_>], data: &[u8]) -> ProgramResult { - // Parse args. - let args = MakeOffer::try_from_bytes(data)?; - let id = u64::from_le_bytes(args.id); - let token_a_offered_amount = u64::from_le_bytes(args.token_a_offered_amount); - - // Load accounts. - let [maker_info, mint_a_info, mint_b_info, maker_token_account_a_info, offer_info, vault_info, token_program, system_program, associated_token_program] = - accounts - else { - return Err(ProgramError::NotEnoughAccountKeys); - }; - - maker_info.is_signer()?; - token_program.is_program(&spl_token::ID)?; - system_program.is_program(&system_program::ID)?; - associated_token_program.is_program(&ASSOCIATED_TOKEN_PROGRAM_ID)?; - - offer_info.is_empty()?.is_writable()?.has_seeds( - &[ - OFFER_SEED, - maker_info.key.as_ref(), - id.to_le_bytes().as_ref(), - ], - &escrow_api::ID, - )?; - - vault_info.is_empty()?.is_writable()?; - - // Create associated token account for vault - create_associated_token_account( - maker_info, - offer_info, - vault_info, - mint_a_info, - system_program, - token_program, - associated_token_program, - )?; - - // Call CPI to create account offer - create_account::( - offer_info, - system_program, - maker_info, - &escrow_api::ID, - &[ - OFFER_SEED, - maker_info.key.as_ref(), - id.to_le_bytes().as_ref(), - ], - )?; - - let _mint_a = mint_a_info.as_mint()?; - let _mint_b = mint_b_info.as_mint()?; - - // transfer token A to vault - transfer( - maker_info, - maker_token_account_a_info, - vault_info, - token_program, - token_a_offered_amount, - )?; - - let offer: &mut Offer = offer_info.as_account_mut::(&escrow_api::ID)?; - - // Update state - offer.id = args.id; - offer.maker = *maker_info.key; - offer.token_mint_a = *mint_a_info.key; - offer.token_mint_b = *mint_b_info.key; - offer.token_b_wanted_amount = args.token_b_wanted_amount; - offer.bump = offer_pda(*maker_info.key, id).1; - - Ok(()) -} diff --git a/tokens/escrow/steel/program/src/take_offer.rs b/tokens/escrow/steel/program/src/take_offer.rs deleted file mode 100644 index 994b5142b..000000000 --- a/tokens/escrow/steel/program/src/take_offer.rs +++ /dev/null @@ -1,110 +0,0 @@ -use escrow_api::prelude::*; -use steel::*; - -pub fn process_take_offer(accounts: &[AccountInfo<'_>], _data: &[u8]) -> ProgramResult { - // Load accounts. - let [taker_info, maker_info, mint_a_info, mint_b_info, taker_token_account_a_info, taker_token_account_b_info, maker_token_account_b_info, offer_info, vault_info, token_program, system_program, associated_token_program] = - accounts - else { - return Err(ProgramError::NotEnoughAccountKeys); - }; - - taker_info.is_signer()?; - token_program.is_program(&spl_token::ID)?; - system_program.is_program(&system_program::ID)?; - associated_token_program.is_program(&ASSOCIATED_TOKEN_PROGRAM_ID)?; - - let vaul = vault_info.as_associated_token_account(offer_info.key, mint_a_info.key)?; - - // validate mint - let _mint_a = mint_a_info.as_mint()?; - let _mint_b = mint_b_info.as_mint()?; - - if taker_token_account_a_info.data_is_empty() { - create_associated_token_account( - taker_info, - taker_info, - taker_token_account_a_info, - mint_a_info, - system_program, - token_program, - associated_token_program, - )?; - } - - let _taker_token_account_b = taker_token_account_b_info - .is_writable()? - .as_associated_token_account(taker_info.key, mint_b_info.key)?; - - if maker_token_account_b_info.data_is_empty() { - create_associated_token_account( - taker_info, - maker_info, - maker_token_account_b_info, - mint_b_info, - system_program, - token_program, - associated_token_program, - )?; - } - - offer_info.is_writable()?; - - let offer: &mut Offer = offer_info.as_account_mut::(&escrow_api::ID)?; - offer_info.has_seeds( - &[OFFER_SEED, offer.maker.as_ref(), offer.id.as_ref()], - &escrow_api::ID, - )?; - - // transfer wanted token from taker to maker - let token_b_wanted_amount = u64::from_le_bytes(offer.token_b_wanted_amount); - transfer( - taker_info, - taker_token_account_b_info, - maker_token_account_b_info, - token_program, - token_b_wanted_amount, - )?; - - // // widthdraw token A from vault - transfer_signed_with_bump( - offer_info, - vault_info, - taker_token_account_a_info, - token_program, - vaul.amount, - &[OFFER_SEED, offer.maker.as_ref(), offer.id.as_ref()], - offer.bump, - )?; - - let seeds = &[ - OFFER_SEED, - offer.maker.as_ref(), - offer.id.as_ref(), - &[offer.bump], - ]; - let signer_seeds = &[&seeds[..]]; - - // close vault account - solana_program::program::invoke_signed( - &spl_token::instruction::close_account( - &spl_token::ID, - vault_info.key, - taker_info.key, - offer_info.key, - &[&offer_info.key], - )?, - &[ - token_program.clone(), - vault_info.clone(), - taker_info.clone(), - offer_info.clone(), - ], - signer_seeds, - )?; - - // close offer account - offer_info.close(maker_info)?; - - Ok(()) -} diff --git a/tokens/escrow/steel/tests/bankrun.test.ts b/tokens/escrow/steel/tests/bankrun.test.ts deleted file mode 100644 index 6bf30fb79..000000000 --- a/tokens/escrow/steel/tests/bankrun.test.ts +++ /dev/null @@ -1,184 +0,0 @@ -import { ASSOCIATED_TOKEN_PROGRAM_ID, AccountLayout, TOKEN_PROGRAM_ID, getAssociatedTokenAddressSync } from '@solana/spl-token'; -import { Keypair, LAMPORTS_PER_SOL, PublicKey, SystemProgram, Transaction, TransactionInstruction } from '@solana/web3.js'; -import { assert } from 'chai'; -import { BanksClient, ProgramTestContext, start } from 'solana-bankrun'; -import { createAMint, deserializeOfferAccount, encodeBigint, getMakeOfferInstructionData, getTakeOfferInstructionData, mintTo } from './utils'; - -const PROGRAM_ID = new PublicKey('z7msBPQHDJjTvdQRoEcKyENgXDhSRYeHieN1ZMTqo35'); - -describe('Escrow Program', () => { - let context: ProgramTestContext; - let client: BanksClient; - let payer: Keypair; - const maker = Keypair.generate(); - const taker = Keypair.generate(); - - const mint_a = Keypair.generate(); - const mint_b = Keypair.generate(); - - let makerAccountA: PublicKey; - let makerAccountB: PublicKey; - let takerAccountA: PublicKey; - let takerAccountB: PublicKey; - const id = BigInt(1); - const token_a_offered_amount = BigInt(2 * 10 ** 9); - const token_b_wanted_amount = BigInt(5 * 10 ** 9); - const [offer, offerBump] = PublicKey.findProgramAddressSync( - [Buffer.from('offer'), maker.publicKey.toBuffer(), Buffer.from(encodeBigint(id))], - PROGRAM_ID, - ); - const vault = getAssociatedTokenAddressSync(mint_a.publicKey, offer, true); - - before(async () => { - context = await start([{ name: 'escrow_program', programId: PROGRAM_ID }], []); - client = context.banksClient; - payer = context.payer; - - { - const tx = new Transaction(); - tx.add( - SystemProgram.transfer({ - fromPubkey: payer.publicKey, - toPubkey: maker.publicKey, - lamports: LAMPORTS_PER_SOL, - }), - SystemProgram.transfer({ - fromPubkey: payer.publicKey, - toPubkey: taker.publicKey, - lamports: LAMPORTS_PER_SOL, - }), - ); - tx.recentBlockhash = context.lastBlockhash; - tx.sign(payer); - - await client.processTransaction(tx); - } - - await createAMint(context, payer, mint_a); - await createAMint(context, payer, mint_b); - - makerAccountA = getAssociatedTokenAddressSync(mint_a.publicKey, maker.publicKey, false); - - makerAccountB = getAssociatedTokenAddressSync(mint_b.publicKey, maker.publicKey, false); - - takerAccountA = getAssociatedTokenAddressSync(mint_a.publicKey, taker.publicKey, false); - - takerAccountB = getAssociatedTokenAddressSync(mint_b.publicKey, taker.publicKey, false); - - await mintTo(context, payer, maker.publicKey, mint_a.publicKey); - // await mintTo(context, payer, maker.publicKey, mint_b.publicKey); - // await mintTo(context, payer, taker.publicKey, mint_a.publicKey); - await mintTo(context, payer, taker.publicKey, mint_b.publicKey); - }); - - it('Should make an offer successfully', async () => { - const tx = new Transaction(); - tx.add( - new TransactionInstruction({ - programId: PROGRAM_ID, - keys: [ - { pubkey: maker.publicKey, isSigner: true, isWritable: true }, - { pubkey: mint_a.publicKey, isSigner: false, isWritable: false }, - { pubkey: mint_b.publicKey, isSigner: false, isWritable: false }, - { pubkey: makerAccountA, isSigner: false, isWritable: true }, - { pubkey: offer, isSigner: false, isWritable: true }, - { pubkey: vault, isSigner: false, isWritable: true }, - { - pubkey: TOKEN_PROGRAM_ID, - isSigner: false, - isWritable: false, - }, - { - pubkey: SystemProgram.programId, - isSigner: false, - isWritable: false, - }, - { - pubkey: ASSOCIATED_TOKEN_PROGRAM_ID, - isSigner: false, - isWritable: false, - }, - ], - data: getMakeOfferInstructionData(id, token_a_offered_amount, token_b_wanted_amount), - }), - ); - tx.recentBlockhash = context.lastBlockhash; - tx.sign(maker); - - // process the transaction - await client.processTransaction(tx); - - const offerAccount = await client.getAccount(offer); - assert.isNotNull(offerAccount); - assert.equal(offerAccount?.owner.toBase58(), PROGRAM_ID.toBase58()); - const offerAccountData = deserializeOfferAccount(offerAccount.data); - assert.equal(offerAccountData.id, Number(id)); - assert.equal(offerAccountData.maker.toBase58(), maker.publicKey.toBase58()); - assert.equal(offerAccountData.token_mint_a.toBase58(), mint_a.publicKey.toBase58()); - assert.equal(offerAccountData.token_mint_b.toBase58(), mint_b.publicKey.toBase58()); - assert.equal(offerAccountData.token_b_wanted_amount, Number(token_b_wanted_amount)); - assert.equal(offerAccountData.bump, offerBump); - - const rawVaultAccount = await client.getAccount(vault); - assert.isNotNull(rawVaultAccount); - const decodedVaultAccount = AccountLayout.decode(rawVaultAccount?.data); - assert.equal(decodedVaultAccount.amount, token_a_offered_amount); - }); - - it('Should take an offer successfully', async () => { - const tx = new Transaction(); - tx.add( - new TransactionInstruction({ - programId: PROGRAM_ID, - keys: [ - { pubkey: taker.publicKey, isSigner: true, isWritable: true }, - { pubkey: maker.publicKey, isSigner: false, isWritable: true }, - { pubkey: mint_a.publicKey, isSigner: false, isWritable: false }, - { pubkey: mint_b.publicKey, isSigner: false, isWritable: false }, - { pubkey: takerAccountA, isSigner: false, isWritable: true }, - { pubkey: takerAccountB, isSigner: false, isWritable: true }, - { pubkey: makerAccountB, isSigner: false, isWritable: true }, - { pubkey: offer, isSigner: false, isWritable: true }, - { pubkey: vault, isSigner: false, isWritable: true }, - { - pubkey: TOKEN_PROGRAM_ID, - isSigner: false, - isWritable: false, - }, - { - pubkey: SystemProgram.programId, - isSigner: false, - isWritable: false, - }, - { - pubkey: ASSOCIATED_TOKEN_PROGRAM_ID, - isSigner: false, - isWritable: false, - }, - ], - data: getTakeOfferInstructionData(), - }), - ); - tx.recentBlockhash = context.lastBlockhash; - tx.sign(taker); - - // process the transaction - await client.processTransaction(tx); - - const rawMakerAccountB = await client.getAccount(makerAccountB); - assert.isNotNull(rawMakerAccountB); - const decodedMakerAccountB = AccountLayout.decode(rawMakerAccountB?.data); - assert.equal(decodedMakerAccountB.amount, token_b_wanted_amount); - - const rawTakerAccountA = await client.getAccount(takerAccountA); - assert.isNotNull(rawTakerAccountA); - const decodedTakerAccountA = AccountLayout.decode(rawTakerAccountA?.data); - assert.equal(decodedTakerAccountA.amount, token_a_offered_amount); - - const offerAccount = await client.getAccount(offer); - assert.isNull(offerAccount); - - const vaultAccount = await client.getAccount(vault); - assert.isNull(vaultAccount); - }); -}); diff --git a/tokens/escrow/steel/tests/utils.ts b/tokens/escrow/steel/tests/utils.ts deleted file mode 100644 index 965032fb1..000000000 --- a/tokens/escrow/steel/tests/utils.ts +++ /dev/null @@ -1,116 +0,0 @@ -import { - MINT_SIZE, - TOKEN_PROGRAM_ID, - createAssociatedTokenAccountInstruction, - createInitializeMint2Instruction, - createMintToInstruction, - getAssociatedTokenAddressSync, -} from '@solana/spl-token'; -import { Keypair, LAMPORTS_PER_SOL, PublicKey, SystemProgram, Transaction } from '@solana/web3.js'; -import * as borsh from 'borsh'; -import { ProgramTestContext } from 'solana-bankrun'; - -export const instructionDiscriminators = { - MakeOffer: Buffer.from([0]), - TakeOffer: Buffer.from([1]), -}; - -export const getMakeOfferInstructionData = (id: bigint, token_a_offered_amount: bigint, token_b_wanted_amount: bigint) => { - return Buffer.concat([ - instructionDiscriminators.MakeOffer, - encodeBigint(id), - encodeBigint(token_a_offered_amount), - encodeBigint(token_b_wanted_amount), - ]); -}; - -export const getTakeOfferInstructionData = () => { - return Buffer.concat([instructionDiscriminators.TakeOffer]); -}; - -export const createAMint = async (context: ProgramTestContext, payer: Keypair, mint: Keypair) => { - const tx = new Transaction(); - tx.add( - SystemProgram.createAccount({ - fromPubkey: payer.publicKey, - newAccountPubkey: mint.publicKey, - // the `space` required for a token mint is accessible in the `@solana/spl-token` sdk - space: MINT_SIZE, - // store enough lamports needed for our `space` to be rent exempt - lamports: Number((await context.banksClient.getRent()).minimumBalance(BigInt(MINT_SIZE))), - // tokens are owned by the "token program" - programId: TOKEN_PROGRAM_ID, - }), - createInitializeMint2Instruction(mint.publicKey, 9, payer.publicKey, payer.publicKey), - ); - tx.recentBlockhash = context.lastBlockhash; - tx.sign(payer, mint); - - // process the transaction - await context.banksClient.processTransaction(tx); -}; - -export const mintTo = async (context: ProgramTestContext, payer: Keypair, owner: PublicKey, mint: PublicKey) => { - const tokenAccount = getAssociatedTokenAddressSync(mint, owner, false); - const tx = new Transaction(); - tx.add( - createAssociatedTokenAccountInstruction(payer.publicKey, tokenAccount, owner, mint), - createMintToInstruction(mint, tokenAccount, payer.publicKey, 1_000 * LAMPORTS_PER_SOL), - ); - tx.recentBlockhash = context.lastBlockhash; - tx.sign(payer); - - // process the transaction - await context.banksClient.processTransaction(tx); - return tokenAccount; -}; - -export const encodeBigint = (value: bigint) => { - const buffer = Buffer.alloc(8); - buffer.writeBigUInt64LE(value); - return Uint8Array.from(buffer); -}; - -export type OfferAccount = { - id: number; - maker: PublicKey; - token_mint_a: PublicKey; - token_mint_b: PublicKey; - token_b_wanted_amount: number; - bump: number; -}; - -// Define DataAccountRaw type for deserialization -export type OfferAccountRaw = { - id: number; - maker: Uint8Array; - token_mint_a: Uint8Array; - token_mint_b: Uint8Array; - token_b_wanted_amount: number; - bump: number; -}; - -// Define the schema for the account data -export const offerAccountSchema: borsh.Schema = { - struct: { - discriminator: 'u64', - id: 'u64', - maker: { array: { type: 'u8', len: 32 } }, - token_mint_a: { array: { type: 'u8', len: 32 } }, - token_mint_b: { array: { type: 'u8', len: 32 } }, - token_b_wanted_amount: 'u64', - bump: 'u8', - }, -}; - -export const deserializeOfferAccount = (data: Uint8Array): OfferAccount => { - const account = borsh.deserialize(offerAccountSchema, data) as OfferAccountRaw; - return { - id: account.id, - maker: new PublicKey(account.maker), - token_mint_a: new PublicKey(account.token_mint_a), - token_mint_b: new PublicKey(account.token_mint_b), - token_b_wanted_amount: account.token_b_wanted_amount, - bump: account.bump, - }; -}; diff --git a/tokens/escrow/steel/tsconfig.json b/tokens/escrow/steel/tsconfig.json deleted file mode 100644 index 8c20b2236..000000000 --- a/tokens/escrow/steel/tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "compilerOptions": { - "types": ["mocha", "chai", "node"], - "typeRoots": ["./node_modules/@types"], - "lib": ["es2015"], - "module": "commonjs", - "target": "es6", - "esModuleInterop": true - } -} diff --git a/tokens/pda-mint-authority/steel/.gitignore b/tokens/pda-mint-authority/steel/.gitignore deleted file mode 100644 index 052739dbc..000000000 --- a/tokens/pda-mint-authority/steel/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -target -test-ledger diff --git a/tokens/pda-mint-authority/steel/Cargo.toml b/tokens/pda-mint-authority/steel/Cargo.toml deleted file mode 100644 index 4c407217f..000000000 --- a/tokens/pda-mint-authority/steel/Cargo.toml +++ /dev/null @@ -1,27 +0,0 @@ -[workspace] -resolver = "2" -members = ["api", "program"] - -[workspace.package] -version = "0.1.0" -edition = "2021" -license = "Apache-2.0" -homepage = "" -documentation = "" -repository = "" -readme = "./README.md" -keywords = ["solana"] - -[workspace.dependencies] -pda-mint-authority-api = { path = "./api", version = "0.1.0" } -bytemuck = "1.14" -num_enum = "0.7" -solana-program = "2.1" -steel = { version = "3.0", features = ["spl"] } -thiserror = "1.0" -mpl-token-metadata = { version = "4.1.2" } -spl-token = "^4" -const-crypto = "0.1.0" -spl-associated-token-account = { version = "^2.3", features = [ - "no-entrypoint", -] } diff --git a/tokens/pda-mint-authority/steel/README.md b/tokens/pda-mint-authority/steel/README.md deleted file mode 100644 index 4f4fe2a54..000000000 --- a/tokens/pda-mint-authority/steel/README.md +++ /dev/null @@ -1,22 +0,0 @@ -# Steel - -**Steel** is a ... - -## API -- [`Consts`](api/src/consts.rs) – Program constants. -- [`Error`](api/src/error.rs) – Custom program errors. -- [`Event`](api/src/event.rs) – Custom program events. -- [`Instruction`](api/src/instruction.rs) – Declared instructions. - -## Instructions -- [`Hello`](program/src/hello.rs) – Hello ... - -## State -- [`User`](api/src/state/user.rs) – User ... - -## Tests - -To run the test suit, use the Solana toolchain: -``` -cargo test-sbf -``` diff --git a/tokens/pda-mint-authority/steel/api/Cargo.toml b/tokens/pda-mint-authority/steel/api/Cargo.toml deleted file mode 100644 index d7cf41056..000000000 --- a/tokens/pda-mint-authority/steel/api/Cargo.toml +++ /dev/null @@ -1,15 +0,0 @@ -[package] -name = "pda-mint-authority-api" -version = "0.1.0" -edition = "2021" - -[dependencies] -bytemuck.workspace = true -num_enum.workspace = true -solana-program.workspace = true -steel.workspace = true -thiserror.workspace = true -spl-token.workspace = true -mpl-token-metadata.workspace = true -const-crypto.workspace = true -spl-associated-token-account.workspace = true diff --git a/tokens/pda-mint-authority/steel/api/src/consts.rs b/tokens/pda-mint-authority/steel/api/src/consts.rs deleted file mode 100644 index 00688fe0e..000000000 --- a/tokens/pda-mint-authority/steel/api/src/consts.rs +++ /dev/null @@ -1,5 +0,0 @@ -/// The seed of the mint authority account PDA. -pub const MINT_AUTHORITY: &[u8] = b"mint_authority"; - -/// The seed of the metadata account PDA. -pub const METADATA: &[u8] = b"metadata"; diff --git a/tokens/pda-mint-authority/steel/api/src/instruction.rs b/tokens/pda-mint-authority/steel/api/src/instruction.rs deleted file mode 100644 index 0c70cea5d..000000000 --- a/tokens/pda-mint-authority/steel/api/src/instruction.rs +++ /dev/null @@ -1,31 +0,0 @@ -use steel::*; - -#[repr(u8)] -#[derive(Clone, Copy, Debug, Eq, PartialEq, TryFromPrimitive)] -pub enum SteelInstruction { - Init = 0, - Create = 1, - Mint = 2, -} - -#[repr(C)] -#[derive(Clone, Copy, Debug, Pod, Zeroable)] -pub struct Init {} - -#[repr(C)] -#[derive(Clone, Copy, Debug, Pod, Zeroable)] -pub struct Create { - pub token_name: [u8; 32], - pub token_symbol: [u8; 8], - pub token_uri: [u8; 64], -} - -#[repr(C)] -#[derive(Clone, Copy, Debug, Pod, Zeroable)] -pub struct Mint { - pub amount: [u8; 8], -} - -instruction!(SteelInstruction, Init); -instruction!(SteelInstruction, Create); -instruction!(SteelInstruction, Mint); diff --git a/tokens/pda-mint-authority/steel/api/src/lib.rs b/tokens/pda-mint-authority/steel/api/src/lib.rs deleted file mode 100644 index 6db8ac73d..000000000 --- a/tokens/pda-mint-authority/steel/api/src/lib.rs +++ /dev/null @@ -1,16 +0,0 @@ -pub mod consts; -pub mod instruction; -pub mod sdk; -pub mod state; - -pub mod prelude { - pub use crate::consts::*; - pub use crate::instruction::*; - pub use crate::sdk::*; - pub use crate::state::*; -} - -use steel::*; - -// TODO Set program id -declare_id!("z7msBPQHDJjTvdQRoEcKyENgXDhSRYeHieN1ZMTqo35"); diff --git a/tokens/pda-mint-authority/steel/api/src/sdk.rs b/tokens/pda-mint-authority/steel/api/src/sdk.rs deleted file mode 100644 index 7099778f5..000000000 --- a/tokens/pda-mint-authority/steel/api/src/sdk.rs +++ /dev/null @@ -1,76 +0,0 @@ -use steel::*; - -use crate::prelude::*; - -pub fn init(payer: Pubkey) -> Instruction { - let mint_authority_pda = mint_authority_pda(); - - Instruction { - program_id: crate::ID, - accounts: vec![ - AccountMeta::new(mint_authority_pda.0, false), - AccountMeta::new(payer, false), - AccountMeta::new_readonly(system_program::ID, false), - ], - data: Init {}.to_bytes(), - } -} - -pub fn create( - payer: Pubkey, - mint: Pubkey, - token_name: [u8; 32], - token_symbol: [u8; 8], - token_uri: [u8; 64], -) -> Instruction { - let metadata_pda = Pubkey::find_program_address( - &[METADATA, mpl_token_metadata::ID.as_ref(), mint.as_ref()], - &mpl_token_metadata::ID, - ); - let mint_authority_pda = mint_authority_pda(); - - Instruction { - program_id: crate::ID, - accounts: vec![ - AccountMeta::new(mint, true), - AccountMeta::new(mint_authority_pda.0, false), - AccountMeta::new(metadata_pda.0, false), - AccountMeta::new(payer, true), - AccountMeta::new_readonly(system_program::ID, false), - AccountMeta::new_readonly(spl_token::ID, false), - AccountMeta::new_readonly(mpl_token_metadata::ID, false), - AccountMeta::new_readonly(sysvar::rent::ID, false), - ], - data: Create { - token_name, - token_symbol, - token_uri, - } - .to_bytes(), - } -} -pub fn mint( - payer: Pubkey, - mint: Pubkey, - associated_token_account: Pubkey, - amount: u64, -) -> Instruction { - let mint_authority_pda = mint_authority_pda(); - - Instruction { - program_id: crate::ID, - accounts: vec![ - AccountMeta::new(payer, true), - AccountMeta::new(mint, false), - AccountMeta::new(associated_token_account, false), - AccountMeta::new(mint_authority_pda.0, false), - AccountMeta::new_readonly(spl_token::ID, false), - AccountMeta::new_readonly(spl_associated_token_account::ID, false), - AccountMeta::new_readonly(system_program::ID, false), - ], - data: Mint { - amount: amount.to_le_bytes(), - } - .to_bytes(), - } -} diff --git a/tokens/pda-mint-authority/steel/api/src/state/mint_authority.rs b/tokens/pda-mint-authority/steel/api/src/state/mint_authority.rs deleted file mode 100644 index bd0a7704c..000000000 --- a/tokens/pda-mint-authority/steel/api/src/state/mint_authority.rs +++ /dev/null @@ -1,11 +0,0 @@ -use steel::*; - -use super::SteelAccount; - -#[repr(C)] -#[derive(Clone, Copy, Debug, PartialEq, Pod, Zeroable)] -pub struct MintAuthorityPda { - pub bump: u8, -} - -account!(SteelAccount, MintAuthorityPda); diff --git a/tokens/pda-mint-authority/steel/api/src/state/mod.rs b/tokens/pda-mint-authority/steel/api/src/state/mod.rs deleted file mode 100644 index c29fb1862..000000000 --- a/tokens/pda-mint-authority/steel/api/src/state/mod.rs +++ /dev/null @@ -1,18 +0,0 @@ -mod mint_authority; - -pub use mint_authority::*; - -use steel::*; - -use crate::consts::*; - -#[repr(u8)] -#[derive(Clone, Copy, Debug, Eq, PartialEq, IntoPrimitive, TryFromPrimitive)] -pub enum SteelAccount { - MintAuthorityPda = 0, -} - -/// Fetch PDA of the mint authority account. -pub fn mint_authority_pda() -> (Pubkey, u8) { - Pubkey::find_program_address(&[MINT_AUTHORITY], &crate::id()) -} diff --git a/tokens/pda-mint-authority/steel/cicd.sh b/tokens/pda-mint-authority/steel/cicd.sh deleted file mode 100644 index 8a16e0387..000000000 --- a/tokens/pda-mint-authority/steel/cicd.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash - -# This script is for quick building & deploying of the program. -# It also serves as a reference for the commands used for building & deploying Solana programs. -# Run this bad boy with "bash cicd.sh" or "./cicd.sh" - -cargo build-sbf --manifest-path=./program/Cargo.toml -solana program deploy ./program/target/deploy/program.so diff --git a/tokens/pda-mint-authority/steel/package.json b/tokens/pda-mint-authority/steel/package.json deleted file mode 100644 index b1e1d3fa4..000000000 --- a/tokens/pda-mint-authority/steel/package.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "scripts": { - "test": "pnpm ts-mocha -p ./tsconfig.json -t 1000000 ./tests/tests.ts", - "build-and-test": "cargo build-sbf --manifest-path=./program/Cargo.toml --sbf-out-dir=./tests/fixtures && pnpm test", - "build": "cargo build-sbf --manifest-path=./program/Cargo.toml --sbf-out-dir=./program/target/so", - "deploy": "solana program deploy ./program/target/so/pda_mint_authority_program.so", - "postinstall": "zx prepare.mjs" - }, - "dependencies": { - "@metaplex-foundation/mpl-token-metadata": "^2.5.2", - "@solana/spl-token": "^0.3.7", - "@solana/web3.js": "^1.73.0", - "borsh": "^0.7.0", - "buffer": "^6.0.3", - "fs": "^0.0.1-security" - }, - "devDependencies": { - "@types/bn.js": "^5.1.0", - "@types/chai": "^4.3.1", - "@types/mocha": "^9.1.1", - "chai": "^4.3.4", - "mocha": "^9.0.3", - "ts-mocha": "^10.0.0", - "typescript": "^4.3.5", - "solana-bankrun": "^0.4.0", - "zx": "^8.1.4" - } -} diff --git a/tokens/pda-mint-authority/steel/pnpm-lock.yaml b/tokens/pda-mint-authority/steel/pnpm-lock.yaml deleted file mode 100644 index 787a11db3..000000000 --- a/tokens/pda-mint-authority/steel/pnpm-lock.yaml +++ /dev/null @@ -1,1860 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -importers: - - .: - dependencies: - '@metaplex-foundation/mpl-token-metadata': - specifier: ^2.5.2 - version: 2.13.0(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)(utf-8-validate@5.0.10) - '@solana/spl-token': - specifier: ^0.3.7 - version: 0.3.11(@solana/web3.js@1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)(utf-8-validate@5.0.10) - '@solana/web3.js': - specifier: ^1.73.0 - version: 1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) - borsh: - specifier: ^0.7.0 - version: 0.7.0 - buffer: - specifier: ^6.0.3 - version: 6.0.3 - fs: - specifier: ^0.0.1-security - version: 0.0.1-security - devDependencies: - '@types/bn.js': - specifier: ^5.1.0 - version: 5.1.6 - '@types/chai': - specifier: ^4.3.1 - version: 4.3.20 - '@types/mocha': - specifier: ^9.1.1 - version: 9.1.1 - chai: - specifier: ^4.3.4 - version: 4.5.0 - mocha: - specifier: ^9.0.3 - version: 9.2.2 - solana-bankrun: - specifier: ^0.4.0 - version: 0.4.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - ts-mocha: - specifier: ^10.0.0 - version: 10.0.0(mocha@9.2.2) - typescript: - specifier: ^4.3.5 - version: 4.9.5 - zx: - specifier: ^8.1.4 - version: 8.1.9 - -packages: - - '@babel/runtime@7.26.0': - resolution: {integrity: sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==} - engines: {node: '>=6.9.0'} - - '@metaplex-foundation/beet-solana@0.4.1': - resolution: {integrity: sha512-/6o32FNUtwK8tjhotrvU/vorP7umBuRFvBZrC6XCk51aKidBHe5LPVPA5AjGPbV3oftMfRuXPNd9yAGeEqeCDQ==} - - '@metaplex-foundation/beet@0.7.2': - resolution: {integrity: sha512-K+g3WhyFxKPc0xIvcIjNyV1eaTVJTiuaHZpig7Xx0MuYRMoJLLvhLTnUXhFdR5Tu2l2QSyKwfyXDgZlzhULqFg==} - - '@metaplex-foundation/cusper@0.0.2': - resolution: {integrity: sha512-S9RulC2fFCFOQraz61bij+5YCHhSO9llJegK8c8Y6731fSi6snUSQJdCUqYS8AIgR0TKbQvdvgSyIIdbDFZbBA==} - - '@metaplex-foundation/mpl-token-metadata@2.13.0': - resolution: {integrity: sha512-Fl/8I0L9rv4bKTV/RAl5YIbJe9SnQPInKvLz+xR1fEc4/VQkuCn3RPgypfUMEKWmCznzaw4sApDxy6CFS4qmJw==} - - '@noble/curves@1.6.0': - resolution: {integrity: sha512-TlaHRXDehJuRNR9TfZDNQ45mMEd5dwUwmicsafcIX4SsNiqnCHKjE/1alYPd/lDRVhxdhUAlv8uEhMCI5zjIJQ==} - engines: {node: ^14.21.3 || >=16} - - '@noble/hashes@1.5.0': - resolution: {integrity: sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==} - engines: {node: ^14.21.3 || >=16} - - '@solana/buffer-layout-utils@0.2.0': - resolution: {integrity: sha512-szG4sxgJGktbuZYDg2FfNmkMi0DYQoVjN2h7ta1W1hPrwzarcFLBq9UpX1UjNXsNpT9dn+chgprtWGioUAr4/g==} - engines: {node: '>= 10'} - - '@solana/buffer-layout@4.0.1': - resolution: {integrity: sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==} - engines: {node: '>=5.10'} - - '@solana/codecs-core@2.0.0-rc.1': - resolution: {integrity: sha512-bauxqMfSs8EHD0JKESaNmNuNvkvHSuN3bbWAF5RjOfDu2PugxHrvRebmYauvSumZ3cTfQ4HJJX6PG5rN852qyQ==} - peerDependencies: - typescript: '>=5' - - '@solana/codecs-data-structures@2.0.0-rc.1': - resolution: {integrity: sha512-rinCv0RrAVJ9rE/rmaibWJQxMwC5lSaORSZuwjopSUE6T0nb/MVg6Z1siNCXhh/HFTOg0l8bNvZHgBcN/yvXog==} - peerDependencies: - typescript: '>=5' - - '@solana/codecs-numbers@2.0.0-rc.1': - resolution: {integrity: sha512-J5i5mOkvukXn8E3Z7sGIPxsThRCgSdgTWJDQeZvucQ9PT6Y3HiVXJ0pcWiOWAoQ3RX8e/f4I3IC+wE6pZiJzDQ==} - peerDependencies: - typescript: '>=5' - - '@solana/codecs-strings@2.0.0-rc.1': - resolution: {integrity: sha512-9/wPhw8TbGRTt6mHC4Zz1RqOnuPTqq1Nb4EyuvpZ39GW6O2t2Q7Q0XxiB3+BdoEjwA2XgPw6e2iRfvYgqty44g==} - peerDependencies: - fastestsmallesttextencoderdecoder: ^1.0.22 - typescript: '>=5' - - '@solana/codecs@2.0.0-rc.1': - resolution: {integrity: sha512-qxoR7VybNJixV51L0G1RD2boZTcxmwUWnKCaJJExQ5qNKwbpSyDdWfFJfM5JhGyKe9DnPVOZB+JHWXnpbZBqrQ==} - peerDependencies: - typescript: '>=5' - - '@solana/errors@2.0.0-rc.1': - resolution: {integrity: sha512-ejNvQ2oJ7+bcFAYWj225lyRkHnixuAeb7RQCixm+5mH4n1IA4Qya/9Bmfy5RAAHQzxK43clu3kZmL5eF9VGtYQ==} - hasBin: true - peerDependencies: - typescript: '>=5' - - '@solana/options@2.0.0-rc.1': - resolution: {integrity: sha512-mLUcR9mZ3qfHlmMnREdIFPf9dpMc/Bl66tLSOOWxw4ml5xMT2ohFn7WGqoKcu/UHkT9CrC6+amEdqCNvUqI7AA==} - peerDependencies: - typescript: '>=5' - - '@solana/spl-token-metadata@0.1.6': - resolution: {integrity: sha512-7sMt1rsm/zQOQcUWllQX9mD2O6KhSAtY1hFR2hfFwgqfFWzSY9E9GDvFVNYUI1F0iQKcm6HmePU9QbKRXTEBiA==} - engines: {node: '>=16'} - peerDependencies: - '@solana/web3.js': ^1.95.3 - - '@solana/spl-token@0.3.11': - resolution: {integrity: sha512-bvohO3rIMSVL24Pb+I4EYTJ6cL82eFpInEXD/I8K8upOGjpqHsKUoAempR/RnUlI1qSFNyFlWJfu6MNUgfbCQQ==} - engines: {node: '>=16'} - peerDependencies: - '@solana/web3.js': ^1.88.0 - - '@solana/web3.js@1.95.4': - resolution: {integrity: sha512-sdewnNEA42ZSMxqkzdwEWi6fDgzwtJHaQa5ndUGEJYtoOnM6X5cvPmjoTUp7/k7bRrVAxfBgDnvQQHD6yhlLYw==} - - '@swc/helpers@0.5.13': - resolution: {integrity: sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==} - - '@types/bn.js@5.1.6': - resolution: {integrity: sha512-Xh8vSwUeMKeYYrj3cX4lGQgFSF/N03r+tv4AiLl1SucqV+uTQpxRcnM8AkXKHwYP9ZPXOYXRr2KPXpVlIvqh9w==} - - '@types/chai@4.3.20': - resolution: {integrity: sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==} - - '@types/connect@3.4.38': - resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} - - '@types/fs-extra@11.0.4': - resolution: {integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==} - - '@types/json5@0.0.29': - resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - - '@types/jsonfile@6.1.4': - resolution: {integrity: sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==} - - '@types/mocha@9.1.1': - resolution: {integrity: sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==} - - '@types/node@12.20.55': - resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - - '@types/node@22.8.4': - resolution: {integrity: sha512-SpNNxkftTJOPk0oN+y2bIqurEXHTA2AOZ3EJDDKeJ5VzkvvORSvmQXGQarcOzWV1ac7DCaPBEdMDxBsM+d8jWw==} - - '@types/uuid@8.3.4': - resolution: {integrity: sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==} - - '@types/ws@7.4.7': - resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==} - - '@types/ws@8.5.12': - resolution: {integrity: sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==} - - '@ungap/promise-all-settled@1.1.2': - resolution: {integrity: sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==} - - JSONStream@1.3.5: - resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} - hasBin: true - - agentkeepalive@4.5.0: - resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} - engines: {node: '>= 8.0.0'} - - ansi-colors@4.1.1: - resolution: {integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==} - engines: {node: '>=6'} - - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - - ansicolors@0.3.2: - resolution: {integrity: sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==} - - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - - argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - - arrify@1.0.1: - resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} - engines: {node: '>=0.10.0'} - - assert@2.1.0: - resolution: {integrity: sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==} - - assertion-error@1.1.0: - resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} - - available-typed-arrays@1.0.7: - resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} - engines: {node: '>= 0.4'} - - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - base-x@3.0.10: - resolution: {integrity: sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==} - - base-x@4.0.0: - resolution: {integrity: sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==} - - base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - - bigint-buffer@1.1.5: - resolution: {integrity: sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA==} - engines: {node: '>= 10.0.0'} - - bignumber.js@9.1.2: - resolution: {integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==} - - binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} - - bindings@1.5.0: - resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} - - bn.js@5.2.1: - resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} - - borsh@0.7.0: - resolution: {integrity: sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==} - - brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - - braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} - - browser-stdout@1.3.1: - resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} - - bs58@4.0.1: - resolution: {integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==} - - bs58@5.0.0: - resolution: {integrity: sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==} - - buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - - buffer@6.0.3: - resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} - - bufferutil@4.0.8: - resolution: {integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==} - engines: {node: '>=6.14.2'} - - call-bind@1.0.7: - resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} - engines: {node: '>= 0.4'} - - camelcase@6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} - - chai@4.5.0: - resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==} - engines: {node: '>=4'} - - chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - - chalk@5.3.0: - resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - - check-error@1.0.3: - resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} - - chokidar@3.5.3: - resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} - engines: {node: '>= 8.10.0'} - - cliui@7.0.4: - resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} - - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - commander@12.1.0: - resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} - engines: {node: '>=18'} - - commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - - concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - - debug@4.3.3: - resolution: {integrity: sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - debug@4.3.7: - resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - decamelize@4.0.0: - resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} - engines: {node: '>=10'} - - deep-eql@4.1.4: - resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==} - engines: {node: '>=6'} - - define-data-property@1.1.4: - resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} - engines: {node: '>= 0.4'} - - define-properties@1.2.1: - resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} - engines: {node: '>= 0.4'} - - delay@5.0.0: - resolution: {integrity: sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==} - engines: {node: '>=10'} - - diff@3.5.0: - resolution: {integrity: sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==} - engines: {node: '>=0.3.1'} - - diff@5.0.0: - resolution: {integrity: sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==} - engines: {node: '>=0.3.1'} - - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - - es-define-property@1.0.0: - resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} - engines: {node: '>= 0.4'} - - es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} - - es6-promise@4.2.8: - resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} - - es6-promisify@5.0.0: - resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==} - - escalade@3.2.0: - resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} - engines: {node: '>=6'} - - escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - - eventemitter3@5.0.1: - resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} - - eyes@0.1.8: - resolution: {integrity: sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==} - engines: {node: '> 0.1.90'} - - fast-stable-stringify@1.0.0: - resolution: {integrity: sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==} - - fastestsmallesttextencoderdecoder@1.0.22: - resolution: {integrity: sha512-Pb8d48e+oIuY4MaM64Cd7OW1gt4nxCHs7/ddPPZ/Ic3sg8yVGM7O9wDvZ7us6ScaUupzM+pfBolwtYhN1IxBIw==} - - file-uri-to-path@1.0.0: - resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} - - fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} - - find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - - flat@5.0.2: - resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} - hasBin: true - - for-each@0.3.3: - resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} - - fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - - fs@0.0.1-security: - resolution: {integrity: sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w==} - - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - - get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - - get-func-name@2.0.2: - resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} - - get-intrinsic@1.2.4: - resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} - engines: {node: '>= 0.4'} - - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - - glob@7.2.0: - resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==} - deprecated: Glob versions prior to v9 are no longer supported - - gopd@1.0.1: - resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} - - growl@1.10.5: - resolution: {integrity: sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==} - engines: {node: '>=4.x'} - - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - - has-property-descriptors@1.0.2: - resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} - - has-proto@1.0.3: - resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} - engines: {node: '>= 0.4'} - - has-symbols@1.0.3: - resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} - engines: {node: '>= 0.4'} - - has-tostringtag@1.0.2: - resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} - engines: {node: '>= 0.4'} - - hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} - - he@1.2.0: - resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} - hasBin: true - - humanize-ms@1.2.1: - resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} - - ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - - inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. - - inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - - is-arguments@1.1.1: - resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} - engines: {node: '>= 0.4'} - - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - - is-callable@1.2.7: - resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} - engines: {node: '>= 0.4'} - - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - - is-generator-function@1.0.10: - resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} - engines: {node: '>= 0.4'} - - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - - is-nan@1.3.2: - resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==} - engines: {node: '>= 0.4'} - - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - - is-plain-obj@2.1.0: - resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} - engines: {node: '>=8'} - - is-typed-array@1.1.13: - resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} - engines: {node: '>= 0.4'} - - is-unicode-supported@0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} - engines: {node: '>=10'} - - isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - - isomorphic-ws@4.0.1: - resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==} - peerDependencies: - ws: '*' - - jayson@4.1.2: - resolution: {integrity: sha512-5nzMWDHy6f+koZOuYsArh2AXs73NfWYVlFyJJuCedr93GpY+Ku8qq10ropSXVfHK+H0T6paA88ww+/dV+1fBNA==} - engines: {node: '>=8'} - hasBin: true - - js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true - - json-stringify-safe@5.0.1: - resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} - - json5@1.0.2: - resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} - hasBin: true - - jsonparse@1.3.1: - resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} - engines: {'0': node >= 0.2.0} - - locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - - log-symbols@4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} - engines: {node: '>=10'} - - loupe@2.3.7: - resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} - - make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - - minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - - minimatch@4.2.1: - resolution: {integrity: sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==} - engines: {node: '>=10'} - - minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - - mkdirp@0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} - hasBin: true - - mocha@9.2.2: - resolution: {integrity: sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==} - engines: {node: '>= 12.0.0'} - hasBin: true - - ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - - ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - - nanoid@3.3.1: - resolution: {integrity: sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - - node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - - node-gyp-build@4.8.2: - resolution: {integrity: sha512-IRUxE4BVsHWXkV/SFOut4qTlagw2aM8T5/vnTsmrHJvVoKueJHRc/JaFND7QDDc61kLYUJ6qlZM3sqTSyx2dTw==} - hasBin: true - - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - - object-is@1.1.6: - resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} - engines: {node: '>= 0.4'} - - object-keys@1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} - engines: {node: '>= 0.4'} - - object.assign@4.1.5: - resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} - engines: {node: '>= 0.4'} - - once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - - p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - - p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - - path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - - path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - - pathval@1.1.1: - resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} - - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - - possible-typed-array-names@1.0.0: - resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} - engines: {node: '>= 0.4'} - - randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - - regenerator-runtime@0.14.1: - resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - - require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - - rpc-websockets@9.0.4: - resolution: {integrity: sha512-yWZWN0M+bivtoNLnaDbtny4XchdAIF5Q4g/ZsC5UC61Ckbp0QczwO8fg44rV3uYmY4WHd+EZQbn90W1d8ojzqQ==} - - safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - - serialize-javascript@6.0.0: - resolution: {integrity: sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==} - - set-function-length@1.2.2: - resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} - engines: {node: '>= 0.4'} - - solana-bankrun-darwin-arm64@0.4.0: - resolution: {integrity: sha512-6dz78Teoz7ez/3lpRLDjktYLJb79FcmJk2me4/YaB8WiO6W43OdExU4h+d2FyuAryO2DgBPXaBoBNY/8J1HJmw==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - - solana-bankrun-darwin-universal@0.4.0: - resolution: {integrity: sha512-zSSw/Jx3KNU42pPMmrEWABd0nOwGJfsj7nm9chVZ3ae7WQg3Uty0hHAkn5NSDCj3OOiN0py9Dr1l9vmRJpOOxg==} - engines: {node: '>= 10'} - os: [darwin] - - solana-bankrun-darwin-x64@0.4.0: - resolution: {integrity: sha512-LWjs5fsgHFtyr7YdJR6r0Ho5zrtzI6CY4wvwPXr8H2m3b4pZe6RLIZjQtabCav4cguc14G0K8yQB2PTMuGub8w==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - - solana-bankrun-linux-x64-gnu@0.4.0: - resolution: {integrity: sha512-SrlVrb82UIxt21Zr/XZFHVV/h9zd2/nP25PMpLJVLD7Pgl2yhkhfi82xj3OjxoQqWe+zkBJ+uszA0EEKr67yNw==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - solana-bankrun-linux-x64-musl@0.4.0: - resolution: {integrity: sha512-Nv328ZanmURdYfcLL+jwB1oMzX4ZzK57NwIcuJjGlf0XSNLq96EoaO5buEiUTo4Ls7MqqMyLbClHcrPE7/aKyA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - solana-bankrun@0.4.0: - resolution: {integrity: sha512-NMmXUipPBkt8NgnyNO3SCnPERP6xT/AMNMBooljGA3+rG6NN8lmXJsKeLqQTiFsDeWD74U++QM/DgcueSWvrIg==} - engines: {node: '>= 10'} - - source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - - source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - - strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - - strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - - superstruct@2.0.2: - resolution: {integrity: sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A==} - engines: {node: '>=14.0.0'} - - supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - - supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} - - text-encoding-utf-8@1.0.2: - resolution: {integrity: sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==} - - through@2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - - tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - - ts-mocha@10.0.0: - resolution: {integrity: sha512-VRfgDO+iiuJFlNB18tzOfypJ21xn2xbuZyDvJvqpTbWgkAgD17ONGr8t+Tl8rcBtOBdjXp5e/Rk+d39f7XBHRw==} - engines: {node: '>= 6.X.X'} - hasBin: true - peerDependencies: - mocha: ^3.X.X || ^4.X.X || ^5.X.X || ^6.X.X || ^7.X.X || ^8.X.X || ^9.X.X || ^10.X.X - - ts-node@7.0.1: - resolution: {integrity: sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==} - engines: {node: '>=4.2.0'} - hasBin: true - - tsconfig-paths@3.15.0: - resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} - - tslib@2.8.0: - resolution: {integrity: sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==} - - type-detect@4.1.0: - resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==} - engines: {node: '>=4'} - - typescript@4.9.5: - resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} - engines: {node: '>=4.2.0'} - hasBin: true - - undici-types@6.19.8: - resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} - - utf-8-validate@5.0.10: - resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==} - engines: {node: '>=6.14.2'} - - util@0.12.5: - resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} - - uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - hasBin: true - - webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - - whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - - which-typed-array@1.1.15: - resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} - engines: {node: '>= 0.4'} - - which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - - workerpool@6.2.0: - resolution: {integrity: sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==} - - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - - wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - - ws@7.5.10: - resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} - engines: {node: '>=8.3.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - ws@8.18.0: - resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - - yargs-parser@20.2.4: - resolution: {integrity: sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==} - engines: {node: '>=10'} - - yargs-unparser@2.0.0: - resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} - engines: {node: '>=10'} - - yargs@16.2.0: - resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} - engines: {node: '>=10'} - - yn@2.0.0: - resolution: {integrity: sha512-uTv8J/wiWTgUTg+9vLTi//leUl5vDQS6uii/emeTb2ssY7vl6QWf2fFbIIGjnhjvbdKlU0ed7QPgY1htTC86jQ==} - engines: {node: '>=4'} - - yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - - zx@8.1.9: - resolution: {integrity: sha512-UHuLHphHmsBYKkAchkSrEN4nzDyagafqC9HUxtc1J7eopaScW6H9dsLJ1lmkAntnLtDTGoM8fa+jrJrXiIfKFA==} - engines: {node: '>= 12.17.0'} - hasBin: true - -snapshots: - - '@babel/runtime@7.26.0': - dependencies: - regenerator-runtime: 0.14.1 - - '@metaplex-foundation/beet-solana@0.4.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)': - dependencies: - '@metaplex-foundation/beet': 0.7.2 - '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) - bs58: 5.0.0 - debug: 4.3.7 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - - '@metaplex-foundation/beet@0.7.2': - dependencies: - ansicolors: 0.3.2 - assert: 2.1.0 - bn.js: 5.2.1 - debug: 4.3.7 - transitivePeerDependencies: - - supports-color - - '@metaplex-foundation/cusper@0.0.2': {} - - '@metaplex-foundation/mpl-token-metadata@2.13.0(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)(utf-8-validate@5.0.10)': - dependencies: - '@metaplex-foundation/beet': 0.7.2 - '@metaplex-foundation/beet-solana': 0.4.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) - '@metaplex-foundation/cusper': 0.0.2 - '@solana/spl-token': 0.3.11(@solana/web3.js@1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) - bn.js: 5.2.1 - debug: 4.3.7 - transitivePeerDependencies: - - bufferutil - - encoding - - fastestsmallesttextencoderdecoder - - supports-color - - typescript - - utf-8-validate - - '@noble/curves@1.6.0': - dependencies: - '@noble/hashes': 1.5.0 - - '@noble/hashes@1.5.0': {} - - '@solana/buffer-layout-utils@0.2.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)': - dependencies: - '@solana/buffer-layout': 4.0.1 - '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) - bigint-buffer: 1.1.5 - bignumber.js: 9.1.2 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - - '@solana/buffer-layout@4.0.1': - dependencies: - buffer: 6.0.3 - - '@solana/codecs-core@2.0.0-rc.1(typescript@4.9.5)': - dependencies: - '@solana/errors': 2.0.0-rc.1(typescript@4.9.5) - typescript: 4.9.5 - - '@solana/codecs-data-structures@2.0.0-rc.1(typescript@4.9.5)': - dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@4.9.5) - '@solana/codecs-numbers': 2.0.0-rc.1(typescript@4.9.5) - '@solana/errors': 2.0.0-rc.1(typescript@4.9.5) - typescript: 4.9.5 - - '@solana/codecs-numbers@2.0.0-rc.1(typescript@4.9.5)': - dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@4.9.5) - '@solana/errors': 2.0.0-rc.1(typescript@4.9.5) - typescript: 4.9.5 - - '@solana/codecs-strings@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)': - dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@4.9.5) - '@solana/codecs-numbers': 2.0.0-rc.1(typescript@4.9.5) - '@solana/errors': 2.0.0-rc.1(typescript@4.9.5) - fastestsmallesttextencoderdecoder: 1.0.22 - typescript: 4.9.5 - - '@solana/codecs@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)': - dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@4.9.5) - '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@4.9.5) - '@solana/codecs-numbers': 2.0.0-rc.1(typescript@4.9.5) - '@solana/codecs-strings': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5) - '@solana/options': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5) - typescript: 4.9.5 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/errors@2.0.0-rc.1(typescript@4.9.5)': - dependencies: - chalk: 5.3.0 - commander: 12.1.0 - typescript: 4.9.5 - - '@solana/options@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)': - dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@4.9.5) - '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@4.9.5) - '@solana/codecs-numbers': 2.0.0-rc.1(typescript@4.9.5) - '@solana/codecs-strings': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5) - '@solana/errors': 2.0.0-rc.1(typescript@4.9.5) - typescript: 4.9.5 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)': - dependencies: - '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5) - '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - typescript - - '@solana/spl-token@0.3.11(@solana/web3.js@1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)(utf-8-validate@5.0.10)': - dependencies: - '@solana/buffer-layout': 4.0.1 - '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5) - '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) - buffer: 6.0.3 - transitivePeerDependencies: - - bufferutil - - encoding - - fastestsmallesttextencoderdecoder - - typescript - - utf-8-validate - - '@solana/web3.js@1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10)': - dependencies: - '@babel/runtime': 7.26.0 - '@noble/curves': 1.6.0 - '@noble/hashes': 1.5.0 - '@solana/buffer-layout': 4.0.1 - agentkeepalive: 4.5.0 - bigint-buffer: 1.1.5 - bn.js: 5.2.1 - borsh: 0.7.0 - bs58: 4.0.1 - buffer: 6.0.3 - fast-stable-stringify: 1.0.0 - jayson: 4.1.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) - node-fetch: 2.7.0 - rpc-websockets: 9.0.4 - superstruct: 2.0.2 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - - '@swc/helpers@0.5.13': - dependencies: - tslib: 2.8.0 - - '@types/bn.js@5.1.6': - dependencies: - '@types/node': 22.8.4 - - '@types/chai@4.3.20': {} - - '@types/connect@3.4.38': - dependencies: - '@types/node': 12.20.55 - - '@types/fs-extra@11.0.4': - dependencies: - '@types/jsonfile': 6.1.4 - '@types/node': 22.8.4 - optional: true - - '@types/json5@0.0.29': - optional: true - - '@types/jsonfile@6.1.4': - dependencies: - '@types/node': 22.8.4 - optional: true - - '@types/mocha@9.1.1': {} - - '@types/node@12.20.55': {} - - '@types/node@22.8.4': - dependencies: - undici-types: 6.19.8 - - '@types/uuid@8.3.4': {} - - '@types/ws@7.4.7': - dependencies: - '@types/node': 12.20.55 - - '@types/ws@8.5.12': - dependencies: - '@types/node': 22.8.4 - - '@ungap/promise-all-settled@1.1.2': {} - - JSONStream@1.3.5: - dependencies: - jsonparse: 1.3.1 - through: 2.3.8 - - agentkeepalive@4.5.0: - dependencies: - humanize-ms: 1.2.1 - - ansi-colors@4.1.1: {} - - ansi-regex@5.0.1: {} - - ansi-styles@4.3.0: - dependencies: - color-convert: 2.0.1 - - ansicolors@0.3.2: {} - - anymatch@3.1.3: - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - - argparse@2.0.1: {} - - arrify@1.0.1: {} - - assert@2.1.0: - dependencies: - call-bind: 1.0.7 - is-nan: 1.3.2 - object-is: 1.1.6 - object.assign: 4.1.5 - util: 0.12.5 - - assertion-error@1.1.0: {} - - available-typed-arrays@1.0.7: - dependencies: - possible-typed-array-names: 1.0.0 - - balanced-match@1.0.2: {} - - base-x@3.0.10: - dependencies: - safe-buffer: 5.2.1 - - base-x@4.0.0: {} - - base64-js@1.5.1: {} - - bigint-buffer@1.1.5: - dependencies: - bindings: 1.5.0 - - bignumber.js@9.1.2: {} - - binary-extensions@2.3.0: {} - - bindings@1.5.0: - dependencies: - file-uri-to-path: 1.0.0 - - bn.js@5.2.1: {} - - borsh@0.7.0: - dependencies: - bn.js: 5.2.1 - bs58: 4.0.1 - text-encoding-utf-8: 1.0.2 - - brace-expansion@1.1.11: - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - - braces@3.0.3: - dependencies: - fill-range: 7.1.1 - - browser-stdout@1.3.1: {} - - bs58@4.0.1: - dependencies: - base-x: 3.0.10 - - bs58@5.0.0: - dependencies: - base-x: 4.0.0 - - buffer-from@1.1.2: {} - - buffer@6.0.3: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - - bufferutil@4.0.8: - dependencies: - node-gyp-build: 4.8.2 - optional: true - - call-bind@1.0.7: - dependencies: - es-define-property: 1.0.0 - es-errors: 1.3.0 - function-bind: 1.1.2 - get-intrinsic: 1.2.4 - set-function-length: 1.2.2 - - camelcase@6.3.0: {} - - chai@4.5.0: - dependencies: - assertion-error: 1.1.0 - check-error: 1.0.3 - deep-eql: 4.1.4 - get-func-name: 2.0.2 - loupe: 2.3.7 - pathval: 1.1.1 - type-detect: 4.1.0 - - chalk@4.1.2: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - - chalk@5.3.0: {} - - check-error@1.0.3: - dependencies: - get-func-name: 2.0.2 - - chokidar@3.5.3: - dependencies: - anymatch: 3.1.3 - braces: 3.0.3 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - - cliui@7.0.4: - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - - color-convert@2.0.1: - dependencies: - color-name: 1.1.4 - - color-name@1.1.4: {} - - commander@12.1.0: {} - - commander@2.20.3: {} - - concat-map@0.0.1: {} - - debug@4.3.3(supports-color@8.1.1): - dependencies: - ms: 2.1.2 - optionalDependencies: - supports-color: 8.1.1 - - debug@4.3.7: - dependencies: - ms: 2.1.3 - - decamelize@4.0.0: {} - - deep-eql@4.1.4: - dependencies: - type-detect: 4.1.0 - - define-data-property@1.1.4: - dependencies: - es-define-property: 1.0.0 - es-errors: 1.3.0 - gopd: 1.0.1 - - define-properties@1.2.1: - dependencies: - define-data-property: 1.1.4 - has-property-descriptors: 1.0.2 - object-keys: 1.1.1 - - delay@5.0.0: {} - - diff@3.5.0: {} - - diff@5.0.0: {} - - emoji-regex@8.0.0: {} - - es-define-property@1.0.0: - dependencies: - get-intrinsic: 1.2.4 - - es-errors@1.3.0: {} - - es6-promise@4.2.8: {} - - es6-promisify@5.0.0: - dependencies: - es6-promise: 4.2.8 - - escalade@3.2.0: {} - - escape-string-regexp@4.0.0: {} - - eventemitter3@5.0.1: {} - - eyes@0.1.8: {} - - fast-stable-stringify@1.0.0: {} - - fastestsmallesttextencoderdecoder@1.0.22: {} - - file-uri-to-path@1.0.0: {} - - fill-range@7.1.1: - dependencies: - to-regex-range: 5.0.1 - - find-up@5.0.0: - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - - flat@5.0.2: {} - - for-each@0.3.3: - dependencies: - is-callable: 1.2.7 - - fs.realpath@1.0.0: {} - - fs@0.0.1-security: {} - - fsevents@2.3.3: - optional: true - - function-bind@1.1.2: {} - - get-caller-file@2.0.5: {} - - get-func-name@2.0.2: {} - - get-intrinsic@1.2.4: - dependencies: - es-errors: 1.3.0 - function-bind: 1.1.2 - has-proto: 1.0.3 - has-symbols: 1.0.3 - hasown: 2.0.2 - - glob-parent@5.1.2: - dependencies: - is-glob: 4.0.3 - - glob@7.2.0: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - - gopd@1.0.1: - dependencies: - get-intrinsic: 1.2.4 - - growl@1.10.5: {} - - has-flag@4.0.0: {} - - has-property-descriptors@1.0.2: - dependencies: - es-define-property: 1.0.0 - - has-proto@1.0.3: {} - - has-symbols@1.0.3: {} - - has-tostringtag@1.0.2: - dependencies: - has-symbols: 1.0.3 - - hasown@2.0.2: - dependencies: - function-bind: 1.1.2 - - he@1.2.0: {} - - humanize-ms@1.2.1: - dependencies: - ms: 2.1.3 - - ieee754@1.2.1: {} - - inflight@1.0.6: - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - - inherits@2.0.4: {} - - is-arguments@1.1.1: - dependencies: - call-bind: 1.0.7 - has-tostringtag: 1.0.2 - - is-binary-path@2.1.0: - dependencies: - binary-extensions: 2.3.0 - - is-callable@1.2.7: {} - - is-extglob@2.1.1: {} - - is-fullwidth-code-point@3.0.0: {} - - is-generator-function@1.0.10: - dependencies: - has-tostringtag: 1.0.2 - - is-glob@4.0.3: - dependencies: - is-extglob: 2.1.1 - - is-nan@1.3.2: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - - is-number@7.0.0: {} - - is-plain-obj@2.1.0: {} - - is-typed-array@1.1.13: - dependencies: - which-typed-array: 1.1.15 - - is-unicode-supported@0.1.0: {} - - isexe@2.0.0: {} - - isomorphic-ws@4.0.1(ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10)): - dependencies: - ws: 7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) - - jayson@4.1.2(bufferutil@4.0.8)(utf-8-validate@5.0.10): - dependencies: - '@types/connect': 3.4.38 - '@types/node': 12.20.55 - '@types/ws': 7.4.7 - JSONStream: 1.3.5 - commander: 2.20.3 - delay: 5.0.0 - es6-promisify: 5.0.0 - eyes: 0.1.8 - isomorphic-ws: 4.0.1(ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10)) - json-stringify-safe: 5.0.1 - uuid: 8.3.2 - ws: 7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - js-yaml@4.1.0: - dependencies: - argparse: 2.0.1 - - json-stringify-safe@5.0.1: {} - - json5@1.0.2: - dependencies: - minimist: 1.2.8 - optional: true - - jsonparse@1.3.1: {} - - locate-path@6.0.0: - dependencies: - p-locate: 5.0.0 - - log-symbols@4.1.0: - dependencies: - chalk: 4.1.2 - is-unicode-supported: 0.1.0 - - loupe@2.3.7: - dependencies: - get-func-name: 2.0.2 - - make-error@1.3.6: {} - - minimatch@3.1.2: - dependencies: - brace-expansion: 1.1.11 - - minimatch@4.2.1: - dependencies: - brace-expansion: 1.1.11 - - minimist@1.2.8: {} - - mkdirp@0.5.6: - dependencies: - minimist: 1.2.8 - - mocha@9.2.2: - dependencies: - '@ungap/promise-all-settled': 1.1.2 - ansi-colors: 4.1.1 - browser-stdout: 1.3.1 - chokidar: 3.5.3 - debug: 4.3.3(supports-color@8.1.1) - diff: 5.0.0 - escape-string-regexp: 4.0.0 - find-up: 5.0.0 - glob: 7.2.0 - growl: 1.10.5 - he: 1.2.0 - js-yaml: 4.1.0 - log-symbols: 4.1.0 - minimatch: 4.2.1 - ms: 2.1.3 - nanoid: 3.3.1 - serialize-javascript: 6.0.0 - strip-json-comments: 3.1.1 - supports-color: 8.1.1 - which: 2.0.2 - workerpool: 6.2.0 - yargs: 16.2.0 - yargs-parser: 20.2.4 - yargs-unparser: 2.0.0 - - ms@2.1.2: {} - - ms@2.1.3: {} - - nanoid@3.3.1: {} - - node-fetch@2.7.0: - dependencies: - whatwg-url: 5.0.0 - - node-gyp-build@4.8.2: - optional: true - - normalize-path@3.0.0: {} - - object-is@1.1.6: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - - object-keys@1.1.1: {} - - object.assign@4.1.5: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - has-symbols: 1.0.3 - object-keys: 1.1.1 - - once@1.4.0: - dependencies: - wrappy: 1.0.2 - - p-limit@3.1.0: - dependencies: - yocto-queue: 0.1.0 - - p-locate@5.0.0: - dependencies: - p-limit: 3.1.0 - - path-exists@4.0.0: {} - - path-is-absolute@1.0.1: {} - - pathval@1.1.1: {} - - picomatch@2.3.1: {} - - possible-typed-array-names@1.0.0: {} - - randombytes@2.1.0: - dependencies: - safe-buffer: 5.2.1 - - readdirp@3.6.0: - dependencies: - picomatch: 2.3.1 - - regenerator-runtime@0.14.1: {} - - require-directory@2.1.1: {} - - rpc-websockets@9.0.4: - dependencies: - '@swc/helpers': 0.5.13 - '@types/uuid': 8.3.4 - '@types/ws': 8.5.12 - buffer: 6.0.3 - eventemitter3: 5.0.1 - uuid: 8.3.2 - ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - optionalDependencies: - bufferutil: 4.0.8 - utf-8-validate: 5.0.10 - - safe-buffer@5.2.1: {} - - serialize-javascript@6.0.0: - dependencies: - randombytes: 2.1.0 - - set-function-length@1.2.2: - dependencies: - define-data-property: 1.1.4 - es-errors: 1.3.0 - function-bind: 1.1.2 - get-intrinsic: 1.2.4 - gopd: 1.0.1 - has-property-descriptors: 1.0.2 - - solana-bankrun-darwin-arm64@0.4.0: - optional: true - - solana-bankrun-darwin-universal@0.4.0: - optional: true - - solana-bankrun-darwin-x64@0.4.0: - optional: true - - solana-bankrun-linux-x64-gnu@0.4.0: - optional: true - - solana-bankrun-linux-x64-musl@0.4.0: - optional: true - - solana-bankrun@0.4.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): - dependencies: - '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) - bs58: 4.0.1 - optionalDependencies: - solana-bankrun-darwin-arm64: 0.4.0 - solana-bankrun-darwin-universal: 0.4.0 - solana-bankrun-darwin-x64: 0.4.0 - solana-bankrun-linux-x64-gnu: 0.4.0 - solana-bankrun-linux-x64-musl: 0.4.0 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - - source-map-support@0.5.21: - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - - source-map@0.6.1: {} - - string-width@4.2.3: - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - - strip-ansi@6.0.1: - dependencies: - ansi-regex: 5.0.1 - - strip-bom@3.0.0: - optional: true - - strip-json-comments@3.1.1: {} - - superstruct@2.0.2: {} - - supports-color@7.2.0: - dependencies: - has-flag: 4.0.0 - - supports-color@8.1.1: - dependencies: - has-flag: 4.0.0 - - text-encoding-utf-8@1.0.2: {} - - through@2.3.8: {} - - to-regex-range@5.0.1: - dependencies: - is-number: 7.0.0 - - tr46@0.0.3: {} - - ts-mocha@10.0.0(mocha@9.2.2): - dependencies: - mocha: 9.2.2 - ts-node: 7.0.1 - optionalDependencies: - tsconfig-paths: 3.15.0 - - ts-node@7.0.1: - dependencies: - arrify: 1.0.1 - buffer-from: 1.1.2 - diff: 3.5.0 - make-error: 1.3.6 - minimist: 1.2.8 - mkdirp: 0.5.6 - source-map-support: 0.5.21 - yn: 2.0.0 - - tsconfig-paths@3.15.0: - dependencies: - '@types/json5': 0.0.29 - json5: 1.0.2 - minimist: 1.2.8 - strip-bom: 3.0.0 - optional: true - - tslib@2.8.0: {} - - type-detect@4.1.0: {} - - typescript@4.9.5: {} - - undici-types@6.19.8: {} - - utf-8-validate@5.0.10: - dependencies: - node-gyp-build: 4.8.2 - optional: true - - util@0.12.5: - dependencies: - inherits: 2.0.4 - is-arguments: 1.1.1 - is-generator-function: 1.0.10 - is-typed-array: 1.1.13 - which-typed-array: 1.1.15 - - uuid@8.3.2: {} - - webidl-conversions@3.0.1: {} - - whatwg-url@5.0.0: - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - - which-typed-array@1.1.15: - dependencies: - available-typed-arrays: 1.0.7 - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-tostringtag: 1.0.2 - - which@2.0.2: - dependencies: - isexe: 2.0.0 - - workerpool@6.2.0: {} - - wrap-ansi@7.0.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - wrappy@1.0.2: {} - - ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10): - optionalDependencies: - bufferutil: 4.0.8 - utf-8-validate: 5.0.10 - - ws@8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): - optionalDependencies: - bufferutil: 4.0.8 - utf-8-validate: 5.0.10 - - y18n@5.0.8: {} - - yargs-parser@20.2.4: {} - - yargs-unparser@2.0.0: - dependencies: - camelcase: 6.3.0 - decamelize: 4.0.0 - flat: 5.0.2 - is-plain-obj: 2.1.0 - - yargs@16.2.0: - dependencies: - cliui: 7.0.4 - escalade: 3.2.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 20.2.4 - - yn@2.0.0: {} - - yocto-queue@0.1.0: {} - - zx@8.1.9: - optionalDependencies: - '@types/fs-extra': 11.0.4 - '@types/node': 22.8.4 diff --git a/tokens/pda-mint-authority/steel/prepare.mjs b/tokens/pda-mint-authority/steel/prepare.mjs deleted file mode 100644 index 7c5ec464b..000000000 --- a/tokens/pda-mint-authority/steel/prepare.mjs +++ /dev/null @@ -1,34 +0,0 @@ -#!/usr/bin/env zx - -import { mkdir, rm } from 'node:fs/promises'; -import { join } from 'node:path'; -import { $ } from 'zx'; - -const programs = [ - { - id: 'metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s', - name: 'token_metadata.so', - }, -]; - -const outputDir = 'tests/fixtures'; -const overwrite = true; - -try { - for (const program of programs) { - const { id, name } = program; - const outputFile = join(outputDir, name); - await $`solana config set -um`; - - try { - await mkdir(outputDir, { recursive: true }); - if (overwrite) await rm(outputFile, { force: true }); - await $`solana program dump ${id} ${outputFile}`; - console.log(`Program ${id} dumped to ${outputFile}`); - } catch (error) { - console.error(`Error dumping ${id}: ${error.message}`); - } - } -} catch (error) { - console.error(`Error preparing programs: ${error.message}`); -} diff --git a/tokens/pda-mint-authority/steel/program/Cargo.toml b/tokens/pda-mint-authority/steel/program/Cargo.toml deleted file mode 100644 index 117641116..000000000 --- a/tokens/pda-mint-authority/steel/program/Cargo.toml +++ /dev/null @@ -1,22 +0,0 @@ -[package] -name = "pda-mint-authority-program" -version = "0.1.0" -edition = "2021" - -[lib] -crate-type = ["cdylib", "lib"] - -[dependencies] -pda-mint-authority-api.workspace = true -solana-program.workspace = true -steel.workspace = true -spl-token.workspace = true -mpl-token-metadata.workspace = true -spl-associated-token-account.workspace = true - -[dev-dependencies] -base64 = "0.21" -rand = "0.8.5" -solana-program-test = "1.18" -solana-sdk = "1.18" -tokio = { version = "1.35", features = ["full"] } diff --git a/tokens/pda-mint-authority/steel/program/build.rs b/tokens/pda-mint-authority/steel/program/build.rs deleted file mode 100644 index 2c8fdeb01..000000000 --- a/tokens/pda-mint-authority/steel/program/build.rs +++ /dev/null @@ -1,43 +0,0 @@ -// build.rs -use std::fs; -use std::process::Command; - -fn check_solana_installation() -> Result<(), String> { - match Command::new("solana").arg("--version").output() { - Ok(output) => { - if output.status.success() { - Ok(()) - } else { - Err("Solana CLI is available but returned an error".to_string()) - } - } - Err(e) => Err(format!("Solana CLI is not installed or not in PATH: {}", e)), - } -} - -fn main() { - println!("cargo:rerun-if-changed=build.rs"); - - // Check if Solana is installed - if let Err(err) = check_solana_installation() { - println!("cargo:warning=Solana check failed: {}", err); - return; - } - - // Create the fixtures directory path - fs::create_dir_all("tests/fixtures").expect("Failed to create fixtures directory"); - - let status = Command::new("solana") - .args([ - "program", - "dump", - "metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s", - "tests/fixtures/token_metadata.so", - ]) - .status() - .expect("Failed to run solana program dump command"); - - if !status.success() { - panic!("Failed to dump Solana program"); - } -} diff --git a/tokens/pda-mint-authority/steel/program/src/create.rs b/tokens/pda-mint-authority/steel/program/src/create.rs deleted file mode 100644 index 01cb9b585..000000000 --- a/tokens/pda-mint-authority/steel/program/src/create.rs +++ /dev/null @@ -1,107 +0,0 @@ -use pda_mint_authority_api::prelude::*; -use solana_program::msg; -use solana_program::program_pack::Pack; -use spl_token::state::Mint; -use steel::*; - -pub fn process_create(accounts: &[AccountInfo<'_>], data: &[u8]) -> ProgramResult { - // parse args. - let args = Create::try_from_bytes(data)?; - let token_name = String::from_utf8(args.token_name.to_vec()).expect("Invalid UTF-8"); - let token_symbol = String::from_utf8(args.token_symbol.to_vec()).expect("Invalid UTF-8"); - let token_uri = String::from_utf8(args.token_uri.to_vec()).expect("Invalid UTF-8"); - - // Load accounts. - let [mint_info, mint_authority_info, metadata_info, payer_info, system_program, token_program, token_metadata_program, rent_sysvar] = - accounts - else { - return Err(ProgramError::NotEnoughAccountKeys); - }; - // validation - payer_info.is_signer()?; - mint_info.is_empty()?.is_writable()?; - rent_sysvar.is_sysvar(&sysvar::rent::ID)?; - system_program.is_program(&system_program::ID)?; - token_program.is_program(&spl_token::ID)?; - msg!("{:?}", token_metadata_program.is_executable()); - - let (mint_authority_pda, bump) = mint_authority_pda(); - assert!(&mint_authority_pda.eq(mint_authority_info.key)); - - mint_authority_info - .is_writable()? - .has_seeds(&[MINT_AUTHORITY], &pda_mint_authority_api::ID)?; - - // First create the account for the Mint - // - msg!("Creating mint account..."); - msg!("Mint: {}", mint_info.key); - solana_program::program::invoke( - &solana_program::system_instruction::create_account( - payer_info.key, - mint_info.key, - (solana_program::rent::Rent::get()?).minimum_balance(Mint::LEN), - Mint::LEN as u64, - token_program.key, - ), - &[ - mint_info.clone(), - payer_info.clone(), - system_program.clone(), - token_program.clone(), - ], - )?; - - // Now initialize that account as a Mint (standard Mint) - // - msg!("Initializing mint account..."); - msg!("Mint: {}", mint_info.key); - solana_program::program::invoke( - &spl_token::instruction::initialize_mint( - token_program.key, - mint_info.key, - mint_authority_info.key, - Some(mint_authority_info.key), - 9, // 9 Decimals for the default SPL Token standard, - )?, - &[ - token_program.clone(), - mint_info.clone(), - mint_authority_info.clone(), - rent_sysvar.clone(), - ], - )?; - - // Now create the account for that Mint's metadata - // - msg!("Creating metadata account..."); - msg!("Metadata account address: {}", metadata_info.key); - mpl_token_metadata::instructions::CreateMetadataAccountV3Cpi { - __program: token_metadata_program, - metadata: metadata_info, - mint: mint_info, - mint_authority: mint_authority_info, - payer: payer_info, - update_authority: (mint_authority_info, true), - system_program, - rent: Some(rent_sysvar), - __args: mpl_token_metadata::instructions::CreateMetadataAccountV3InstructionArgs { - data: mpl_token_metadata::types::DataV2 { - name: token_name, - symbol: token_symbol, - uri: token_uri, - seller_fee_basis_points: 0, - creators: None, - collection: None, - uses: None, - }, - is_mutable: true, - collection_details: None, - }, - } - .invoke_signed(&[&[MINT_AUTHORITY, &[bump]]])?; - - msg!("Token mint created successfully."); - - Ok(()) -} diff --git a/tokens/pda-mint-authority/steel/program/src/init.rs b/tokens/pda-mint-authority/steel/program/src/init.rs deleted file mode 100644 index 4d2bc4da9..000000000 --- a/tokens/pda-mint-authority/steel/program/src/init.rs +++ /dev/null @@ -1,35 +0,0 @@ -use pda_mint_authority_api::prelude::*; -use solana_program::msg; -use steel::*; - -pub fn process_init(accounts: &[AccountInfo<'_>], _data: &[u8]) -> ProgramResult { - // Load accounts. - let [mint_authority_info, payer_info, system_program] = accounts else { - return Err(ProgramError::NotEnoughAccountKeys); - }; - - // validation - payer_info.is_signer()?; - mint_authority_info - .is_empty()? - .is_writable()? - .has_seeds(&[MINT_AUTHORITY], &pda_mint_authority_api::ID)?; - system_program.is_program(&system_program::ID)?; - - msg!("Creating mint authority PDA..."); - msg!("Mint Authority: {}", &mint_authority_info.key); - create_account::( - mint_authority_info, - system_program, - payer_info, - &pda_mint_authority_api::ID, - &[MINT_AUTHORITY], - )?; - - let mint_authority = - mint_authority_info.as_account_mut::(&pda_mint_authority_api::ID)?; - let mint_authority_bump = mint_authority_pda().1; - mint_authority.bump = mint_authority_bump; - - Ok(()) -} diff --git a/tokens/pda-mint-authority/steel/program/src/lib.rs b/tokens/pda-mint-authority/steel/program/src/lib.rs deleted file mode 100644 index 59a3bfac1..000000000 --- a/tokens/pda-mint-authority/steel/program/src/lib.rs +++ /dev/null @@ -1,28 +0,0 @@ -mod create; -mod init; -mod mint; - -pub use create::*; -pub use init::*; -pub use mint::*; - -use pda_mint_authority_api::prelude::*; -use steel::*; - -pub fn process_instruction( - program_id: &Pubkey, - accounts: &[AccountInfo], - data: &[u8], -) -> ProgramResult { - let (ix, data) = parse_instruction(&pda_mint_authority_api::ID, program_id, data)?; - - match ix { - SteelInstruction::Create => process_create(accounts, data)?, - SteelInstruction::Mint => process_mint(accounts, data)?, - SteelInstruction::Init => process_init(accounts, data)?, - } - - Ok(()) -} - -entrypoint!(process_instruction); diff --git a/tokens/pda-mint-authority/steel/program/src/mint.rs b/tokens/pda-mint-authority/steel/program/src/mint.rs deleted file mode 100644 index e26ff544f..000000000 --- a/tokens/pda-mint-authority/steel/program/src/mint.rs +++ /dev/null @@ -1,74 +0,0 @@ -use pda_mint_authority_api::prelude::*; -use solana_program::msg; -use steel::*; - -pub fn process_mint(accounts: &[AccountInfo<'_>], data: &[u8]) -> ProgramResult { - // parse args. - let args = Mint::try_from_bytes(data)?; - let amount = u64::from_le_bytes(args.amount); - - // Load accounts. - let [payer_info, mint_info, ata_info, mint_authority_info, token_program, associated_token_program, system_program] = - accounts - else { - return Err(ProgramError::NotEnoughAccountKeys); - }; - - msg!("Minting tokens to associated token account..."); - msg!("Mint: {:?}", mint_info); - msg!("Token Address: {:?}", &ata_info); - - // validation - payer_info.is_signer()?; - mint_info.as_mint()?; - token_program.is_program(&spl_token::ID)?; - - if ata_info.lamports() == 0 { - msg!("Creating associated token account..."); - create_associated_token_account( - payer_info, - payer_info, - ata_info, - mint_info, - system_program, - token_program, - associated_token_program, - )?; - msg!("Associated Token Address: {}", ata_info.key); - } else { - msg!("Associated token account exists."); - } - - mint_authority_info - .is_writable()? - .has_seeds(&[MINT_AUTHORITY], &pda_mint_authority_api::ID)?; - ata_info - .is_writable()? - .as_associated_token_account(payer_info.key, mint_info.key)?; - - msg!("Minting token to associated token account..."); - msg!("Mint: {}", mint_info.key); - msg!("Token Address: {}", ata_info.key); - - solana_program::program::invoke_signed( - &spl_token::instruction::mint_to( - &spl_token::id(), - mint_info.key, - ata_info.key, - mint_authority_info.key, - &[mint_authority_info.key], - amount, - )?, - &[ - token_program.clone(), - mint_info.clone(), - ata_info.clone(), - mint_authority_info.clone(), - ], - &[&[MINT_AUTHORITY, &[mint_authority_pda().1]]], - )?; - - msg!("Token minted successfully."); - - Ok(()) -} diff --git a/tokens/pda-mint-authority/steel/program/tests/test.rs b/tokens/pda-mint-authority/steel/program/tests/test.rs deleted file mode 100644 index c80dd2751..000000000 --- a/tokens/pda-mint-authority/steel/program/tests/test.rs +++ /dev/null @@ -1,69 +0,0 @@ -use pda_mint_authority_api::prelude::*; -use solana_program::hash::Hash; -use solana_program_test::{processor, BanksClient, ProgramTest}; -use solana_sdk::{signature::Keypair, signer::Signer, transaction::Transaction}; - -async fn setup() -> (BanksClient, Keypair, Hash) { - let mut program_test = ProgramTest::new( - "pda_mint_authority_program", - pda_mint_authority_api::ID, - processor!(pda_mint_authority_program::process_instruction), - ); - - program_test.add_program("token_metadata", mpl_token_metadata::ID, None); - - program_test.prefer_bpf(true); - program_test.start().await -} - -#[tokio::test] -async fn run_test() { - // Setup test - let (mut banks, payer, blockhash) = setup().await; - let token_mint_keypair = Keypair::new(); - - let name = str_to_bytes::<32>("Solana Gold"); - let symbol = str_to_bytes::<8>("GOLDSOL"); - let uri = str_to_bytes::<64>("https://raw.githubusercontent.com/solana-developers/program-examples/new-examples/tokens/tokens/.assets/spl-token.json"); - - // Submit init transaction. - let ix = init(payer.pubkey()); - let tx = Transaction::new_signed_with_payer(&[ix], Some(&payer.pubkey()), &[&payer], blockhash); - let res = banks.process_transaction(tx).await; - assert!(res.is_ok()); - - // Submit create transaction for spl token. - let ix = create( - payer.pubkey(), - token_mint_keypair.pubkey(), - name, - symbol, - uri, - ); - let tx = Transaction::new_signed_with_payer( - &[ix], - Some(&payer.pubkey()), - &[&payer, &token_mint_keypair], - blockhash, - ); - let res = banks.process_transaction(tx).await; - assert!(res.is_ok()); - - let to_ata = spl_associated_token_account::get_associated_token_address( - &payer.pubkey(), - &token_mint_keypair.pubkey(), - ); - - // Submit mint transaction. - let ix = mint(payer.pubkey(), token_mint_keypair.pubkey(), to_ata, 100); - let tx = Transaction::new_signed_with_payer(&[ix], Some(&payer.pubkey()), &[&payer], blockhash); - let res = banks.process_transaction(tx).await; - assert!(res.is_ok()); -} - -pub fn str_to_bytes(str: &str) -> [u8; N] { - let mut str_bytes = [0u8; N]; - let copy_len = str.len().min(N); - str_bytes[..copy_len].copy_from_slice(&str.as_bytes()[..copy_len]); - str_bytes -} diff --git a/tokens/pda-mint-authority/steel/tests/instructions.ts b/tokens/pda-mint-authority/steel/tests/instructions.ts deleted file mode 100644 index b96a79567..000000000 --- a/tokens/pda-mint-authority/steel/tests/instructions.ts +++ /dev/null @@ -1,91 +0,0 @@ -import { BN } from 'bn.js'; - -class Assignable { - constructor(properties) { - for (const [key, value] of Object.entries(properties)) { - this[key] = value; - } - } -} - -// Helper function to pad strings to fixed length buffers -function strToBytes(str: string, length: number): Buffer { - const buffer = Buffer.alloc(length); - buffer.write(str); - return buffer; -} - -export enum PDAMintAuthorityInstruction { - Init = 0, - Create = 1, - Mint = 2, -} - -export class InitArgs { - instruction: number; - - constructor() { - this.instruction = PDAMintAuthorityInstruction.Init; - } - - toBuffer(): Buffer { - // Only need 1 byte for the instruction as there are no other fields - const buffer = Buffer.alloc(1); - buffer.writeUInt8(this.instruction, 0); - return buffer; - } -} - -export class CreateTokenArgs { - instruction: number; - name: Buffer; - symbol: Buffer; - uri: Buffer; - - constructor(name: string, symbol: string, uri: string) { - this.instruction = PDAMintAuthorityInstruction.Create; - this.name = strToBytes(name, 32); - this.symbol = strToBytes(symbol, 8); - this.uri = strToBytes(uri, 64); - } - - toBuffer(): Buffer { - const buffer = Buffer.alloc(1 + 32 + 8 + 64); - let offset = 0; - - buffer.writeUInt8(this.instruction, offset); - offset += 1; - - this.name.copy(buffer, offset); - offset += 32; - this.symbol.copy(buffer, offset); - offset += 8; - this.uri.copy(buffer, offset); - - return buffer; - } -} - -export class MintToArgs { - instruction: number; - quantity: BN; - - constructor(quantity: number) { - this.instruction = PDAMintAuthorityInstruction.Mint; - this.quantity = new BN(quantity); - } - - toBuffer(): Buffer { - const buffer = Buffer.alloc(9); // 1 byte for instruction + 8 bytes for u64 quantity - let offset = 0; - - // Write instruction - buffer.writeUInt8(this.instruction, offset); - offset += 1; - - // Write quantity as u64 LE (8 bytes) - this.quantity.toBuffer('le', 8).copy(buffer, offset); - - return buffer; - } -} diff --git a/tokens/pda-mint-authority/steel/tests/tests.ts b/tokens/pda-mint-authority/steel/tests/tests.ts deleted file mode 100644 index eb821822f..000000000 --- a/tokens/pda-mint-authority/steel/tests/tests.ts +++ /dev/null @@ -1,142 +0,0 @@ -import { Buffer } from 'node:buffer'; -import { describe, test } from 'node:test'; -import { PROGRAM_ID as TOKEN_METADATA_PROGRAM_ID } from '@metaplex-foundation/mpl-token-metadata'; -import { ASSOCIATED_TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID, getAssociatedTokenAddressSync } from '@solana/spl-token'; -import { Keypair, PublicKey, SYSVAR_RENT_PUBKEY, SystemProgram, Transaction, TransactionInstruction } from '@solana/web3.js'; -import { start } from 'solana-bankrun'; -import { CreateTokenArgs, InitArgs, MintToArgs } from './instructions'; - -describe('PDA MINT AUTHORITY', async () => { - const PROGRAM_ID = new PublicKey('z7msBPQHDJjTvdQRoEcKyENgXDhSRYeHieN1ZMTqo35'); - const context = await start( - [ - { name: 'pda_mint_authority_program', programId: PROGRAM_ID }, - { name: 'token_metadata', programId: TOKEN_METADATA_PROGRAM_ID }, - ], - [], - ); - const client = context.banksClient; - const payer = context.payer; - - const mintKeypair: Keypair = Keypair.generate(); - const mintAuthorityPublicKey = PublicKey.findProgramAddressSync([Buffer.from('mint_authority')], PROGRAM_ID)[0]; - - test('Init mint authority PDA!', async () => { - const metadataPDA = PublicKey.findProgramAddressSync( - [Buffer.from('metadata'), TOKEN_METADATA_PROGRAM_ID.toBuffer(), mintKeypair.publicKey.toBuffer()], - TOKEN_METADATA_PROGRAM_ID, - )[0]; - - const initArgs = new InitArgs(); - - const initIx = new TransactionInstruction({ - keys: [ - { pubkey: mintAuthorityPublicKey, isSigner: false, isWritable: true }, - { pubkey: payer.publicKey, isSigner: false, isWritable: true }, - { pubkey: SystemProgram.programId, isSigner: false, isWritable: false }, - ], - programId: PROGRAM_ID, - data: initArgs.toBuffer(), - }); - - const tx = new Transaction(); - const [blockhash, _] = await client.getLatestBlockhash(); - tx.recentBlockhash = blockhash; - tx.add(initIx).sign(payer); - - await client.processTransaction(tx); - - console.log('Success!'); - console.log(` Mint Address: ${mintKeypair.publicKey}`); - }); - - test('Create a SPL Token with PDA!', async () => { - const metadataPDA = PublicKey.findProgramAddressSync( - [Buffer.from('metadata'), TOKEN_METADATA_PROGRAM_ID.toBuffer(), mintKeypair.publicKey.toBuffer()], - TOKEN_METADATA_PROGRAM_ID, - )[0]; - - // SPL Token default = 9 decimals - // - const createArgs = new CreateTokenArgs( - 'Solana Gold', - 'GOLDSOL', - 'https://raw.githubusercontent.com/solana-developers/program-examples/new-examples/tokens/tokens/.assets/spl-token.json', - ); - - const createTokenIx = new TransactionInstruction({ - keys: [ - { pubkey: mintKeypair.publicKey, isSigner: true, isWritable: true }, - { pubkey: mintAuthorityPublicKey, isSigner: false, isWritable: true }, - { pubkey: metadataPDA, isSigner: false, isWritable: true }, - { pubkey: payer.publicKey, isSigner: true, isWritable: true }, - { - pubkey: SystemProgram.programId, - isSigner: false, - isWritable: false, - }, - { pubkey: TOKEN_PROGRAM_ID, isSigner: false, isWritable: false }, - { - pubkey: TOKEN_METADATA_PROGRAM_ID, - isSigner: false, - isWritable: false, - }, - { pubkey: SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false }, - ], - programId: PROGRAM_ID, - data: createArgs.toBuffer(), - }); - - const tx = new Transaction(); - const [blockhash, _] = await client.getLatestBlockhash(); - tx.recentBlockhash = blockhash; - tx.add(createTokenIx).sign(payer, mintKeypair); - - await client.processTransaction(tx); - - console.log('Success!'); - console.log(` Mint Address: ${mintKeypair.publicKey}`); - }); - - test('Mint some tokens to your wallet with PDA!', async () => { - const associatedTokenAccountAddress = getAssociatedTokenAddressSync(mintKeypair.publicKey, payer.publicKey); - - const mintArgs = new MintToArgs(100); - - const mintToIx = new TransactionInstruction({ - keys: [ - { pubkey: payer.publicKey, isSigner: true, isWritable: true }, // payer - { pubkey: mintKeypair.publicKey, isSigner: false, isWritable: true }, // mint_pda must be writable - { - pubkey: associatedTokenAccountAddress, - isSigner: false, - isWritable: true, - }, // ATA - { pubkey: mintAuthorityPublicKey, isSigner: false, isWritable: true }, - { pubkey: TOKEN_PROGRAM_ID, isSigner: false, isWritable: false }, // spl_token::ID - { - pubkey: ASSOCIATED_TOKEN_PROGRAM_ID, - isSigner: false, - isWritable: false, - }, // spl_associated_token_account::ID - { - pubkey: SystemProgram.programId, - isSigner: false, - isWritable: false, - }, // system_program::ID - ], - programId: PROGRAM_ID, - data: mintArgs.toBuffer(), - }); - - const tx = new Transaction(); - const [blockhash, _] = await client.getLatestBlockhash(); - tx.recentBlockhash = blockhash; - tx.add(mintToIx).sign(payer); - - await client.processTransaction(tx); - - console.log('Success!'); - console.log(` ATA Address: ${associatedTokenAccountAddress}`); - }); -}); diff --git a/tokens/pda-mint-authority/steel/tsconfig.json b/tokens/pda-mint-authority/steel/tsconfig.json deleted file mode 100644 index cd5d2e3d0..000000000 --- a/tokens/pda-mint-authority/steel/tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "compilerOptions": { - "types": ["mocha", "chai"], - "typeRoots": ["./node_modules/@types"], - "lib": ["es2015"], - "module": "commonjs", - "target": "es6", - "esModuleInterop": true - } -} diff --git a/tokens/spl-token-minter/steel/.gitignore b/tokens/spl-token-minter/steel/.gitignore deleted file mode 100644 index 052739dbc..000000000 --- a/tokens/spl-token-minter/steel/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -target -test-ledger diff --git a/tokens/spl-token-minter/steel/Cargo.toml b/tokens/spl-token-minter/steel/Cargo.toml deleted file mode 100644 index d45016c8d..000000000 --- a/tokens/spl-token-minter/steel/Cargo.toml +++ /dev/null @@ -1,27 +0,0 @@ -[workspace] -resolver = "2" -members = ["api", "program"] - -[workspace.package] -version = "0.1.0" -edition = "2021" -license = "Apache-2.0" -homepage = "" -documentation = "" -repository = "" -readme = "./README.md" -keywords = ["solana"] - -[workspace.dependencies] -spl-token-minter-api = { path = "./api", version = "0.1.0" } -bytemuck = "1.14" -num_enum = "0.7" -solana-program = "2.1" -steel = { version = "3.0", features = ["spl"] } -thiserror = "1.0" -spl-token = "^4" -mpl-token-metadata = { version = "4.1.2" } -const-crypto = "0.1.0" -spl-associated-token-account = { version = "^2.3", features = [ - "no-entrypoint", -] } diff --git a/tokens/spl-token-minter/steel/README.md b/tokens/spl-token-minter/steel/README.md deleted file mode 100644 index 4f4fe2a54..000000000 --- a/tokens/spl-token-minter/steel/README.md +++ /dev/null @@ -1,22 +0,0 @@ -# Steel - -**Steel** is a ... - -## API -- [`Consts`](api/src/consts.rs) – Program constants. -- [`Error`](api/src/error.rs) – Custom program errors. -- [`Event`](api/src/event.rs) – Custom program events. -- [`Instruction`](api/src/instruction.rs) – Declared instructions. - -## Instructions -- [`Hello`](program/src/hello.rs) – Hello ... - -## State -- [`User`](api/src/state/user.rs) – User ... - -## Tests - -To run the test suit, use the Solana toolchain: -``` -cargo test-sbf -``` diff --git a/tokens/spl-token-minter/steel/api/Cargo.toml b/tokens/spl-token-minter/steel/api/Cargo.toml deleted file mode 100644 index f426b8964..000000000 --- a/tokens/spl-token-minter/steel/api/Cargo.toml +++ /dev/null @@ -1,15 +0,0 @@ -[package] -name = "spl-token-minter-api" -version = "0.1.0" -edition = "2021" - -[dependencies] -bytemuck.workspace = true -num_enum.workspace = true -solana-program.workspace = true -steel.workspace = true -thiserror.workspace = true -spl-token.workspace = true -mpl-token-metadata.workspace = true -const-crypto.workspace = true -spl-associated-token-account.workspace = true diff --git a/tokens/spl-token-minter/steel/api/src/consts.rs b/tokens/spl-token-minter/steel/api/src/consts.rs deleted file mode 100644 index 29271aa6f..000000000 --- a/tokens/spl-token-minter/steel/api/src/consts.rs +++ /dev/null @@ -1,2 +0,0 @@ -/// The seed of the metadata account PDA. -pub const METADATA: &[u8] = b"metadata"; diff --git a/tokens/spl-token-minter/steel/api/src/instruction.rs b/tokens/spl-token-minter/steel/api/src/instruction.rs deleted file mode 100644 index df7055016..000000000 --- a/tokens/spl-token-minter/steel/api/src/instruction.rs +++ /dev/null @@ -1,26 +0,0 @@ -use std::str; -use steel::*; - -#[repr(u8)] -#[derive(Clone, Copy, Debug, Eq, PartialEq, TryFromPrimitive)] -pub enum SteelInstruction { - Create = 0, - Mint = 1, -} - -#[repr(C)] -#[derive(Clone, Copy, Debug, Pod, Zeroable)] -pub struct Create { - pub token_name: [u8; 32], - pub token_symbol: [u8; 8], - pub token_uri: [u8; 64], -} - -#[repr(C)] -#[derive(Clone, Copy, Debug, Pod, Zeroable)] -pub struct Mint { - pub quantity: [u8; 8], -} - -instruction!(SteelInstruction, Mint); -instruction!(SteelInstruction, Create); diff --git a/tokens/spl-token-minter/steel/api/src/lib.rs b/tokens/spl-token-minter/steel/api/src/lib.rs deleted file mode 100644 index 35a7eac2c..000000000 --- a/tokens/spl-token-minter/steel/api/src/lib.rs +++ /dev/null @@ -1,16 +0,0 @@ -pub mod consts; -pub mod instruction; -pub mod sdk; -pub mod utils; - -pub mod prelude { - pub use crate::consts::*; - pub use crate::instruction::*; - pub use crate::sdk::*; - pub use crate::utils::*; -} - -use steel::*; - -// TODO Set program id -declare_id!("8V26fyhrQobKbvkRCV3KvT6jZQLzviovdARfGrw8kUdG"); diff --git a/tokens/spl-token-minter/steel/api/src/sdk.rs b/tokens/spl-token-minter/steel/api/src/sdk.rs deleted file mode 100644 index c9cf7b85f..000000000 --- a/tokens/spl-token-minter/steel/api/src/sdk.rs +++ /dev/null @@ -1,59 +0,0 @@ -use steel::*; - -use crate::prelude::*; - -pub fn create( - payer: Pubkey, - mint: Pubkey, - token_name: [u8; 32], - token_symbol: [u8; 8], - token_uri: [u8; 64], -) -> Instruction { - let metadata_pda = Pubkey::find_program_address( - &[METADATA, mpl_token_metadata::ID.as_ref(), mint.as_ref()], - &mpl_token_metadata::ID, - ); - - Instruction { - program_id: crate::ID, - accounts: vec![ - AccountMeta::new(payer, true), - AccountMeta::new(mint, true), - AccountMeta::new(metadata_pda.0, false), - AccountMeta::new_readonly(system_program::ID, false), - AccountMeta::new_readonly(spl_token::ID, false), - AccountMeta::new_readonly(mpl_token_metadata::ID, false), - AccountMeta::new_readonly(sysvar::rent::ID, false), - ], - data: Create { - token_name, - token_symbol, - token_uri, - } - .to_bytes(), - } -} -pub fn mint( - mint_authority: Pubkey, - recipient: Pubkey, - mint: Pubkey, - associated_token_account: Pubkey, - quantity: u64, -) -> Instruction { - Instruction { - program_id: crate::ID, - accounts: vec![ - AccountMeta::new(mint_authority, true), - AccountMeta::new(recipient, false), - AccountMeta::new(mint, false), - AccountMeta::new(associated_token_account, false), - AccountMeta::new_readonly(spl_token::ID, false), - AccountMeta::new_readonly(spl_associated_token_account::ID, false), - AccountMeta::new_readonly(system_program::ID, false), - ], - data: Mint { - quantity: quantity.to_le_bytes(), - } - .to_bytes(), - } -} diff --git a/tokens/spl-token-minter/steel/api/src/utils.rs b/tokens/spl-token-minter/steel/api/src/utils.rs deleted file mode 100644 index c067063d6..000000000 --- a/tokens/spl-token-minter/steel/api/src/utils.rs +++ /dev/null @@ -1,6 +0,0 @@ -pub fn str_to_bytes(str: &str) -> [u8; N] { - let mut str_bytes = [0u8; N]; - let copy_len = str.len().min(N); - str_bytes[..copy_len].copy_from_slice(&str.as_bytes()[..copy_len]); - str_bytes -} diff --git a/tokens/spl-token-minter/steel/cicd.sh b/tokens/spl-token-minter/steel/cicd.sh deleted file mode 100644 index 8a16e0387..000000000 --- a/tokens/spl-token-minter/steel/cicd.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash - -# This script is for quick building & deploying of the program. -# It also serves as a reference for the commands used for building & deploying Solana programs. -# Run this bad boy with "bash cicd.sh" or "./cicd.sh" - -cargo build-sbf --manifest-path=./program/Cargo.toml -solana program deploy ./program/target/deploy/program.so diff --git a/tokens/spl-token-minter/steel/package.json b/tokens/spl-token-minter/steel/package.json deleted file mode 100644 index 5a067be29..000000000 --- a/tokens/spl-token-minter/steel/package.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "scripts": { - "test": "pnpm ts-mocha -p ./tsconfig.json -t 1000000 ./tests/bankrun.test.ts", - "build-and-test": "cargo build-sbf --manifest-path=./program/Cargo.toml --sbf-out-dir=./tests/fixtures && pnpm test", - "build": "cargo build-sbf --manifest-path=./program/Cargo.toml --sbf-out-dir=./program/target/so", - "deploy": "solana program deploy ./program/target/so/spl_token_minter_program.so", - "postinstall": "zx prepare.mjs" - }, - "dependencies": { - "@metaplex-foundation/mpl-token-metadata": "^2.5.2", - "@solana/spl-token": "^0.3.7", - "@solana/web3.js": "^1.73.0", - "borsh": "^0.7.0", - "buffer": "^6.0.3", - "fs": "^0.0.1-security" - }, - "devDependencies": { - "@types/bn.js": "^5.1.0", - "@types/chai": "^4.3.1", - "@types/mocha": "^9.1.1", - "chai": "^4.3.4", - "mocha": "^9.0.3", - "ts-mocha": "^10.0.0", - "typescript": "^4.3.5", - "solana-bankrun": "^0.4.0", - "zx": "^8.1.4" - } -} diff --git a/tokens/spl-token-minter/steel/pnpm-lock.yaml b/tokens/spl-token-minter/steel/pnpm-lock.yaml deleted file mode 100644 index 787a11db3..000000000 --- a/tokens/spl-token-minter/steel/pnpm-lock.yaml +++ /dev/null @@ -1,1860 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -importers: - - .: - dependencies: - '@metaplex-foundation/mpl-token-metadata': - specifier: ^2.5.2 - version: 2.13.0(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)(utf-8-validate@5.0.10) - '@solana/spl-token': - specifier: ^0.3.7 - version: 0.3.11(@solana/web3.js@1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)(utf-8-validate@5.0.10) - '@solana/web3.js': - specifier: ^1.73.0 - version: 1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) - borsh: - specifier: ^0.7.0 - version: 0.7.0 - buffer: - specifier: ^6.0.3 - version: 6.0.3 - fs: - specifier: ^0.0.1-security - version: 0.0.1-security - devDependencies: - '@types/bn.js': - specifier: ^5.1.0 - version: 5.1.6 - '@types/chai': - specifier: ^4.3.1 - version: 4.3.20 - '@types/mocha': - specifier: ^9.1.1 - version: 9.1.1 - chai: - specifier: ^4.3.4 - version: 4.5.0 - mocha: - specifier: ^9.0.3 - version: 9.2.2 - solana-bankrun: - specifier: ^0.4.0 - version: 0.4.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - ts-mocha: - specifier: ^10.0.0 - version: 10.0.0(mocha@9.2.2) - typescript: - specifier: ^4.3.5 - version: 4.9.5 - zx: - specifier: ^8.1.4 - version: 8.1.9 - -packages: - - '@babel/runtime@7.26.0': - resolution: {integrity: sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==} - engines: {node: '>=6.9.0'} - - '@metaplex-foundation/beet-solana@0.4.1': - resolution: {integrity: sha512-/6o32FNUtwK8tjhotrvU/vorP7umBuRFvBZrC6XCk51aKidBHe5LPVPA5AjGPbV3oftMfRuXPNd9yAGeEqeCDQ==} - - '@metaplex-foundation/beet@0.7.2': - resolution: {integrity: sha512-K+g3WhyFxKPc0xIvcIjNyV1eaTVJTiuaHZpig7Xx0MuYRMoJLLvhLTnUXhFdR5Tu2l2QSyKwfyXDgZlzhULqFg==} - - '@metaplex-foundation/cusper@0.0.2': - resolution: {integrity: sha512-S9RulC2fFCFOQraz61bij+5YCHhSO9llJegK8c8Y6731fSi6snUSQJdCUqYS8AIgR0TKbQvdvgSyIIdbDFZbBA==} - - '@metaplex-foundation/mpl-token-metadata@2.13.0': - resolution: {integrity: sha512-Fl/8I0L9rv4bKTV/RAl5YIbJe9SnQPInKvLz+xR1fEc4/VQkuCn3RPgypfUMEKWmCznzaw4sApDxy6CFS4qmJw==} - - '@noble/curves@1.6.0': - resolution: {integrity: sha512-TlaHRXDehJuRNR9TfZDNQ45mMEd5dwUwmicsafcIX4SsNiqnCHKjE/1alYPd/lDRVhxdhUAlv8uEhMCI5zjIJQ==} - engines: {node: ^14.21.3 || >=16} - - '@noble/hashes@1.5.0': - resolution: {integrity: sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==} - engines: {node: ^14.21.3 || >=16} - - '@solana/buffer-layout-utils@0.2.0': - resolution: {integrity: sha512-szG4sxgJGktbuZYDg2FfNmkMi0DYQoVjN2h7ta1W1hPrwzarcFLBq9UpX1UjNXsNpT9dn+chgprtWGioUAr4/g==} - engines: {node: '>= 10'} - - '@solana/buffer-layout@4.0.1': - resolution: {integrity: sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==} - engines: {node: '>=5.10'} - - '@solana/codecs-core@2.0.0-rc.1': - resolution: {integrity: sha512-bauxqMfSs8EHD0JKESaNmNuNvkvHSuN3bbWAF5RjOfDu2PugxHrvRebmYauvSumZ3cTfQ4HJJX6PG5rN852qyQ==} - peerDependencies: - typescript: '>=5' - - '@solana/codecs-data-structures@2.0.0-rc.1': - resolution: {integrity: sha512-rinCv0RrAVJ9rE/rmaibWJQxMwC5lSaORSZuwjopSUE6T0nb/MVg6Z1siNCXhh/HFTOg0l8bNvZHgBcN/yvXog==} - peerDependencies: - typescript: '>=5' - - '@solana/codecs-numbers@2.0.0-rc.1': - resolution: {integrity: sha512-J5i5mOkvukXn8E3Z7sGIPxsThRCgSdgTWJDQeZvucQ9PT6Y3HiVXJ0pcWiOWAoQ3RX8e/f4I3IC+wE6pZiJzDQ==} - peerDependencies: - typescript: '>=5' - - '@solana/codecs-strings@2.0.0-rc.1': - resolution: {integrity: sha512-9/wPhw8TbGRTt6mHC4Zz1RqOnuPTqq1Nb4EyuvpZ39GW6O2t2Q7Q0XxiB3+BdoEjwA2XgPw6e2iRfvYgqty44g==} - peerDependencies: - fastestsmallesttextencoderdecoder: ^1.0.22 - typescript: '>=5' - - '@solana/codecs@2.0.0-rc.1': - resolution: {integrity: sha512-qxoR7VybNJixV51L0G1RD2boZTcxmwUWnKCaJJExQ5qNKwbpSyDdWfFJfM5JhGyKe9DnPVOZB+JHWXnpbZBqrQ==} - peerDependencies: - typescript: '>=5' - - '@solana/errors@2.0.0-rc.1': - resolution: {integrity: sha512-ejNvQ2oJ7+bcFAYWj225lyRkHnixuAeb7RQCixm+5mH4n1IA4Qya/9Bmfy5RAAHQzxK43clu3kZmL5eF9VGtYQ==} - hasBin: true - peerDependencies: - typescript: '>=5' - - '@solana/options@2.0.0-rc.1': - resolution: {integrity: sha512-mLUcR9mZ3qfHlmMnREdIFPf9dpMc/Bl66tLSOOWxw4ml5xMT2ohFn7WGqoKcu/UHkT9CrC6+amEdqCNvUqI7AA==} - peerDependencies: - typescript: '>=5' - - '@solana/spl-token-metadata@0.1.6': - resolution: {integrity: sha512-7sMt1rsm/zQOQcUWllQX9mD2O6KhSAtY1hFR2hfFwgqfFWzSY9E9GDvFVNYUI1F0iQKcm6HmePU9QbKRXTEBiA==} - engines: {node: '>=16'} - peerDependencies: - '@solana/web3.js': ^1.95.3 - - '@solana/spl-token@0.3.11': - resolution: {integrity: sha512-bvohO3rIMSVL24Pb+I4EYTJ6cL82eFpInEXD/I8K8upOGjpqHsKUoAempR/RnUlI1qSFNyFlWJfu6MNUgfbCQQ==} - engines: {node: '>=16'} - peerDependencies: - '@solana/web3.js': ^1.88.0 - - '@solana/web3.js@1.95.4': - resolution: {integrity: sha512-sdewnNEA42ZSMxqkzdwEWi6fDgzwtJHaQa5ndUGEJYtoOnM6X5cvPmjoTUp7/k7bRrVAxfBgDnvQQHD6yhlLYw==} - - '@swc/helpers@0.5.13': - resolution: {integrity: sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==} - - '@types/bn.js@5.1.6': - resolution: {integrity: sha512-Xh8vSwUeMKeYYrj3cX4lGQgFSF/N03r+tv4AiLl1SucqV+uTQpxRcnM8AkXKHwYP9ZPXOYXRr2KPXpVlIvqh9w==} - - '@types/chai@4.3.20': - resolution: {integrity: sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==} - - '@types/connect@3.4.38': - resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} - - '@types/fs-extra@11.0.4': - resolution: {integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==} - - '@types/json5@0.0.29': - resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - - '@types/jsonfile@6.1.4': - resolution: {integrity: sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==} - - '@types/mocha@9.1.1': - resolution: {integrity: sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==} - - '@types/node@12.20.55': - resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - - '@types/node@22.8.4': - resolution: {integrity: sha512-SpNNxkftTJOPk0oN+y2bIqurEXHTA2AOZ3EJDDKeJ5VzkvvORSvmQXGQarcOzWV1ac7DCaPBEdMDxBsM+d8jWw==} - - '@types/uuid@8.3.4': - resolution: {integrity: sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==} - - '@types/ws@7.4.7': - resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==} - - '@types/ws@8.5.12': - resolution: {integrity: sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==} - - '@ungap/promise-all-settled@1.1.2': - resolution: {integrity: sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==} - - JSONStream@1.3.5: - resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} - hasBin: true - - agentkeepalive@4.5.0: - resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} - engines: {node: '>= 8.0.0'} - - ansi-colors@4.1.1: - resolution: {integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==} - engines: {node: '>=6'} - - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - - ansicolors@0.3.2: - resolution: {integrity: sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==} - - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - - argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - - arrify@1.0.1: - resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} - engines: {node: '>=0.10.0'} - - assert@2.1.0: - resolution: {integrity: sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==} - - assertion-error@1.1.0: - resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} - - available-typed-arrays@1.0.7: - resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} - engines: {node: '>= 0.4'} - - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - base-x@3.0.10: - resolution: {integrity: sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==} - - base-x@4.0.0: - resolution: {integrity: sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==} - - base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - - bigint-buffer@1.1.5: - resolution: {integrity: sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA==} - engines: {node: '>= 10.0.0'} - - bignumber.js@9.1.2: - resolution: {integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==} - - binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} - - bindings@1.5.0: - resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} - - bn.js@5.2.1: - resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} - - borsh@0.7.0: - resolution: {integrity: sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==} - - brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - - braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} - - browser-stdout@1.3.1: - resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} - - bs58@4.0.1: - resolution: {integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==} - - bs58@5.0.0: - resolution: {integrity: sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==} - - buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - - buffer@6.0.3: - resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} - - bufferutil@4.0.8: - resolution: {integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==} - engines: {node: '>=6.14.2'} - - call-bind@1.0.7: - resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} - engines: {node: '>= 0.4'} - - camelcase@6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} - - chai@4.5.0: - resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==} - engines: {node: '>=4'} - - chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - - chalk@5.3.0: - resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - - check-error@1.0.3: - resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} - - chokidar@3.5.3: - resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} - engines: {node: '>= 8.10.0'} - - cliui@7.0.4: - resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} - - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - commander@12.1.0: - resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} - engines: {node: '>=18'} - - commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - - concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - - debug@4.3.3: - resolution: {integrity: sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - debug@4.3.7: - resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - decamelize@4.0.0: - resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} - engines: {node: '>=10'} - - deep-eql@4.1.4: - resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==} - engines: {node: '>=6'} - - define-data-property@1.1.4: - resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} - engines: {node: '>= 0.4'} - - define-properties@1.2.1: - resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} - engines: {node: '>= 0.4'} - - delay@5.0.0: - resolution: {integrity: sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==} - engines: {node: '>=10'} - - diff@3.5.0: - resolution: {integrity: sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==} - engines: {node: '>=0.3.1'} - - diff@5.0.0: - resolution: {integrity: sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==} - engines: {node: '>=0.3.1'} - - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - - es-define-property@1.0.0: - resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} - engines: {node: '>= 0.4'} - - es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} - - es6-promise@4.2.8: - resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} - - es6-promisify@5.0.0: - resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==} - - escalade@3.2.0: - resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} - engines: {node: '>=6'} - - escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - - eventemitter3@5.0.1: - resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} - - eyes@0.1.8: - resolution: {integrity: sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==} - engines: {node: '> 0.1.90'} - - fast-stable-stringify@1.0.0: - resolution: {integrity: sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==} - - fastestsmallesttextencoderdecoder@1.0.22: - resolution: {integrity: sha512-Pb8d48e+oIuY4MaM64Cd7OW1gt4nxCHs7/ddPPZ/Ic3sg8yVGM7O9wDvZ7us6ScaUupzM+pfBolwtYhN1IxBIw==} - - file-uri-to-path@1.0.0: - resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} - - fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} - - find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - - flat@5.0.2: - resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} - hasBin: true - - for-each@0.3.3: - resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} - - fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - - fs@0.0.1-security: - resolution: {integrity: sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w==} - - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - - get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - - get-func-name@2.0.2: - resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} - - get-intrinsic@1.2.4: - resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} - engines: {node: '>= 0.4'} - - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - - glob@7.2.0: - resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==} - deprecated: Glob versions prior to v9 are no longer supported - - gopd@1.0.1: - resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} - - growl@1.10.5: - resolution: {integrity: sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==} - engines: {node: '>=4.x'} - - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - - has-property-descriptors@1.0.2: - resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} - - has-proto@1.0.3: - resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} - engines: {node: '>= 0.4'} - - has-symbols@1.0.3: - resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} - engines: {node: '>= 0.4'} - - has-tostringtag@1.0.2: - resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} - engines: {node: '>= 0.4'} - - hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} - - he@1.2.0: - resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} - hasBin: true - - humanize-ms@1.2.1: - resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} - - ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - - inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. - - inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - - is-arguments@1.1.1: - resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} - engines: {node: '>= 0.4'} - - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - - is-callable@1.2.7: - resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} - engines: {node: '>= 0.4'} - - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - - is-generator-function@1.0.10: - resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} - engines: {node: '>= 0.4'} - - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - - is-nan@1.3.2: - resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==} - engines: {node: '>= 0.4'} - - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - - is-plain-obj@2.1.0: - resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} - engines: {node: '>=8'} - - is-typed-array@1.1.13: - resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} - engines: {node: '>= 0.4'} - - is-unicode-supported@0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} - engines: {node: '>=10'} - - isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - - isomorphic-ws@4.0.1: - resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==} - peerDependencies: - ws: '*' - - jayson@4.1.2: - resolution: {integrity: sha512-5nzMWDHy6f+koZOuYsArh2AXs73NfWYVlFyJJuCedr93GpY+Ku8qq10ropSXVfHK+H0T6paA88ww+/dV+1fBNA==} - engines: {node: '>=8'} - hasBin: true - - js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true - - json-stringify-safe@5.0.1: - resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} - - json5@1.0.2: - resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} - hasBin: true - - jsonparse@1.3.1: - resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} - engines: {'0': node >= 0.2.0} - - locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - - log-symbols@4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} - engines: {node: '>=10'} - - loupe@2.3.7: - resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} - - make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - - minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - - minimatch@4.2.1: - resolution: {integrity: sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==} - engines: {node: '>=10'} - - minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - - mkdirp@0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} - hasBin: true - - mocha@9.2.2: - resolution: {integrity: sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==} - engines: {node: '>= 12.0.0'} - hasBin: true - - ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - - ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - - nanoid@3.3.1: - resolution: {integrity: sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - - node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - - node-gyp-build@4.8.2: - resolution: {integrity: sha512-IRUxE4BVsHWXkV/SFOut4qTlagw2aM8T5/vnTsmrHJvVoKueJHRc/JaFND7QDDc61kLYUJ6qlZM3sqTSyx2dTw==} - hasBin: true - - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - - object-is@1.1.6: - resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} - engines: {node: '>= 0.4'} - - object-keys@1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} - engines: {node: '>= 0.4'} - - object.assign@4.1.5: - resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} - engines: {node: '>= 0.4'} - - once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - - p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - - p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - - path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - - path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - - pathval@1.1.1: - resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} - - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - - possible-typed-array-names@1.0.0: - resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} - engines: {node: '>= 0.4'} - - randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - - regenerator-runtime@0.14.1: - resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - - require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - - rpc-websockets@9.0.4: - resolution: {integrity: sha512-yWZWN0M+bivtoNLnaDbtny4XchdAIF5Q4g/ZsC5UC61Ckbp0QczwO8fg44rV3uYmY4WHd+EZQbn90W1d8ojzqQ==} - - safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - - serialize-javascript@6.0.0: - resolution: {integrity: sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==} - - set-function-length@1.2.2: - resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} - engines: {node: '>= 0.4'} - - solana-bankrun-darwin-arm64@0.4.0: - resolution: {integrity: sha512-6dz78Teoz7ez/3lpRLDjktYLJb79FcmJk2me4/YaB8WiO6W43OdExU4h+d2FyuAryO2DgBPXaBoBNY/8J1HJmw==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - - solana-bankrun-darwin-universal@0.4.0: - resolution: {integrity: sha512-zSSw/Jx3KNU42pPMmrEWABd0nOwGJfsj7nm9chVZ3ae7WQg3Uty0hHAkn5NSDCj3OOiN0py9Dr1l9vmRJpOOxg==} - engines: {node: '>= 10'} - os: [darwin] - - solana-bankrun-darwin-x64@0.4.0: - resolution: {integrity: sha512-LWjs5fsgHFtyr7YdJR6r0Ho5zrtzI6CY4wvwPXr8H2m3b4pZe6RLIZjQtabCav4cguc14G0K8yQB2PTMuGub8w==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - - solana-bankrun-linux-x64-gnu@0.4.0: - resolution: {integrity: sha512-SrlVrb82UIxt21Zr/XZFHVV/h9zd2/nP25PMpLJVLD7Pgl2yhkhfi82xj3OjxoQqWe+zkBJ+uszA0EEKr67yNw==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - solana-bankrun-linux-x64-musl@0.4.0: - resolution: {integrity: sha512-Nv328ZanmURdYfcLL+jwB1oMzX4ZzK57NwIcuJjGlf0XSNLq96EoaO5buEiUTo4Ls7MqqMyLbClHcrPE7/aKyA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - solana-bankrun@0.4.0: - resolution: {integrity: sha512-NMmXUipPBkt8NgnyNO3SCnPERP6xT/AMNMBooljGA3+rG6NN8lmXJsKeLqQTiFsDeWD74U++QM/DgcueSWvrIg==} - engines: {node: '>= 10'} - - source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - - source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - - strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - - strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - - superstruct@2.0.2: - resolution: {integrity: sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A==} - engines: {node: '>=14.0.0'} - - supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - - supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} - - text-encoding-utf-8@1.0.2: - resolution: {integrity: sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==} - - through@2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - - tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - - ts-mocha@10.0.0: - resolution: {integrity: sha512-VRfgDO+iiuJFlNB18tzOfypJ21xn2xbuZyDvJvqpTbWgkAgD17ONGr8t+Tl8rcBtOBdjXp5e/Rk+d39f7XBHRw==} - engines: {node: '>= 6.X.X'} - hasBin: true - peerDependencies: - mocha: ^3.X.X || ^4.X.X || ^5.X.X || ^6.X.X || ^7.X.X || ^8.X.X || ^9.X.X || ^10.X.X - - ts-node@7.0.1: - resolution: {integrity: sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==} - engines: {node: '>=4.2.0'} - hasBin: true - - tsconfig-paths@3.15.0: - resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} - - tslib@2.8.0: - resolution: {integrity: sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==} - - type-detect@4.1.0: - resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==} - engines: {node: '>=4'} - - typescript@4.9.5: - resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} - engines: {node: '>=4.2.0'} - hasBin: true - - undici-types@6.19.8: - resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} - - utf-8-validate@5.0.10: - resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==} - engines: {node: '>=6.14.2'} - - util@0.12.5: - resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} - - uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - hasBin: true - - webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - - whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - - which-typed-array@1.1.15: - resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} - engines: {node: '>= 0.4'} - - which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - - workerpool@6.2.0: - resolution: {integrity: sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==} - - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - - wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - - ws@7.5.10: - resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} - engines: {node: '>=8.3.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - ws@8.18.0: - resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - - yargs-parser@20.2.4: - resolution: {integrity: sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==} - engines: {node: '>=10'} - - yargs-unparser@2.0.0: - resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} - engines: {node: '>=10'} - - yargs@16.2.0: - resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} - engines: {node: '>=10'} - - yn@2.0.0: - resolution: {integrity: sha512-uTv8J/wiWTgUTg+9vLTi//leUl5vDQS6uii/emeTb2ssY7vl6QWf2fFbIIGjnhjvbdKlU0ed7QPgY1htTC86jQ==} - engines: {node: '>=4'} - - yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - - zx@8.1.9: - resolution: {integrity: sha512-UHuLHphHmsBYKkAchkSrEN4nzDyagafqC9HUxtc1J7eopaScW6H9dsLJ1lmkAntnLtDTGoM8fa+jrJrXiIfKFA==} - engines: {node: '>= 12.17.0'} - hasBin: true - -snapshots: - - '@babel/runtime@7.26.0': - dependencies: - regenerator-runtime: 0.14.1 - - '@metaplex-foundation/beet-solana@0.4.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)': - dependencies: - '@metaplex-foundation/beet': 0.7.2 - '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) - bs58: 5.0.0 - debug: 4.3.7 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - - '@metaplex-foundation/beet@0.7.2': - dependencies: - ansicolors: 0.3.2 - assert: 2.1.0 - bn.js: 5.2.1 - debug: 4.3.7 - transitivePeerDependencies: - - supports-color - - '@metaplex-foundation/cusper@0.0.2': {} - - '@metaplex-foundation/mpl-token-metadata@2.13.0(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)(utf-8-validate@5.0.10)': - dependencies: - '@metaplex-foundation/beet': 0.7.2 - '@metaplex-foundation/beet-solana': 0.4.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) - '@metaplex-foundation/cusper': 0.0.2 - '@solana/spl-token': 0.3.11(@solana/web3.js@1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) - bn.js: 5.2.1 - debug: 4.3.7 - transitivePeerDependencies: - - bufferutil - - encoding - - fastestsmallesttextencoderdecoder - - supports-color - - typescript - - utf-8-validate - - '@noble/curves@1.6.0': - dependencies: - '@noble/hashes': 1.5.0 - - '@noble/hashes@1.5.0': {} - - '@solana/buffer-layout-utils@0.2.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)': - dependencies: - '@solana/buffer-layout': 4.0.1 - '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) - bigint-buffer: 1.1.5 - bignumber.js: 9.1.2 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - - '@solana/buffer-layout@4.0.1': - dependencies: - buffer: 6.0.3 - - '@solana/codecs-core@2.0.0-rc.1(typescript@4.9.5)': - dependencies: - '@solana/errors': 2.0.0-rc.1(typescript@4.9.5) - typescript: 4.9.5 - - '@solana/codecs-data-structures@2.0.0-rc.1(typescript@4.9.5)': - dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@4.9.5) - '@solana/codecs-numbers': 2.0.0-rc.1(typescript@4.9.5) - '@solana/errors': 2.0.0-rc.1(typescript@4.9.5) - typescript: 4.9.5 - - '@solana/codecs-numbers@2.0.0-rc.1(typescript@4.9.5)': - dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@4.9.5) - '@solana/errors': 2.0.0-rc.1(typescript@4.9.5) - typescript: 4.9.5 - - '@solana/codecs-strings@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)': - dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@4.9.5) - '@solana/codecs-numbers': 2.0.0-rc.1(typescript@4.9.5) - '@solana/errors': 2.0.0-rc.1(typescript@4.9.5) - fastestsmallesttextencoderdecoder: 1.0.22 - typescript: 4.9.5 - - '@solana/codecs@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)': - dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@4.9.5) - '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@4.9.5) - '@solana/codecs-numbers': 2.0.0-rc.1(typescript@4.9.5) - '@solana/codecs-strings': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5) - '@solana/options': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5) - typescript: 4.9.5 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/errors@2.0.0-rc.1(typescript@4.9.5)': - dependencies: - chalk: 5.3.0 - commander: 12.1.0 - typescript: 4.9.5 - - '@solana/options@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)': - dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@4.9.5) - '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@4.9.5) - '@solana/codecs-numbers': 2.0.0-rc.1(typescript@4.9.5) - '@solana/codecs-strings': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5) - '@solana/errors': 2.0.0-rc.1(typescript@4.9.5) - typescript: 4.9.5 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)': - dependencies: - '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5) - '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - typescript - - '@solana/spl-token@0.3.11(@solana/web3.js@1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)(utf-8-validate@5.0.10)': - dependencies: - '@solana/buffer-layout': 4.0.1 - '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5) - '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) - buffer: 6.0.3 - transitivePeerDependencies: - - bufferutil - - encoding - - fastestsmallesttextencoderdecoder - - typescript - - utf-8-validate - - '@solana/web3.js@1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10)': - dependencies: - '@babel/runtime': 7.26.0 - '@noble/curves': 1.6.0 - '@noble/hashes': 1.5.0 - '@solana/buffer-layout': 4.0.1 - agentkeepalive: 4.5.0 - bigint-buffer: 1.1.5 - bn.js: 5.2.1 - borsh: 0.7.0 - bs58: 4.0.1 - buffer: 6.0.3 - fast-stable-stringify: 1.0.0 - jayson: 4.1.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) - node-fetch: 2.7.0 - rpc-websockets: 9.0.4 - superstruct: 2.0.2 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - - '@swc/helpers@0.5.13': - dependencies: - tslib: 2.8.0 - - '@types/bn.js@5.1.6': - dependencies: - '@types/node': 22.8.4 - - '@types/chai@4.3.20': {} - - '@types/connect@3.4.38': - dependencies: - '@types/node': 12.20.55 - - '@types/fs-extra@11.0.4': - dependencies: - '@types/jsonfile': 6.1.4 - '@types/node': 22.8.4 - optional: true - - '@types/json5@0.0.29': - optional: true - - '@types/jsonfile@6.1.4': - dependencies: - '@types/node': 22.8.4 - optional: true - - '@types/mocha@9.1.1': {} - - '@types/node@12.20.55': {} - - '@types/node@22.8.4': - dependencies: - undici-types: 6.19.8 - - '@types/uuid@8.3.4': {} - - '@types/ws@7.4.7': - dependencies: - '@types/node': 12.20.55 - - '@types/ws@8.5.12': - dependencies: - '@types/node': 22.8.4 - - '@ungap/promise-all-settled@1.1.2': {} - - JSONStream@1.3.5: - dependencies: - jsonparse: 1.3.1 - through: 2.3.8 - - agentkeepalive@4.5.0: - dependencies: - humanize-ms: 1.2.1 - - ansi-colors@4.1.1: {} - - ansi-regex@5.0.1: {} - - ansi-styles@4.3.0: - dependencies: - color-convert: 2.0.1 - - ansicolors@0.3.2: {} - - anymatch@3.1.3: - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - - argparse@2.0.1: {} - - arrify@1.0.1: {} - - assert@2.1.0: - dependencies: - call-bind: 1.0.7 - is-nan: 1.3.2 - object-is: 1.1.6 - object.assign: 4.1.5 - util: 0.12.5 - - assertion-error@1.1.0: {} - - available-typed-arrays@1.0.7: - dependencies: - possible-typed-array-names: 1.0.0 - - balanced-match@1.0.2: {} - - base-x@3.0.10: - dependencies: - safe-buffer: 5.2.1 - - base-x@4.0.0: {} - - base64-js@1.5.1: {} - - bigint-buffer@1.1.5: - dependencies: - bindings: 1.5.0 - - bignumber.js@9.1.2: {} - - binary-extensions@2.3.0: {} - - bindings@1.5.0: - dependencies: - file-uri-to-path: 1.0.0 - - bn.js@5.2.1: {} - - borsh@0.7.0: - dependencies: - bn.js: 5.2.1 - bs58: 4.0.1 - text-encoding-utf-8: 1.0.2 - - brace-expansion@1.1.11: - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - - braces@3.0.3: - dependencies: - fill-range: 7.1.1 - - browser-stdout@1.3.1: {} - - bs58@4.0.1: - dependencies: - base-x: 3.0.10 - - bs58@5.0.0: - dependencies: - base-x: 4.0.0 - - buffer-from@1.1.2: {} - - buffer@6.0.3: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - - bufferutil@4.0.8: - dependencies: - node-gyp-build: 4.8.2 - optional: true - - call-bind@1.0.7: - dependencies: - es-define-property: 1.0.0 - es-errors: 1.3.0 - function-bind: 1.1.2 - get-intrinsic: 1.2.4 - set-function-length: 1.2.2 - - camelcase@6.3.0: {} - - chai@4.5.0: - dependencies: - assertion-error: 1.1.0 - check-error: 1.0.3 - deep-eql: 4.1.4 - get-func-name: 2.0.2 - loupe: 2.3.7 - pathval: 1.1.1 - type-detect: 4.1.0 - - chalk@4.1.2: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - - chalk@5.3.0: {} - - check-error@1.0.3: - dependencies: - get-func-name: 2.0.2 - - chokidar@3.5.3: - dependencies: - anymatch: 3.1.3 - braces: 3.0.3 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - - cliui@7.0.4: - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - - color-convert@2.0.1: - dependencies: - color-name: 1.1.4 - - color-name@1.1.4: {} - - commander@12.1.0: {} - - commander@2.20.3: {} - - concat-map@0.0.1: {} - - debug@4.3.3(supports-color@8.1.1): - dependencies: - ms: 2.1.2 - optionalDependencies: - supports-color: 8.1.1 - - debug@4.3.7: - dependencies: - ms: 2.1.3 - - decamelize@4.0.0: {} - - deep-eql@4.1.4: - dependencies: - type-detect: 4.1.0 - - define-data-property@1.1.4: - dependencies: - es-define-property: 1.0.0 - es-errors: 1.3.0 - gopd: 1.0.1 - - define-properties@1.2.1: - dependencies: - define-data-property: 1.1.4 - has-property-descriptors: 1.0.2 - object-keys: 1.1.1 - - delay@5.0.0: {} - - diff@3.5.0: {} - - diff@5.0.0: {} - - emoji-regex@8.0.0: {} - - es-define-property@1.0.0: - dependencies: - get-intrinsic: 1.2.4 - - es-errors@1.3.0: {} - - es6-promise@4.2.8: {} - - es6-promisify@5.0.0: - dependencies: - es6-promise: 4.2.8 - - escalade@3.2.0: {} - - escape-string-regexp@4.0.0: {} - - eventemitter3@5.0.1: {} - - eyes@0.1.8: {} - - fast-stable-stringify@1.0.0: {} - - fastestsmallesttextencoderdecoder@1.0.22: {} - - file-uri-to-path@1.0.0: {} - - fill-range@7.1.1: - dependencies: - to-regex-range: 5.0.1 - - find-up@5.0.0: - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - - flat@5.0.2: {} - - for-each@0.3.3: - dependencies: - is-callable: 1.2.7 - - fs.realpath@1.0.0: {} - - fs@0.0.1-security: {} - - fsevents@2.3.3: - optional: true - - function-bind@1.1.2: {} - - get-caller-file@2.0.5: {} - - get-func-name@2.0.2: {} - - get-intrinsic@1.2.4: - dependencies: - es-errors: 1.3.0 - function-bind: 1.1.2 - has-proto: 1.0.3 - has-symbols: 1.0.3 - hasown: 2.0.2 - - glob-parent@5.1.2: - dependencies: - is-glob: 4.0.3 - - glob@7.2.0: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - - gopd@1.0.1: - dependencies: - get-intrinsic: 1.2.4 - - growl@1.10.5: {} - - has-flag@4.0.0: {} - - has-property-descriptors@1.0.2: - dependencies: - es-define-property: 1.0.0 - - has-proto@1.0.3: {} - - has-symbols@1.0.3: {} - - has-tostringtag@1.0.2: - dependencies: - has-symbols: 1.0.3 - - hasown@2.0.2: - dependencies: - function-bind: 1.1.2 - - he@1.2.0: {} - - humanize-ms@1.2.1: - dependencies: - ms: 2.1.3 - - ieee754@1.2.1: {} - - inflight@1.0.6: - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - - inherits@2.0.4: {} - - is-arguments@1.1.1: - dependencies: - call-bind: 1.0.7 - has-tostringtag: 1.0.2 - - is-binary-path@2.1.0: - dependencies: - binary-extensions: 2.3.0 - - is-callable@1.2.7: {} - - is-extglob@2.1.1: {} - - is-fullwidth-code-point@3.0.0: {} - - is-generator-function@1.0.10: - dependencies: - has-tostringtag: 1.0.2 - - is-glob@4.0.3: - dependencies: - is-extglob: 2.1.1 - - is-nan@1.3.2: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - - is-number@7.0.0: {} - - is-plain-obj@2.1.0: {} - - is-typed-array@1.1.13: - dependencies: - which-typed-array: 1.1.15 - - is-unicode-supported@0.1.0: {} - - isexe@2.0.0: {} - - isomorphic-ws@4.0.1(ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10)): - dependencies: - ws: 7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) - - jayson@4.1.2(bufferutil@4.0.8)(utf-8-validate@5.0.10): - dependencies: - '@types/connect': 3.4.38 - '@types/node': 12.20.55 - '@types/ws': 7.4.7 - JSONStream: 1.3.5 - commander: 2.20.3 - delay: 5.0.0 - es6-promisify: 5.0.0 - eyes: 0.1.8 - isomorphic-ws: 4.0.1(ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10)) - json-stringify-safe: 5.0.1 - uuid: 8.3.2 - ws: 7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - js-yaml@4.1.0: - dependencies: - argparse: 2.0.1 - - json-stringify-safe@5.0.1: {} - - json5@1.0.2: - dependencies: - minimist: 1.2.8 - optional: true - - jsonparse@1.3.1: {} - - locate-path@6.0.0: - dependencies: - p-locate: 5.0.0 - - log-symbols@4.1.0: - dependencies: - chalk: 4.1.2 - is-unicode-supported: 0.1.0 - - loupe@2.3.7: - dependencies: - get-func-name: 2.0.2 - - make-error@1.3.6: {} - - minimatch@3.1.2: - dependencies: - brace-expansion: 1.1.11 - - minimatch@4.2.1: - dependencies: - brace-expansion: 1.1.11 - - minimist@1.2.8: {} - - mkdirp@0.5.6: - dependencies: - minimist: 1.2.8 - - mocha@9.2.2: - dependencies: - '@ungap/promise-all-settled': 1.1.2 - ansi-colors: 4.1.1 - browser-stdout: 1.3.1 - chokidar: 3.5.3 - debug: 4.3.3(supports-color@8.1.1) - diff: 5.0.0 - escape-string-regexp: 4.0.0 - find-up: 5.0.0 - glob: 7.2.0 - growl: 1.10.5 - he: 1.2.0 - js-yaml: 4.1.0 - log-symbols: 4.1.0 - minimatch: 4.2.1 - ms: 2.1.3 - nanoid: 3.3.1 - serialize-javascript: 6.0.0 - strip-json-comments: 3.1.1 - supports-color: 8.1.1 - which: 2.0.2 - workerpool: 6.2.0 - yargs: 16.2.0 - yargs-parser: 20.2.4 - yargs-unparser: 2.0.0 - - ms@2.1.2: {} - - ms@2.1.3: {} - - nanoid@3.3.1: {} - - node-fetch@2.7.0: - dependencies: - whatwg-url: 5.0.0 - - node-gyp-build@4.8.2: - optional: true - - normalize-path@3.0.0: {} - - object-is@1.1.6: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - - object-keys@1.1.1: {} - - object.assign@4.1.5: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - has-symbols: 1.0.3 - object-keys: 1.1.1 - - once@1.4.0: - dependencies: - wrappy: 1.0.2 - - p-limit@3.1.0: - dependencies: - yocto-queue: 0.1.0 - - p-locate@5.0.0: - dependencies: - p-limit: 3.1.0 - - path-exists@4.0.0: {} - - path-is-absolute@1.0.1: {} - - pathval@1.1.1: {} - - picomatch@2.3.1: {} - - possible-typed-array-names@1.0.0: {} - - randombytes@2.1.0: - dependencies: - safe-buffer: 5.2.1 - - readdirp@3.6.0: - dependencies: - picomatch: 2.3.1 - - regenerator-runtime@0.14.1: {} - - require-directory@2.1.1: {} - - rpc-websockets@9.0.4: - dependencies: - '@swc/helpers': 0.5.13 - '@types/uuid': 8.3.4 - '@types/ws': 8.5.12 - buffer: 6.0.3 - eventemitter3: 5.0.1 - uuid: 8.3.2 - ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - optionalDependencies: - bufferutil: 4.0.8 - utf-8-validate: 5.0.10 - - safe-buffer@5.2.1: {} - - serialize-javascript@6.0.0: - dependencies: - randombytes: 2.1.0 - - set-function-length@1.2.2: - dependencies: - define-data-property: 1.1.4 - es-errors: 1.3.0 - function-bind: 1.1.2 - get-intrinsic: 1.2.4 - gopd: 1.0.1 - has-property-descriptors: 1.0.2 - - solana-bankrun-darwin-arm64@0.4.0: - optional: true - - solana-bankrun-darwin-universal@0.4.0: - optional: true - - solana-bankrun-darwin-x64@0.4.0: - optional: true - - solana-bankrun-linux-x64-gnu@0.4.0: - optional: true - - solana-bankrun-linux-x64-musl@0.4.0: - optional: true - - solana-bankrun@0.4.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): - dependencies: - '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) - bs58: 4.0.1 - optionalDependencies: - solana-bankrun-darwin-arm64: 0.4.0 - solana-bankrun-darwin-universal: 0.4.0 - solana-bankrun-darwin-x64: 0.4.0 - solana-bankrun-linux-x64-gnu: 0.4.0 - solana-bankrun-linux-x64-musl: 0.4.0 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - - source-map-support@0.5.21: - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - - source-map@0.6.1: {} - - string-width@4.2.3: - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - - strip-ansi@6.0.1: - dependencies: - ansi-regex: 5.0.1 - - strip-bom@3.0.0: - optional: true - - strip-json-comments@3.1.1: {} - - superstruct@2.0.2: {} - - supports-color@7.2.0: - dependencies: - has-flag: 4.0.0 - - supports-color@8.1.1: - dependencies: - has-flag: 4.0.0 - - text-encoding-utf-8@1.0.2: {} - - through@2.3.8: {} - - to-regex-range@5.0.1: - dependencies: - is-number: 7.0.0 - - tr46@0.0.3: {} - - ts-mocha@10.0.0(mocha@9.2.2): - dependencies: - mocha: 9.2.2 - ts-node: 7.0.1 - optionalDependencies: - tsconfig-paths: 3.15.0 - - ts-node@7.0.1: - dependencies: - arrify: 1.0.1 - buffer-from: 1.1.2 - diff: 3.5.0 - make-error: 1.3.6 - minimist: 1.2.8 - mkdirp: 0.5.6 - source-map-support: 0.5.21 - yn: 2.0.0 - - tsconfig-paths@3.15.0: - dependencies: - '@types/json5': 0.0.29 - json5: 1.0.2 - minimist: 1.2.8 - strip-bom: 3.0.0 - optional: true - - tslib@2.8.0: {} - - type-detect@4.1.0: {} - - typescript@4.9.5: {} - - undici-types@6.19.8: {} - - utf-8-validate@5.0.10: - dependencies: - node-gyp-build: 4.8.2 - optional: true - - util@0.12.5: - dependencies: - inherits: 2.0.4 - is-arguments: 1.1.1 - is-generator-function: 1.0.10 - is-typed-array: 1.1.13 - which-typed-array: 1.1.15 - - uuid@8.3.2: {} - - webidl-conversions@3.0.1: {} - - whatwg-url@5.0.0: - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - - which-typed-array@1.1.15: - dependencies: - available-typed-arrays: 1.0.7 - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-tostringtag: 1.0.2 - - which@2.0.2: - dependencies: - isexe: 2.0.0 - - workerpool@6.2.0: {} - - wrap-ansi@7.0.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - wrappy@1.0.2: {} - - ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10): - optionalDependencies: - bufferutil: 4.0.8 - utf-8-validate: 5.0.10 - - ws@8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): - optionalDependencies: - bufferutil: 4.0.8 - utf-8-validate: 5.0.10 - - y18n@5.0.8: {} - - yargs-parser@20.2.4: {} - - yargs-unparser@2.0.0: - dependencies: - camelcase: 6.3.0 - decamelize: 4.0.0 - flat: 5.0.2 - is-plain-obj: 2.1.0 - - yargs@16.2.0: - dependencies: - cliui: 7.0.4 - escalade: 3.2.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 20.2.4 - - yn@2.0.0: {} - - yocto-queue@0.1.0: {} - - zx@8.1.9: - optionalDependencies: - '@types/fs-extra': 11.0.4 - '@types/node': 22.8.4 diff --git a/tokens/spl-token-minter/steel/prepare.mjs b/tokens/spl-token-minter/steel/prepare.mjs deleted file mode 100644 index 7c5ec464b..000000000 --- a/tokens/spl-token-minter/steel/prepare.mjs +++ /dev/null @@ -1,34 +0,0 @@ -#!/usr/bin/env zx - -import { mkdir, rm } from 'node:fs/promises'; -import { join } from 'node:path'; -import { $ } from 'zx'; - -const programs = [ - { - id: 'metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s', - name: 'token_metadata.so', - }, -]; - -const outputDir = 'tests/fixtures'; -const overwrite = true; - -try { - for (const program of programs) { - const { id, name } = program; - const outputFile = join(outputDir, name); - await $`solana config set -um`; - - try { - await mkdir(outputDir, { recursive: true }); - if (overwrite) await rm(outputFile, { force: true }); - await $`solana program dump ${id} ${outputFile}`; - console.log(`Program ${id} dumped to ${outputFile}`); - } catch (error) { - console.error(`Error dumping ${id}: ${error.message}`); - } - } -} catch (error) { - console.error(`Error preparing programs: ${error.message}`); -} diff --git a/tokens/spl-token-minter/steel/program/Cargo.toml b/tokens/spl-token-minter/steel/program/Cargo.toml deleted file mode 100644 index 4b91fab46..000000000 --- a/tokens/spl-token-minter/steel/program/Cargo.toml +++ /dev/null @@ -1,23 +0,0 @@ -[package] -name = "spl-token-minter-program" -version = "0.1.0" -edition = "2021" - -[lib] -crate-type = ["cdylib", "lib"] - -[dependencies] -spl-token-minter-api.workspace = true -solana-program.workspace = true -steel.workspace = true -spl-token.workspace = true -mpl-token-metadata.workspace = true -spl-associated-token-account.workspace = true - - -[dev-dependencies] -base64 = "0.21" -rand = "0.8.5" -solana-program-test = "1.18" -solana-sdk = "1.18" -tokio = { version = "1.35", features = ["full"] } diff --git a/tokens/spl-token-minter/steel/program/src/create.rs b/tokens/spl-token-minter/steel/program/src/create.rs deleted file mode 100644 index aa411d3ea..000000000 --- a/tokens/spl-token-minter/steel/program/src/create.rs +++ /dev/null @@ -1,100 +0,0 @@ -use solana_program::msg; -use solana_program::program_pack::Pack; -use spl_token::state::Mint; -use spl_token_minter_api::prelude::*; -use steel::*; - -pub fn process_create(accounts: &[AccountInfo<'_>], data: &[u8]) -> ProgramResult { - // parse args. - let args = Create::try_from_bytes(data)?; - let token_name = String::from_utf8(args.token_name.to_vec()).expect("Invalid UTF-8"); - let token_symbol = String::from_utf8(args.token_symbol.to_vec()).expect("Invalid UTF-8"); - let token_uri = String::from_utf8(args.token_uri.to_vec()).expect("Invalid UTF-8"); - - // Load accounts. - let [payer_info, mint_info, metadata_info, system_program, token_program, metadata_program, rent_sysvar] = - accounts - else { - return Err(ProgramError::NotEnoughAccountKeys); - }; - - // validation - payer_info.is_signer()?; - mint_info.is_empty()?.is_writable()?; - system_program.is_program(&system_program::ID)?; - token_program.is_program(&spl_token::ID)?; - rent_sysvar.is_sysvar(&sysvar::rent::ID)?; - - // First create the account for the Mint - // - msg!("Creating mint account..."); - msg!("Mint: {}", mint_info.key); - solana_program::program::invoke( - &solana_program::system_instruction::create_account( - payer_info.key, - mint_info.key, - (solana_program::rent::Rent::get()?).minimum_balance(Mint::LEN), - Mint::LEN as u64, - token_program.key, - ), - &[ - mint_info.clone(), - payer_info.clone(), - system_program.clone(), - token_program.clone(), - ], - )?; - - // Now initialize that account as a Mint (standard Mint) - // - msg!("Initializing mint account..."); - msg!("Mint: {}", mint_info.key); - solana_program::program::invoke( - &spl_token::instruction::initialize_mint( - token_program.key, - mint_info.key, - payer_info.key, - Some(payer_info.key), - 9, // 9 Decimals for the default SPL Token standard - )?, - &[ - mint_info.clone(), - payer_info.clone(), - token_program.clone(), - rent_sysvar.clone(), - ], - )?; - - // Now create the account for that Mint's metadata - // - msg!("Creating metadata account..."); - msg!("Metadata account address: {}", metadata_info.key); - mpl_token_metadata::instructions::CreateMetadataAccountV3Cpi { - __program: metadata_program, - metadata: metadata_info, - mint: mint_info, - mint_authority: payer_info, - payer: payer_info, - update_authority: (payer_info, true), - system_program, - rent: Some(rent_sysvar), - __args: mpl_token_metadata::instructions::CreateMetadataAccountV3InstructionArgs { - data: mpl_token_metadata::types::DataV2 { - name: token_name, - symbol: token_symbol, - uri: token_uri, - seller_fee_basis_points: 0, - creators: None, - collection: None, - uses: None, - }, - is_mutable: true, - collection_details: None, - }, - } - .invoke()?; - - msg!("Token mint created successfully."); - - Ok(()) -} diff --git a/tokens/spl-token-minter/steel/program/src/lib.rs b/tokens/spl-token-minter/steel/program/src/lib.rs deleted file mode 100644 index f75ccdfe5..000000000 --- a/tokens/spl-token-minter/steel/program/src/lib.rs +++ /dev/null @@ -1,25 +0,0 @@ -mod create; -mod mint; - -use create::*; -use mint::*; - -use spl_token_minter_api::prelude::*; -use steel::*; - -pub fn process_instruction( - program_id: &Pubkey, - accounts: &[AccountInfo], - data: &[u8], -) -> ProgramResult { - let (ix, data) = parse_instruction(&spl_token_minter_api::ID, program_id, data)?; - - match ix { - SteelInstruction::Mint => process_mint(accounts, data)?, - SteelInstruction::Create => process_create(accounts, data)?, - } - - Ok(()) -} - -entrypoint!(process_instruction); diff --git a/tokens/spl-token-minter/steel/program/src/mint.rs b/tokens/spl-token-minter/steel/program/src/mint.rs deleted file mode 100644 index 3636f98f7..000000000 --- a/tokens/spl-token-minter/steel/program/src/mint.rs +++ /dev/null @@ -1,61 +0,0 @@ -use solana_program::msg; -use spl_token_minter_api::prelude::*; -use steel::*; - -pub fn process_mint(accounts: &[AccountInfo<'_>], data: &[u8]) -> ProgramResult { - // parse args. - let args = Mint::try_from_bytes(data)?; - let quantity = u64::from_le_bytes(args.quantity); - - // Load accounts. - let [mint_authority_info, recipient_info, mint_info, associated_token_account_info, token_program, associated_token_program, system_program] = - accounts - else { - return Err(ProgramError::NotEnoughAccountKeys); - }; - mint_authority_info.is_signer()?; - mint_info.as_mint()?; - token_program.is_program(&spl_token::ID)?; - - if associated_token_account_info.lamports() == 0 { - msg!("Creating associated token account..."); - create_associated_token_account( - mint_authority_info, - recipient_info, - associated_token_account_info, - mint_info, - system_program, - token_program, - associated_token_program, - )?; - } else { - msg!("Associated token account exists."); - } - msg!( - "Associated Token Address: {}", - associated_token_account_info.key - ); - - msg!("Minting {} tokens to associated token account...", quantity); - - solana_program::program::invoke( - &spl_token::instruction::mint_to( - &spl_token::id(), - mint_info.key, - associated_token_account_info.key, - mint_authority_info.key, - &[mint_authority_info.key], - quantity, - )?, - &[ - token_program.clone(), - mint_info.clone(), - associated_token_account_info.clone(), - mint_authority_info.clone(), - ], - )?; - - msg!("Token minted successfully."); - - Ok(()) -} diff --git a/tokens/spl-token-minter/steel/program/tests/test.rs b/tokens/spl-token-minter/steel/program/tests/test.rs deleted file mode 100644 index cebdc4ead..000000000 --- a/tokens/spl-token-minter/steel/program/tests/test.rs +++ /dev/null @@ -1,58 +0,0 @@ -use solana_program::hash::Hash; -use solana_program_test::{processor, BanksClient, ProgramTest}; -use solana_sdk::{signature::Keypair, signer::Signer, transaction::Transaction}; -use spl_token_minter_api::prelude::*; - -async fn setup() -> (BanksClient, Keypair, Hash) { - let mut program_test = ProgramTest::new( - "spl_token_minter_program", - spl_token_minter_api::ID, - processor!(spl_token_minter_program::process_instruction), - ); - - program_test.add_program("token_metadata", mpl_token_metadata::ID, None); - - program_test.prefer_bpf(true); - program_test.start().await -} - -#[tokio::test] -async fn run_test() { - // Setup test - let (mut banks, payer, blockhash) = setup().await; - let mint_keypair = Keypair::new(); - - let name = str_to_bytes::<32>("Solana Gold"); - let symbol = str_to_bytes::<8>("GOLDSOL"); - let uri = str_to_bytes::<64>("https://raw.githubusercontent.com/solana-developers/program-examples/new-examples/tokens/tokens/.assets/spl-token.json"); - - // Submit create transaction. - let ix = create(payer.pubkey(), mint_keypair.pubkey(), name, symbol, uri); - let tx = Transaction::new_signed_with_payer( - &[ix], - Some(&payer.pubkey()), - &[&payer, &mint_keypair], - blockhash, - ); - let res = banks.process_transaction(tx).await; - assert!(res.is_ok()); - - let recipient = Keypair::new(); - - let to_ata = spl_associated_token_account::get_associated_token_address( - &recipient.pubkey(), - &mint_keypair.pubkey(), - ); - - // Submit mint transaction. - let ix = mint( - payer.pubkey(), - recipient.pubkey(), - mint_keypair.pubkey(), - to_ata, - 100, - ); - let tx = Transaction::new_signed_with_payer(&[ix], Some(&payer.pubkey()), &[&payer], blockhash); - let res = banks.process_transaction(tx).await; - assert!(res.is_ok()); -} diff --git a/tokens/spl-token-minter/steel/tests/bankrun.test.ts b/tokens/spl-token-minter/steel/tests/bankrun.test.ts deleted file mode 100644 index c94e5f3be..000000000 --- a/tokens/spl-token-minter/steel/tests/bankrun.test.ts +++ /dev/null @@ -1,108 +0,0 @@ -import { Buffer } from 'node:buffer'; -import { describe, test } from 'node:test'; -import { PROGRAM_ID as TOKEN_METADATA_PROGRAM_ID } from '@metaplex-foundation/mpl-token-metadata'; -import { ASSOCIATED_TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID, getAssociatedTokenAddressSync } from '@solana/spl-token'; -import { Keypair, PublicKey, SYSVAR_RENT_PUBKEY, SystemProgram, Transaction, TransactionInstruction } from '@solana/web3.js'; -import { BN } from 'bn.js'; -import { start } from 'solana-bankrun'; -import { CreateTokenArgs, MintToArgs, SplMinterInstruction } from './instructions'; - -describe('SPL Token Minter!', async () => { - const PROGRAM_ID = new PublicKey('8V26fyhrQobKbvkRCV3KvT6jZQLzviovdARfGrw8kUdG'); - const context = await start( - [ - { name: 'spl_token_minter_program', programId: PROGRAM_ID }, - { name: 'token_metadata', programId: TOKEN_METADATA_PROGRAM_ID }, - ], - [], - ); - const client = context.banksClient; - const payer = context.payer; - - const mintKeypair: Keypair = Keypair.generate(); - - test('Create an SPL Token!', async () => { - const metadataPDA = PublicKey.findProgramAddressSync( - [Buffer.from('metadata'), TOKEN_METADATA_PROGRAM_ID.toBuffer(), mintKeypair.publicKey.toBuffer()], - TOKEN_METADATA_PROGRAM_ID, - )[0]; - - // SPL Token default = 9 decimals - // - const createArgs = new CreateTokenArgs( - 'Solana Gold', - 'GOLDSOL', - 'https://raw.githubusercontent.com/solana-developers/program-examples/new-examples/tokens/tokens/.assets/spl-token.json', - ); - - const createTokenIx = new TransactionInstruction({ - keys: [ - { pubkey: payer.publicKey, isSigner: true, isWritable: true }, - { pubkey: mintKeypair.publicKey, isSigner: true, isWritable: true }, - { pubkey: metadataPDA, isSigner: false, isWritable: true }, - { - pubkey: SystemProgram.programId, - isSigner: false, - isWritable: false, - }, - { pubkey: TOKEN_PROGRAM_ID, isSigner: false, isWritable: false }, - { - pubkey: TOKEN_METADATA_PROGRAM_ID, - isSigner: false, - isWritable: false, - }, - { pubkey: SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false }, - ], - programId: PROGRAM_ID, - data: createArgs.toBuffer(), - }); - - const tx = new Transaction(); - const [blockhash, _] = await client.getLatestBlockhash(); - tx.recentBlockhash = blockhash; - tx.add(createTokenIx).sign(payer, mintKeypair); - - await client.processTransaction(tx); - - console.log('Success!'); - console.log(` Mint Address: ${mintKeypair.publicKey}`); - }); - - test('Mint some tokens to your wallet!', async () => { - const recipientATA = getAssociatedTokenAddressSync(mintKeypair.publicKey, payer.publicKey); - - const mintArgs = new MintToArgs(100); - - const mintToIx = new TransactionInstruction({ - keys: [ - { pubkey: payer.publicKey, isSigner: true, isWritable: true }, // mint_authority - { pubkey: payer.publicKey, isSigner: false, isWritable: false }, // recipient - { pubkey: mintKeypair.publicKey, isSigner: false, isWritable: true }, // mint_pda must be writable - { pubkey: recipientATA, isSigner: false, isWritable: true }, // associated_token_account must be writable - { pubkey: TOKEN_PROGRAM_ID, isSigner: false, isWritable: false }, // spl_token::ID - { - pubkey: ASSOCIATED_TOKEN_PROGRAM_ID, - isSigner: false, - isWritable: false, - }, // spl_associated_token_account::ID - { - pubkey: SystemProgram.programId, - isSigner: false, - isWritable: false, - }, // system_program::ID - ], - programId: PROGRAM_ID, - data: mintArgs.toBuffer(), - }); - - const tx = new Transaction(); - const [blockhash, _] = await client.getLatestBlockhash(); - tx.recentBlockhash = blockhash; - tx.add(mintToIx).sign(payer); - - await client.processTransaction(tx); - - console.log('Success!'); - console.log(` ATA Address: ${recipientATA}`); - }); -}); diff --git a/tokens/spl-token-minter/steel/tests/instructions.ts b/tokens/spl-token-minter/steel/tests/instructions.ts deleted file mode 100644 index 8395628a0..000000000 --- a/tokens/spl-token-minter/steel/tests/instructions.ts +++ /dev/null @@ -1,76 +0,0 @@ -import { BN } from 'bn.js'; -import * as borsh from 'borsh'; - -class Assignable { - constructor(properties) { - for (const [key, value] of Object.entries(properties)) { - this[key] = value; - } - } -} - -// Helper function to pad strings to fixed length buffers -function strToBytes(str: string, length: number): Buffer { - const buffer = Buffer.alloc(length); - buffer.write(str); - return buffer; -} - -export enum SplMinterInstruction { - Create = 0, - Mint = 1, -} - -export class CreateTokenArgs { - instruction: number; - name: Buffer; - symbol: Buffer; - uri: Buffer; - - constructor(name: string, symbol: string, uri: string) { - this.instruction = SplMinterInstruction.Create; - this.name = strToBytes(name, 32); - this.symbol = strToBytes(symbol, 8); - this.uri = strToBytes(uri, 64); - } - - toBuffer(): Buffer { - const buffer = Buffer.alloc(1 + 32 + 8 + 64); - let offset = 0; - - buffer.writeUInt8(this.instruction, offset); - offset += 1; - - this.name.copy(buffer, offset); - offset += 32; - this.symbol.copy(buffer, offset); - offset += 8; - this.uri.copy(buffer, offset); - - return buffer; - } -} - -export class MintToArgs { - instruction: number; - quantity: BN; - - constructor(quantity: number) { - this.instruction = SplMinterInstruction.Mint; - this.quantity = new BN(quantity); - } - - toBuffer(): Buffer { - const buffer = Buffer.alloc(9); // 1 byte for instruction + 8 bytes for u64 quantity - let offset = 0; - - // Write instruction - buffer.writeUInt8(this.instruction, offset); - offset += 1; - - // Write quantity as u64 LE (8 bytes) - this.quantity.toBuffer('le', 8).copy(buffer, offset); - - return buffer; - } -} diff --git a/tokens/spl-token-minter/steel/tsconfig.json b/tokens/spl-token-minter/steel/tsconfig.json deleted file mode 100644 index cd5d2e3d0..000000000 --- a/tokens/spl-token-minter/steel/tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "compilerOptions": { - "types": ["mocha", "chai"], - "typeRoots": ["./node_modules/@types"], - "lib": ["es2015"], - "module": "commonjs", - "target": "es6", - "esModuleInterop": true - } -} diff --git a/tokens/transfer-tokens/seahorse/.gitignore b/tokens/transfer-tokens/seahorse/.gitignore deleted file mode 100644 index d243ecc13..000000000 --- a/tokens/transfer-tokens/seahorse/.gitignore +++ /dev/null @@ -1,7 +0,0 @@ - -.anchor -.DS_Store -target -**/*.rs.bk -node_modules -test-ledger diff --git a/tokens/transfer-tokens/seahorse/.prettierignore b/tokens/transfer-tokens/seahorse/.prettierignore deleted file mode 100644 index c1a0b75f0..000000000 --- a/tokens/transfer-tokens/seahorse/.prettierignore +++ /dev/null @@ -1,8 +0,0 @@ - -.anchor -.DS_Store -target -node_modules -dist -build -test-ledger diff --git a/tokens/transfer-tokens/seahorse/Anchor.toml b/tokens/transfer-tokens/seahorse/Anchor.toml deleted file mode 100644 index 7253d53e8..000000000 --- a/tokens/transfer-tokens/seahorse/Anchor.toml +++ /dev/null @@ -1,15 +0,0 @@ -[features] -seeds = true -skip-lint = false -[programs.localnet] -seahorse = "5KCV219sxBAZMfXWP5EZ57D6K9568krgPKGe1Lq2nkxH" - -[registry] -url = "https://api.apr.dev" - -[provider] -cluster = "Localnet" -wallet = "~/.config/solana/id.json" - -[scripts] -test = "python3 tests/test.py" diff --git a/tokens/transfer-tokens/seahorse/Cargo.toml b/tokens/transfer-tokens/seahorse/Cargo.toml deleted file mode 100644 index f39770481..000000000 --- a/tokens/transfer-tokens/seahorse/Cargo.toml +++ /dev/null @@ -1,14 +0,0 @@ -[workspace] -members = [ - "programs/*" -] -resolver = "2" - -[profile.release] -overflow-checks = true -lto = "fat" -codegen-units = 1 -[profile.release.build-override] -opt-level = 3 -incremental = false -codegen-units = 1 diff --git a/tokens/transfer-tokens/seahorse/README.md b/tokens/transfer-tokens/seahorse/README.md deleted file mode 100644 index 4320c72ac..000000000 --- a/tokens/transfer-tokens/seahorse/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# seahorse - -This project was created by Seahorse 0.2.7. - -To get started, just add your code to **programs_py/seahorse.py** and run `seahorse build`. diff --git a/tokens/transfer-tokens/seahorse/migrations/deploy.ts b/tokens/transfer-tokens/seahorse/migrations/deploy.ts deleted file mode 100644 index 64a1c3599..000000000 --- a/tokens/transfer-tokens/seahorse/migrations/deploy.ts +++ /dev/null @@ -1,12 +0,0 @@ -// Migrations are an early feature. Currently, they're nothing more than this -// single deploy script that's invoked from the CLI, injecting a provider -// configured from the workspace's Anchor.toml. - -const anchor = require('@coral-xyz/anchor'); - -module.exports = async (provider) => { - // Configure client to use the provider. - anchor.setProvider(provider); - - // Add your deploy script here. -}; diff --git a/tokens/transfer-tokens/seahorse/package.json b/tokens/transfer-tokens/seahorse/package.json deleted file mode 100644 index b5355136b..000000000 --- a/tokens/transfer-tokens/seahorse/package.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "scripts": { - "lint:fix": "prettier */*.js \"*/**/*{.js,.ts}\" -w", - "lint": "prettier */*.js \"*/**/*{.js,.ts}\" --check" - }, - "dependencies": { - "@coral-xyz/anchor": "^0.27.0" - }, - "devDependencies": { - "chai": "^4.3.4", - "mocha": "^9.0.3", - "ts-mocha": "^10.0.0", - "@types/bn.js": "^5.1.0", - "@types/chai": "^4.3.0", - "@types/mocha": "^9.0.0", - "typescript": "^4.3.5", - "prettier": "^2.6.2" - } -} diff --git a/tokens/transfer-tokens/seahorse/programs/seahorse/Cargo.toml b/tokens/transfer-tokens/seahorse/programs/seahorse/Cargo.toml deleted file mode 100644 index 758d32b81..000000000 --- a/tokens/transfer-tokens/seahorse/programs/seahorse/Cargo.toml +++ /dev/null @@ -1,22 +0,0 @@ -[package] -name = "seahorse" -version = "0.1.0" -description = "Created with Anchor" -edition = "2021" - -[lib] -crate-type = ["cdylib", "lib"] -name = "seahorse" - -[features] -default = [] -cpi = ["no-entrypoint"] -no-entrypoint = [] -no-idl = [] -no-log-ix-name = [] -idl-build = ["anchor-lang/idl-build", "anchor-spl/idl-build"] - -[dependencies] -anchor-lang = "0.27.0" -anchor-spl = "0.27.0" -pyth-sdk-solana = { version = "0.7.1", optional = true } diff --git a/tokens/transfer-tokens/seahorse/programs/seahorse/Xargo.toml b/tokens/transfer-tokens/seahorse/programs/seahorse/Xargo.toml deleted file mode 100644 index 475fb71ed..000000000 --- a/tokens/transfer-tokens/seahorse/programs/seahorse/Xargo.toml +++ /dev/null @@ -1,2 +0,0 @@ -[target.bpfel-unknown-unknown.dependencies.std] -features = [] diff --git a/tokens/transfer-tokens/seahorse/programs/seahorse/src/dot/mod.rs b/tokens/transfer-tokens/seahorse/programs/seahorse/src/dot/mod.rs deleted file mode 100644 index e2c04eaaa..000000000 --- a/tokens/transfer-tokens/seahorse/programs/seahorse/src/dot/mod.rs +++ /dev/null @@ -1 +0,0 @@ -pub mod program; diff --git a/tokens/transfer-tokens/seahorse/programs/seahorse/src/dot/program.rs b/tokens/transfer-tokens/seahorse/programs/seahorse/src/dot/program.rs deleted file mode 100644 index a90654809..000000000 --- a/tokens/transfer-tokens/seahorse/programs/seahorse/src/dot/program.rs +++ /dev/null @@ -1,73 +0,0 @@ -#![allow(unused_imports)] -#![allow(unused_variables)] -#![allow(unused_mut)] -use crate::{id, seahorse_util::*}; -use anchor_lang::{prelude::*, solana_program}; -use anchor_spl::token::{self, Mint, Token, TokenAccount}; -use std::{cell::RefCell, rc::Rc}; - -pub fn create_associated_token_account_handler<'info>( - mut token_account: Empty>, - mut mint: SeahorseAccount<'info, '_, Mint>, - mut signer: SeahorseSigner<'info, '_>, -) -> () { - token_account.account.clone(); -} - -pub fn create_token_handler<'info>( - mut mint: Empty>, - mut signer: SeahorseSigner<'info, '_>, -) -> () { - mint.account.clone(); -} - -pub fn mint_token_handler<'info>( - mut mint: SeahorseAccount<'info, '_, Mint>, - mut recipient: SeahorseAccount<'info, '_, TokenAccount>, - mut signer: SeahorseSigner<'info, '_>, - mut amount: u64, -) -> () { - token::mint_to( - CpiContext::new( - mint.programs.get("token_program"), - token::MintTo { - mint: mint.to_account_info(), - authority: signer.clone().to_account_info(), - to: recipient.clone().to_account_info(), - }, - ), - (amount - * >::try_from(10) - .unwrap() - .pow(>::try_from(mint.decimals.clone()).unwrap())), - ) - .unwrap(); -} - -pub fn transfer_handler<'info>( - mut signer_token_account: SeahorseAccount<'info, '_, TokenAccount>, - mut recipient: SeahorseAccount<'info, '_, TokenAccount>, - mut signer: SeahorseSigner<'info, '_>, - mut amount: u64, - mut mint: SeahorseAccount<'info, '_, Mint>, -) -> () { - if !(signer_token_account.mint == mint.key()) { - panic!("Mint is not the token account mint"); - } - - token::transfer( - CpiContext::new( - signer_token_account.programs.get("token_program"), - token::Transfer { - from: signer_token_account.to_account_info(), - authority: signer.clone().to_account_info(), - to: recipient.clone().to_account_info(), - }, - ), - (amount - * >::try_from(10) - .unwrap() - .pow(>::try_from(mint.decimals.clone()).unwrap())), - ) - .unwrap(); -} diff --git a/tokens/transfer-tokens/seahorse/programs/seahorse/src/lib.rs b/tokens/transfer-tokens/seahorse/programs/seahorse/src/lib.rs deleted file mode 100644 index b51f3913c..000000000 --- a/tokens/transfer-tokens/seahorse/programs/seahorse/src/lib.rs +++ /dev/null @@ -1,370 +0,0 @@ -#![allow(unused_imports)] -#![allow(unused_variables)] -#![allow(unused_mut)] - -pub mod dot; - -use anchor_lang::prelude::*; -use anchor_spl::{ - associated_token::{self, AssociatedToken}, - token::{self, Mint, Token, TokenAccount}, -}; - -use dot::program::*; -use std::{cell::RefCell, rc::Rc}; - -declare_id!("5KCV219sxBAZMfXWP5EZ57D6K9568krgPKGe1Lq2nkxH"); - -pub mod seahorse_util { - use super::*; - - #[cfg(feature = "pyth-sdk-solana")] - pub use pyth_sdk_solana::{load_price_feed_from_account_info, PriceFeed}; - use std::{collections::HashMap, fmt::Debug, ops::Deref}; - - pub struct Mutable(Rc>); - - impl Mutable { - pub fn new(obj: T) -> Self { - Self(Rc::new(RefCell::new(obj))) - } - } - - impl Clone for Mutable { - fn clone(&self) -> Self { - Self(self.0.clone()) - } - } - - impl Deref for Mutable { - type Target = Rc>; - - fn deref(&self) -> &Self::Target { - &self.0 - } - } - - impl Debug for Mutable { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(f, "{:?}", self.0) - } - } - - impl Default for Mutable { - fn default() -> Self { - Self::new(T::default()) - } - } - - impl Mutable> { - pub fn wrapped_index(&self, mut index: i128) -> usize { - if index >= 0 { - return index.try_into().unwrap(); - } - - index += self.borrow().len() as i128; - - return index.try_into().unwrap(); - } - } - - impl Mutable<[T; N]> { - pub fn wrapped_index(&self, mut index: i128) -> usize { - if index >= 0 { - return index.try_into().unwrap(); - } - - index += self.borrow().len() as i128; - - return index.try_into().unwrap(); - } - } - - #[derive(Clone)] - pub struct Empty { - pub account: T, - pub bump: Option, - } - - #[derive(Clone, Debug)] - pub struct ProgramsMap<'info>(pub HashMap<&'static str, AccountInfo<'info>>); - - impl<'info> ProgramsMap<'info> { - pub fn get(&self, name: &'static str) -> AccountInfo<'info> { - self.0.get(name).unwrap().clone() - } - } - - #[derive(Clone, Debug)] - pub struct WithPrograms<'info, 'entrypoint, A> { - pub account: &'entrypoint A, - pub programs: &'entrypoint ProgramsMap<'info>, - } - - impl<'info, 'entrypoint, A> Deref for WithPrograms<'info, 'entrypoint, A> { - type Target = A; - - fn deref(&self) -> &Self::Target { - &self.account - } - } - - pub type SeahorseAccount<'info, 'entrypoint, A> = - WithPrograms<'info, 'entrypoint, Box>>; - - pub type SeahorseSigner<'info, 'entrypoint> = WithPrograms<'info, 'entrypoint, Signer<'info>>; - - #[derive(Clone, Debug)] - pub struct CpiAccount<'info> { - #[doc = "CHECK: CpiAccounts temporarily store AccountInfos."] - pub account_info: AccountInfo<'info>, - pub is_writable: bool, - pub is_signer: bool, - pub seeds: Option>>, - } - - #[macro_export] - macro_rules! seahorse_const { - ($ name : ident , $ value : expr) => { - macro_rules! $name { - () => { - $value - }; - } - - pub(crate) use $name; - }; - } - - #[macro_export] - macro_rules! assign { - ($ lval : expr , $ rval : expr) => {{ - let temp = $rval; - - $lval = temp; - }}; - } - - #[macro_export] - macro_rules! index_assign { - ($ lval : expr , $ idx : expr , $ rval : expr) => { - let temp_rval = $rval; - let temp_idx = $idx; - - $lval[temp_idx] = temp_rval; - }; - } - - pub(crate) use assign; - - pub(crate) use index_assign; - - pub(crate) use seahorse_const; -} - -#[program] -mod seahorse { - use super::*; - use seahorse_util::*; - use std::collections::HashMap; - - #[derive(Accounts)] - pub struct CreateAssociatedTokenAccount<'info> { - # [account (init , payer = signer , associated_token :: mint = mint , associated_token :: authority = signer)] - pub token_account: Box>, - #[account(mut)] - pub mint: Box>, - #[account(mut)] - pub signer: Signer<'info>, - pub associated_token_program: Program<'info, AssociatedToken>, - pub rent: Sysvar<'info, Rent>, - pub system_program: Program<'info, System>, - pub token_program: Program<'info, Token>, - } - - pub fn create_associated_token_account( - ctx: Context, - ) -> Result<()> { - let mut programs = HashMap::new(); - - programs.insert( - "associated_token_program", - ctx.accounts.associated_token_program.to_account_info(), - ); - - programs.insert( - "system_program", - ctx.accounts.system_program.to_account_info(), - ); - - programs.insert( - "token_program", - ctx.accounts.token_program.to_account_info(), - ); - - let programs_map = ProgramsMap(programs); - let token_account = Empty { - account: SeahorseAccount { - account: &ctx.accounts.token_account, - programs: &programs_map, - }, - bump: ctx.bumps.get("token_account").map(|bump| *bump), - }; - - let mint = SeahorseAccount { - account: &ctx.accounts.mint, - programs: &programs_map, - }; - - let signer = SeahorseSigner { - account: &ctx.accounts.signer, - programs: &programs_map, - }; - - create_associated_token_account_handler( - token_account.clone(), - mint.clone(), - signer.clone(), - ); - - return Ok(()); - } - - #[derive(Accounts)] - pub struct CreateToken<'info> { - # [account (init , payer = signer , mint :: decimals = 6 , mint :: authority = signer)] - pub mint: Box>, - #[account(mut)] - pub signer: Signer<'info>, - pub rent: Sysvar<'info, Rent>, - pub system_program: Program<'info, System>, - pub token_program: Program<'info, Token>, - } - - pub fn create_token(ctx: Context) -> Result<()> { - let mut programs = HashMap::new(); - - programs.insert( - "system_program", - ctx.accounts.system_program.to_account_info(), - ); - - programs.insert( - "token_program", - ctx.accounts.token_program.to_account_info(), - ); - - let programs_map = ProgramsMap(programs); - let mint = Empty { - account: SeahorseAccount { - account: &ctx.accounts.mint, - programs: &programs_map, - }, - bump: ctx.bumps.get("mint").map(|bump| *bump), - }; - - let signer = SeahorseSigner { - account: &ctx.accounts.signer, - programs: &programs_map, - }; - - create_token_handler(mint.clone(), signer.clone()); - - return Ok(()); - } - - #[derive(Accounts)] - # [instruction (amount : u64)] - pub struct MintToken<'info> { - #[account(mut)] - pub mint: Box>, - #[account(mut)] - pub recipient: Box>, - #[account(mut)] - pub signer: Signer<'info>, - pub token_program: Program<'info, Token>, - } - - pub fn mint_token(ctx: Context, amount: u64) -> Result<()> { - let mut programs = HashMap::new(); - - programs.insert( - "token_program", - ctx.accounts.token_program.to_account_info(), - ); - - let programs_map = ProgramsMap(programs); - let mint = SeahorseAccount { - account: &ctx.accounts.mint, - programs: &programs_map, - }; - - let recipient = SeahorseAccount { - account: &ctx.accounts.recipient, - programs: &programs_map, - }; - - let signer = SeahorseSigner { - account: &ctx.accounts.signer, - programs: &programs_map, - }; - - mint_token_handler(mint.clone(), recipient.clone(), signer.clone(), amount); - - return Ok(()); - } - - #[derive(Accounts)] - # [instruction (amount : u64)] - pub struct Transfer<'info> { - #[account(mut)] - pub signer_token_account: Box>, - #[account(mut)] - pub recipient: Box>, - #[account(mut)] - pub signer: Signer<'info>, - #[account(mut)] - pub mint: Box>, - pub token_program: Program<'info, Token>, - } - - pub fn transfer(ctx: Context, amount: u64) -> Result<()> { - let mut programs = HashMap::new(); - - programs.insert( - "token_program", - ctx.accounts.token_program.to_account_info(), - ); - - let programs_map = ProgramsMap(programs); - let signer_token_account = SeahorseAccount { - account: &ctx.accounts.signer_token_account, - programs: &programs_map, - }; - - let recipient = SeahorseAccount { - account: &ctx.accounts.recipient, - programs: &programs_map, - }; - - let signer = SeahorseSigner { - account: &ctx.accounts.signer, - programs: &programs_map, - }; - - let mint = SeahorseAccount { - account: &ctx.accounts.mint, - programs: &programs_map, - }; - - transfer_handler( - signer_token_account.clone(), - recipient.clone(), - signer.clone(), - amount, - mint.clone(), - ); - - return Ok(()); - } -} diff --git a/tokens/transfer-tokens/seahorse/programs_py/seahorse.py b/tokens/transfer-tokens/seahorse/programs_py/seahorse.py deleted file mode 100644 index 913a1c454..000000000 --- a/tokens/transfer-tokens/seahorse/programs_py/seahorse.py +++ /dev/null @@ -1,59 +0,0 @@ -# seahorse -# Built with Seahorse v0.2.7 - -from seahorse.prelude import * - -declare_id('5KCV219sxBAZMfXWP5EZ57D6K9568krgPKGe1Lq2nkxH') - -@instruction -def create_token( - mint: Empty[TokenMint], - signer: Signer -): - mint.init( - payer = signer, - decimals = 6, - authority = signer - ) - -@instruction -def mint_token( - mint: TokenMint, - recipient: TokenAccount, - signer: Signer, - amount: u64 -): - mint.mint( - authority = signer, - to = recipient, - amount = amount * u64(10) ** u32(mint.decimals) - ) - - -@instruction -def create_associated_token_account( - token_account: Empty[TokenAccount], - mint: TokenMint, - signer: Signer -): - token_account.init( - associated = True, - payer = signer, - mint = mint, - authority = signer - ) - -@instruction -def transfer( - signer_token_account: TokenAccount, - recipient: TokenAccount, - signer: Signer, - amount: u64, - mint: TokenMint -): - assert signer_token_account.mint() == mint.key(), 'Mint is not the token account mint' - signer_token_account.transfer( - authority = signer, - to = recipient, - amount = amount * u64(10) ** u32(mint.decimals) - ) \ No newline at end of file diff --git a/tokens/transfer-tokens/seahorse/programs_py/seahorse/__init__.py b/tokens/transfer-tokens/seahorse/programs_py/seahorse/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/tokens/transfer-tokens/seahorse/programs_py/seahorse/prelude.py b/tokens/transfer-tokens/seahorse/programs_py/seahorse/prelude.py deleted file mode 100644 index d7f012230..000000000 --- a/tokens/transfer-tokens/seahorse/programs_py/seahorse/prelude.py +++ /dev/null @@ -1,1062 +0,0 @@ -# seahorse.prelude: the basis for writing Seahorse programs. -# -# NOTE: this file just contains types and documentation for your editor. This -# is NOT executable code, and you won't be able to change the behavior of your -# Seahorse programs by editing this file. - -from typing import * -from math import floor, ceil - -T = TypeVar('T') -N = TypeVar('N') - - -# ========== -# Rust types -# ========== - -class u8: - """8-bit unsigned integer.""" - - def __init__(self, _: Any) -> 'u8': - """Construct an u8.""" - - def __add__(self, other: 'u8') -> 'u8': - pass - - def __radd__(self, other: 'u8') -> 'u8': - pass - - def __iadd__(self, other: 'u8') -> 'u8': - pass - - def __sub__(self, other: 'u8') -> 'u8': - pass - - def __rsub__(self, other: 'u8') -> 'u8': - pass - - def __isub__(self, other: 'u8') -> 'u8': - pass - - def __mul__(self, other: 'u8') -> 'u8': - pass - - def __rmul__(self, other: 'u8') -> 'u8': - pass - - def __imul__(self, other: 'u8') -> 'u8': - pass - - def __truediv__(self, other: 'f64') -> 'f64': - pass - - def __rtruediv__(self, other: 'f64') -> 'f64': - pass - - def __itruediv__(self, other: 'f64') -> 'f64': - pass - - def __floordiv__(self, other: 'u8') -> 'u8': - pass - - def __rfloordiv__(self, other: 'u8') -> 'u8': - pass - - def __ifloordiv__(self, other: 'u8') -> 'u8': - pass - - def __lt__(self, other: 'u8') -> bool: - pass - - def __le__(self, other: 'u8') -> bool: - pass - - def __eq__(self, other: 'u8') -> bool: - pass - - def __ne__(self, other: 'u8') -> bool: - pass - - def __ge__(self, other: 'u8') -> bool: - pass - - def __gt__(self, other: 'u8') -> bool: - pass - - -class u16: - """16-bit unsigned integer.""" - - def __init__(self, _: Any) -> 'u16': - """Construct an u16.""" - - def __add__(self, other: 'u16') -> 'u16': - pass - - def __radd__(self, other: 'u16') -> 'u16': - pass - - def __iadd__(self, other: 'u16') -> 'u16': - pass - - def __sub__(self, other: 'u16') -> 'u16': - pass - - def __rsub__(self, other: 'u16') -> 'u16': - pass - - def __isub__(self, other: 'u16') -> 'u16': - pass - - def __mul__(self, other: 'u16') -> 'u16': - pass - - def __rmul__(self, other: 'u16') -> 'u16': - pass - - def __imul__(self, other: 'u16') -> 'u16': - pass - - def __truediv__(self, other: 'f64') -> 'f64': - pass - - def __rtruediv__(self, other: 'f64') -> 'f64': - pass - - def __itruediv__(self, other: 'f64') -> 'f64': - pass - - def __floordiv__(self, other: 'u16') -> 'u16': - pass - - def __rfloordiv__(self, other: 'u16') -> 'u16': - pass - - def __ifloordiv__(self, other: 'u16') -> 'u16': - pass - - def __lt__(self, other: 'u16') -> bool: - pass - - def __le__(self, other: 'u16') -> bool: - pass - - def __eq__(self, other: 'u16') -> bool: - pass - - def __ne__(self, other: 'u16') -> bool: - pass - - def __ge__(self, other: 'u16') -> bool: - pass - - def __gt__(self, other: 'u16') -> bool: - pass - -class u32: - """32-bit unsigned integer.""" - - def __init__(self, _: Any) -> 'u32': - """Construct an u32.""" - - def __add__(self, other: 'u32') -> 'u32': - pass - - def __radd__(self, other: 'u32') -> 'u32': - pass - - def __iadd__(self, other: 'u32') -> 'u32': - pass - - def __sub__(self, other: 'u32') -> 'u32': - pass - - def __rsub__(self, other: 'u32') -> 'u32': - pass - - def __isub__(self, other: 'u32') -> 'u32': - pass - - def __mul__(self, other: 'u32') -> 'u32': - pass - - def __rmul__(self, other: 'u32') -> 'u32': - pass - - def __imul__(self, other: 'u32') -> 'u32': - pass - - def __truediv__(self, other: 'f64') -> 'f64': - pass - - def __rtruediv__(self, other: 'f64') -> 'f64': - pass - - def __itruediv__(self, other: 'f64') -> 'f64': - pass - - def __floordiv__(self, other: 'u32') -> 'u32': - pass - - def __rfloordiv__(self, other: 'u32') -> 'u32': - pass - - def __ifloordiv__(self, other: 'u32') -> 'u32': - pass - - def __lt__(self, other: 'u32') -> bool: - pass - - def __le__(self, other: 'u32') -> bool: - pass - - def __eq__(self, other: 'u32') -> bool: - pass - - def __ne__(self, other: 'u32') -> bool: - pass - - def __ge__(self, other: 'u32') -> bool: - pass - - def __gt__(self, other: 'u32') -> bool: - pass - -class u64: - """64-bit unsigned integer.""" - - def __init__(self, _: Any) -> 'u64': - """Construct an u64.""" - - def __add__(self, other: 'u64') -> 'u64': - pass - - def __radd__(self, other: 'u64') -> 'u64': - pass - - def __iadd__(self, other: 'u64') -> 'u64': - pass - - def __sub__(self, other: 'u64') -> 'u64': - pass - - def __rsub__(self, other: 'u64') -> 'u64': - pass - - def __isub__(self, other: 'u64') -> 'u64': - pass - - def __mul__(self, other: 'u64') -> 'u64': - pass - - def __rmul__(self, other: 'u64') -> 'u64': - pass - - def __imul__(self, other: 'u64') -> 'u64': - pass - - def __truediv__(self, other: 'f64') -> 'f64': - pass - - def __rtruediv__(self, other: 'f64') -> 'f64': - pass - - def __itruediv__(self, other: 'f64') -> 'f64': - pass - - def __floordiv__(self, other: 'u64') -> 'u64': - pass - - def __rfloordiv__(self, other: 'u64') -> 'u64': - pass - - def __ifloordiv__(self, other: 'u64') -> 'u64': - pass - - def __lt__(self, other: 'u64') -> bool: - pass - - def __le__(self, other: 'u64') -> bool: - pass - - def __eq__(self, other: 'u64') -> bool: - pass - - def __ne__(self, other: 'u64') -> bool: - pass - - def __ge__(self, other: 'u64') -> bool: - pass - - def __gt__(self, other: 'u64') -> bool: - pass - -class u128: - """128-bit unsigned integer.""" - - def __init__(self, _: Any) -> 'u128': - """Construct an u128.""" - - def __add__(self, other: 'u128') -> 'u128': - pass - - def __radd__(self, other: 'u128') -> 'u128': - pass - - def __iadd__(self, other: 'u128') -> 'u128': - pass - - def __sub__(self, other: 'u128') -> 'u128': - pass - - def __rsub__(self, other: 'u128') -> 'u128': - pass - - def __isub__(self, other: 'u128') -> 'u128': - pass - - def __mul__(self, other: 'u128') -> 'u128': - pass - - def __rmul__(self, other: 'u128') -> 'u128': - pass - - def __imul__(self, other: 'u128') -> 'u128': - pass - - def __truediv__(self, other: 'f64') -> 'f64': - pass - - def __rtruediv__(self, other: 'f64') -> 'f64': - pass - - def __itruediv__(self, other: 'f64') -> 'f64': - pass - - def __floordiv__(self, other: 'u128') -> 'u128': - pass - - def __rfloordiv__(self, other: 'u128') -> 'u128': - pass - - def __ifloordiv__(self, other: 'u128') -> 'u128': - pass - - def __lt__(self, other: 'u128') -> bool: - pass - - def __le__(self, other: 'u128') -> bool: - pass - - def __eq__(self, other: 'u128') -> bool: - pass - - def __ne__(self, other: 'u128') -> bool: - pass - - def __ge__(self, other: 'u128') -> bool: - pass - - def __gt__(self, other: 'u128') -> bool: - pass - -class i8: - """8-bit signed integer.""" - - def __init__(self, _: Any) -> 'i8': - """Construct an i8.""" - - def __add__(self, other: 'i8') -> 'i8': - pass - - def __radd__(self, other: 'i8') -> 'i8': - pass - - def __iadd__(self, other: 'i8') -> 'i8': - pass - - def __sub__(self, other: 'i8') -> 'i8': - pass - - def __rsub__(self, other: 'i8') -> 'i8': - pass - - def __isub__(self, other: 'i8') -> 'i8': - pass - - def __mul__(self, other: 'i8') -> 'i8': - pass - - def __rmul__(self, other: 'i8') -> 'i8': - pass - - def __imul__(self, other: 'i8') -> 'i8': - pass - - def __truediv__(self, other: 'f64') -> 'f64': - pass - - def __rtruediv__(self, other: 'f64') -> 'f64': - pass - - def __itruediv__(self, other: 'f64') -> 'f64': - pass - - def __floordiv__(self, other: 'i8') -> 'i8': - pass - - def __rfloordiv__(self, other: 'i8') -> 'i8': - pass - - def __ifloordiv__(self, other: 'i8') -> 'i8': - pass - -class i16: - """16-bit signed integer.""" - - def __init__(self, _: Any) -> 'i16': - """Construct an i16.""" - - def __add__(self, other: 'i16') -> 'i16': - pass - - def __radd__(self, other: 'i16') -> 'i16': - pass - - def __iadd__(self, other: 'i16') -> 'i16': - pass - - def __sub__(self, other: 'i16') -> 'i16': - pass - - def __rsub__(self, other: 'i16') -> 'i16': - pass - - def __isub__(self, other: 'i16') -> 'i16': - pass - - def __mul__(self, other: 'i16') -> 'i16': - pass - - def __rmul__(self, other: 'i16') -> 'i16': - pass - - def __imul__(self, other: 'i16') -> 'i16': - pass - - def __truediv__(self, other: 'f64') -> 'f64': - pass - - def __rtruediv__(self, other: 'f64') -> 'f64': - pass - - def __itruediv__(self, other: 'f64') -> 'f64': - pass - - def __floordiv__(self, other: 'i16') -> 'i16': - pass - - def __rfloordiv__(self, other: 'i16') -> 'i16': - pass - - def __ifloordiv__(self, other: 'i16') -> 'i16': - pass - - def __lt__(self, other: 'i16') -> bool: - pass - - def __le__(self, other: 'i16') -> bool: - pass - - def __eq__(self, other: 'i16') -> bool: - pass - - def __ne__(self, other: 'i16') -> bool: - pass - - def __ge__(self, other: 'i16') -> bool: - pass - - def __gt__(self, other: 'i16') -> bool: - pass - -class i32: - """32-bit signed integer.""" - - def __init__(self, _: Any) -> 'i32': - """Construct an i32.""" - - def __add__(self, other: 'i32') -> 'i32': - pass - - def __radd__(self, other: 'i32') -> 'i32': - pass - - def __iadd__(self, other: 'i32') -> 'i32': - pass - - def __sub__(self, other: 'i32') -> 'i32': - pass - - def __rsub__(self, other: 'i32') -> 'i32': - pass - - def __isub__(self, other: 'i32') -> 'i32': - pass - - def __mul__(self, other: 'i32') -> 'i32': - pass - - def __rmul__(self, other: 'i32') -> 'i32': - pass - - def __imul__(self, other: 'i32') -> 'i32': - pass - - def __truediv__(self, other: 'f64') -> 'f64': - pass - - def __rtruediv__(self, other: 'f64') -> 'f64': - pass - - def __itruediv__(self, other: 'f64') -> 'f64': - pass - - def __floordiv__(self, other: 'i32') -> 'i32': - pass - - def __rfloordiv__(self, other: 'i32') -> 'i32': - pass - - def __ifloordiv__(self, other: 'i32') -> 'i32': - pass - - def __lt__(self, other: 'i32') -> bool: - pass - - def __le__(self, other: 'i32') -> bool: - pass - - def __eq__(self, other: 'i32') -> bool: - pass - - def __ne__(self, other: 'i32') -> bool: - pass - - def __ge__(self, other: 'i32') -> bool: - pass - - def __gt__(self, other: 'i32') -> bool: - pass - -class i64: - """64-bit signed integer.""" - - def __init__(self, _: Any) -> 'i64': - """Construct an i64.""" - - def __add__(self, other: 'i64') -> 'i64': - pass - - def __radd__(self, other: 'i64') -> 'i64': - pass - - def __iadd__(self, other: 'i64') -> 'i64': - pass - - def __sub__(self, other: 'i64') -> 'i64': - pass - - def __rsub__(self, other: 'i64') -> 'i64': - pass - - def __isub__(self, other: 'i64') -> 'i64': - pass - - def __mul__(self, other: 'i64') -> 'i64': - pass - - def __rmul__(self, other: 'i64') -> 'i64': - pass - - def __imul__(self, other: 'i64') -> 'i64': - pass - - def __truediv__(self, other: 'f64') -> 'f64': - pass - - def __rtruediv__(self, other: 'f64') -> 'f64': - pass - - def __itruediv__(self, other: 'f64') -> 'f64': - pass - - def __floordiv__(self, other: 'i64') -> 'i64': - pass - - def __rfloordiv__(self, other: 'i64') -> 'i64': - pass - - def __ifloordiv__(self, other: 'i64') -> 'i64': - pass - - def __lt__(self, other: 'i64') -> bool: - pass - - def __le__(self, other: 'i64') -> bool: - pass - - def __eq__(self, other: 'i64') -> bool: - pass - - def __ne__(self, other: 'i64') -> bool: - pass - - def __ge__(self, other: 'i64') -> bool: - pass - - def __gt__(self, other: 'i64') -> bool: - pass - -class i128: - """128-bit signed integer.""" - - def __init__(self, _: Any) -> 'i128': - """Construct an i128.""" - - def __add__(self, other: 'i128') -> 'i128': - pass - - def __radd__(self, other: 'i128') -> 'i128': - pass - - def __iadd__(self, other: 'i128') -> 'i128': - pass - - def __sub__(self, other: 'i128') -> 'i128': - pass - - def __rsub__(self, other: 'i128') -> 'i128': - pass - - def __isub__(self, other: 'i128') -> 'i128': - pass - - def __mul__(self, other: 'i128') -> 'i128': - pass - - def __rmul__(self, other: 'i128') -> 'i128': - pass - - def __imul__(self, other: 'i128') -> 'i128': - pass - - def __truediv__(self, other: 'f64') -> 'f64': - pass - - def __rtruediv__(self, other: 'f64') -> 'f64': - pass - - def __itruediv__(self, other: 'f64') -> 'f64': - pass - - def __floordiv__(self, other: 'i128') -> 'i128': - pass - - def __rfloordiv__(self, other: 'i128') -> 'i128': - pass - - def __ifloordiv__(self, other: 'i128') -> 'i128': - pass - - def __lt__(self, other: 'i128') -> bool: - pass - - def __le__(self, other: 'i128') -> bool: - pass - - def __eq__(self, other: 'i128') -> bool: - pass - - def __ne__(self, other: 'i128') -> bool: - pass - - def __ge__(self, other: 'i128') -> bool: - pass - - def __gt__(self, other: 'i128') -> bool: - pass - -class f64: - """64-bit floating point number.""" - - def __init__(self, _: Any) -> 'f64': - """Construct an f64.""" - - def __add__(self, other: 'f64') -> 'f64': - pass - - def __radd__(self, other: 'f64') -> 'f64': - pass - - def __iadd__(self, other: 'f64') -> 'f64': - pass - - def __sub__(self, other: 'f64') -> 'f64': - pass - - def __rsub__(self, other: 'f64') -> 'f64': - pass - - def __isub__(self, other: 'f64') -> 'f64': - pass - - def __mul__(self, other: 'f64') -> 'f64': - pass - - def __rmul__(self, other: 'f64') -> 'f64': - pass - - def __imul__(self, other: 'f64') -> 'f64': - pass - - def __truediv__(self, other: 'f64') -> 'f64': - pass - - def __rtruediv__(self, other: 'f64') -> 'f64': - pass - - def __itruediv__(self, other: 'f64') -> 'f64': - pass - - def __floordiv__(self, other: 'f64') -> 'f64': - pass - - def __rfloordiv__(self, other: 'f64') -> 'f64': - pass - - def __ifloordiv__(self, other: 'f64') -> 'f64': - pass - - def __lt__(self, other: 'f64') -> bool: - pass - - def __le__(self, other: 'f64') -> bool: - pass - - def __eq__(self, other: 'f64') -> bool: - pass - - def __ne__(self, other: 'f64') -> bool: - pass - - def __ge__(self, other: 'f64') -> bool: - pass - - def __gt__(self, other: 'f64') -> bool: - pass - -class Array(Generic[T, N]): - """ - A fixed-length array: contains type T and has size N. - - N must be known at compile-time, and may not be anything other than a non-negative integer literal. Example: - - ``` - # Good - a: Array[u8, 4] - - # Bad - N = 4 - a: Array[u8, N] - ``` - """ - - def __init__(iterable: Iterable[T], len: N) -> 'Array[T, N]': - """ - Construct an array from an iterable and a length. - - The parameter len must be known at compile-time, and may not be anything other than a non-negative integer literal. Example: - - ``` - a = [0, 1, 2, 3] - - # Good - Array(a, 4) - # Compiles, but will definitely error at runtime - Array(a, 5) - - # Bad (will not compile) - a = [0, 1, 2, 3] - Array(a, len(a)) - ``` - """ - - def __getitem__(self, index: Any) -> T: - """ - Index into this array. - - Like Python's native list type, performs wrapping indexing - if you pass in -1, you'll get the last element of the array. - """ - -def array(*elements: T) -> Array[T, N]: - """ - Create an array from a variadic list of elements. Example: - - ``` - # Array[u64, 3] - array(u64(0), 1, 2) - - # Array[str, 4] - array('seahorse', 'is', 'the', 'best!') - ``` - """ - -class Enum: - """ - A type that can have one of multiple named values. - - Note that unlike Rust enums, these cannot contain any data (other than the variant itself). Example: - - ``` - class MyEnum(Enum): - ONE = 1 - TWO = 2 - THREE = 3 - - @instruction - def use_enum(code: MyEnum): - if code == MyEnum.ONE: - print(1) - # ... - ``` - """ - - -# ============ -# Solana types -# ============ - -class Pubkey: - """32-byte account identifier.""" - - def find_program_address(seeds: List[Any], program_id: 'Pubkey' = None) -> Tuple['Pubkey', u8]: - """ - Find a valid program derived address and its corresponding bump seed. Calls the same function from Solana's Pubkey struct - read more [here](https://docs.rs/solana-program/latest/solana_program/pubkey/struct.Pubkey.html#method.find_program_address). - - @param seeds: A list of parameters to uniquely identify this account among all accounts created by your program. These may be string literals, other accounts, integers, or lists of bytes. - @param program_id: The pubkey of the program that the PDA belongs to. Defaults to the current program's key. - @returns: The canonical pubkey and bump seed. - """ - -class AccountWithKey: - """Generic Solana account.""" - - def key(self) -> Pubkey: - """Get this account's key.""" - -class Account(AccountWithKey): - """User-defined Solana account.""" - - def transfer_lamports(self, to: AccountWithKey, amount: u64): - """ - Transfer some SOL directly to another account. Since this account is program-owned, this transfer does not require a CPI. - - @param to: The recipient Solana account. - @param amount: The amount (in lamports, not SOL) to transfer. - """ - -class Event: - """Anchor event that clients can listen for""" - - def emit(self): - """ - Emit the event to the blockchain - """ - -class Signer(AccountWithKey): - """Instruction signer.""" - - def transfer_lamports(self, to: AccountWithKey, amount: u64): - """ - Transfer some SOL directly to another account. Unlike using transfer_lamports from a program account, this transfer will require a CPI. - - @param to: The recipient Solana account. - @param amount: The amount (in lamports, not SOL) to transfer. - """ - -class Empty(Generic[T]): - """An account that needs to be initialized.""" - - def init(self, payer: Signer, seeds: List[Any] = None, mint: 'TokenMint' = None, decimals: u8 = None, authority: AccountWithKey = None, associated: bool = False, space: u64 = None, padding: u64 = None) -> T: - """ - Initialize the account. - - @param payer: The account that will pay for the rent cost of the initialized account. Must be an instruction signer. - @param seeds: A list of parameters to uniquely identify this account among all accounts created by your program. These may be string literals, other accounts, integers, or lists of bytes. - @param mint: If initializing a TokenAccount, this is the mint that the account belongs to. - @param decimals: If initializing a TokenMint, this is the number of decimals the new token has. - @param authority: If initializing a TokenAccount/TokenMint, this is the account that has authority over the account. - @param associated: If initializing an associated token account, must be set to true. - @param space: If initializing a program account, you can use this to overwrite Seahorse's calculation of the account size. - @param padding: If initializing a program account, you can use this to add extra space to Seahorse's calculation of the account size. - @returns: The new, initialized account. All of the data in this account will be set to 0, bytewise. - """ - - def bump(self) -> u8: - """ - Get this account's bump, needed if you want to use this account to sign CPI calls. - - If you've initialized an account without seeds, then a bump will not have been calculated. This will result in a runtime error when you try to access it. - """ - - def key(self) -> Pubkey: - """Get this account's key.""" - -class CpiAccount: - """Account and metadata used for making arbitrary CPIs (via `Program.invoke`).""" - - def __init__(account: AccountWithKey, mut: bool = False, signer: bool = False, seeds: List[Any] = None) -> 'CpiAccount': - """ - Create the CpiAccount. - - @param account: The account being passed to the CPI. - @param mut: Whether this account needs to be mutable for the CPI - defaults to false. - @param signer: Whether this account needs to be an instruction signer - defaults to false. Mutually exclusive with seeds, and should only really be true if account is a Signer. - @param seeds: PDA signer seeds, if this account needs to sign the CPI. Mutually exclusive with signer. - """ - -class Program(AccountWithKey): - """Arbitrary program.""" - - def invoke(self, accounts: List[CpiAccount], data: List[u8]): - """ - Call this program in a cross-program invocation. Make sure you know what you're doing before you try using this - a poorly crafted data list could cost you real money. - - @param accounts: List of accounts being passed to the CPI - the program itself does not need to be in here. - @param data: "Raw" list of bytes used to tell the program what to do, pass args, etc. - """ - -class UncheckedAccount(AccountWithKey): - """ - Raw account that has had no safety checks performed on it. - - The underlying Anchor code cannot guarantee anything about the account unless you check it in your instruction - not the type, not the data, not the program it came from. Use carefully. - """ - -class Clock: - """ - Solana's Clock sysvar. - - Consult Solana's reference to learn more. Information copied from https://docs.rs/solana-program/1.14.3/solana_program/clock/struct.Clock.html. - """ - - def slot(self) -> u64: - """Get the current network/bank Slot.""" - - def epoch_start_timestamp(self) -> i64: - """Get the timestamp of the first Slot in this Epoch.""" - - def epoch(self) -> u64: - """Get the bank Epoch.""" - - def leader_schedule_epoch(self) -> u64: - """Get the future Epoch for which the leader schedule has most recently been calculated.""" - - def unix_timestamp(self) -> i64: - """ - Get the estimated current UNIX timestamp. - - Originally computed from genesis creation time and network time in slots (drifty); corrected using validator timestamp oracle as of timestamp_correction and timestamp_bounding features. - """ - -class TokenAccount(AccountWithKey): - """SPL token account.""" - - def authority(self) -> Pubkey: - """Get the owner of this token account.""" - - def amount(self) -> u64: - """Get the amount of token stored in this account.""" - - def mint(self) -> Pubkey: - """Get the mint that this token account corresponds to.""" - - def transfer(self, authority: AccountWithKey, to: 'TokenAccount', amount: u64, signer: List[Any] = None): - """ - Transfer funds from this SPL token account to another. - - @param authority: The account that owns this TokenAccount. Must be an instruction signer or the account given by the `signer` param. - @param to: The recipient TokenAccount. - @param amount: How much (in *native* token units) to transfer. - @param signer: (Optional) seeds for the signature of a PDA. - """ - -class TokenMint(AccountWithKey): - """SPL token mint.""" - - def authority(self) -> Pubkey: - """Get the owner of this token mint.""" - - def freeze_authority(self) -> Pubkey: - """Get the freeze authority of this token mint.""" - - def decimals(self) -> u8: - """Get the number of decimals for this token.""" - - def supply(self) -> u64: - """Get the amount of this token that exists.""" - - def mint(self, authority: AccountWithKey, to: TokenAccount, amount: u64, signer: List[Any] = None): - """ - Mint new tokens to a token account. - - @param authority: The account that owns this TokenMint. Must be an instruction signer or the account given by the `signer` param. - @param to: The recipient TokenAccount. - @param amount: How much (in *native* token units) to mint. - @param signer: (Optional) seeds for the signature of a PDA. - """ - - def burn(self, authority: AccountWithKey, holder: TokenAccount, amount: u64, signer: List[Any] = None): - """ - Burn tokens from a token account. - - @param authority: The account that owns the `holder` TokenAccount. Must be an instruction signer or the account given by the `signer` param. - @param holder: The TokenAccount to burn from. - @param amount: How much (in *native* token units) to burn. - @param signer: (Optional) seeds for the signature of a PDA. - """ - - -# ================ -# Helper functions -# ================ - -def declare_id(id: str): - """Inform Anchor what this program's ID is. - - @param id: The program's ID, generated by Anchor in /target/idl/.json. This must be copied-pasted straight from there as a string literal. - """ - -def instruction(function: Callable[..., None]) -> Callable[..., None]: - """Decorator to turn a function into a program instruction.""" - -def dataclass(function: Callable[..., None]) -> Callable[..., None]: - """Decorator to create an automatic default class constructor.""" - -def int_bytes(n: Any, be: bool = False) -> List[u8]: - """ - Convenience method to turn an integer type into a little-endian (by default) list of bytes. - - @param n: The integer you wish to convert to bytes. - @param be: Whether you want the conversion to be big-endian - defaults to false. - """ - -def size(ob: str) -> u64: - """ - Get the size of an object in bytes. - Currently this is only supported for strings. - - @param ob: The object to get the size of. - """ diff --git a/tokens/transfer-tokens/seahorse/tests/pyproject.toml b/tokens/transfer-tokens/seahorse/tests/pyproject.toml deleted file mode 100644 index 06cc39d32..000000000 --- a/tokens/transfer-tokens/seahorse/tests/pyproject.toml +++ /dev/null @@ -1,2 +0,0 @@ -[tool.pyright] -reportMissingModuleSource = false \ No newline at end of file diff --git a/tokens/transfer-tokens/seahorse/tests/test.py b/tokens/transfer-tokens/seahorse/tests/test.py deleted file mode 100644 index 1c0300722..000000000 --- a/tokens/transfer-tokens/seahorse/tests/test.py +++ /dev/null @@ -1,79 +0,0 @@ -import asyncio -from anchorpy import create_workspace, close_workspace, Context -from solders.system_program import ID as SYS_PROGRAM_ID -from solders.pubkey import Pubkey -from solders.keypair import Keypair -from solders.sysvar import RENT - - - -async def main(): - # Read the deployed program from the workspace. - workspace = create_workspace() - program = workspace["seahorse"] - - TOKEN_PROGRAM_ID = Pubkey.from_string("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA") - ASSOCITAED_TOKEN_PROGRAM_ID = Pubkey.from_string("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL") - - # Create a Mint keypair. This will be our token mint. - mint = Keypair() - - - # Execute the instructions - - # Create a token - create_token = await program.rpc["create_token"](ctx=Context(accounts={ - "mint": mint.pubkey(), - "signer": program.provider.wallet.payer.pubkey(), - "system_program": SYS_PROGRAM_ID, - "rent": RENT, - "token_program": TOKEN_PROGRAM_ID - }, signers=[program.provider.wallet.payer, mint])) - - print("Create token signature: ", create_token) - - # Create a token account - associated_token_account_pubkey, nonce = Pubkey.find_program_address([bytes(program.provider.wallet.payer.pubkey()), bytes(TOKEN_PROGRAM_ID), bytes(mint.pubkey())], ASSOCITAED_TOKEN_PROGRAM_ID) - create_associated_token_account = await program.rpc["create_associated_token_account"](ctx=Context(accounts={ - "mint": mint.pubkey(), - "token_account" : associated_token_account_pubkey, - "signer": program.provider.wallet.payer.pubkey(), - "system_program": SYS_PROGRAM_ID, - "rent": RENT, - "token_program": TOKEN_PROGRAM_ID, - "associated_token_program" : ASSOCITAED_TOKEN_PROGRAM_ID - }, signers=[program.provider.wallet.payer])) - - print("Create associated token account signature: ", create_associated_token_account) - - # Mint tokens - mint_token = await program.rpc["mint_token"](1000, ctx=Context(accounts={ - "mint": mint.pubkey(), - "recipient" : associated_token_account_pubkey, - "signer": program.provider.wallet.payer.pubkey(), - "system_program": SYS_PROGRAM_ID, - "rent": RENT, - "token_program": TOKEN_PROGRAM_ID, - }, signers=[program.provider.wallet.payer])) - - print("Mint token signature: ", mint_token) - - # Transfer tokens (the tokens are transfered to the sender here, but you can of course create a new associated token account for the recipient) - transfer = await program.rpc["transfer"](1000, ctx=Context(accounts={ - "signer_token_account": associated_token_account_pubkey, - "recipient" : associated_token_account_pubkey, - "signer": program.provider.wallet.payer.pubkey(), - "system_program": SYS_PROGRAM_ID, - "rent": RENT, - "token_program": TOKEN_PROGRAM_ID, - "mint": mint.pubkey() - }, signers=[program.provider.wallet.payer])) - - print("Transfer signature: ", transfer) - - - # Close all HTTP clients in the workspace. - await close_workspace(workspace) - - -asyncio.run(main()) \ No newline at end of file diff --git a/tokens/transfer-tokens/seahorse/tsconfig.json b/tokens/transfer-tokens/seahorse/tsconfig.json deleted file mode 100644 index cd5d2e3d0..000000000 --- a/tokens/transfer-tokens/seahorse/tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "compilerOptions": { - "types": ["mocha", "chai"], - "typeRoots": ["./node_modules/@types"], - "lib": ["es2015"], - "module": "commonjs", - "target": "es6", - "esModuleInterop": true - } -} diff --git a/tokens/transfer-tokens/steel/.gitignore b/tokens/transfer-tokens/steel/.gitignore deleted file mode 100644 index 052739dbc..000000000 --- a/tokens/transfer-tokens/steel/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -target -test-ledger diff --git a/tokens/transfer-tokens/steel/Cargo.toml b/tokens/transfer-tokens/steel/Cargo.toml deleted file mode 100644 index c659c9825..000000000 --- a/tokens/transfer-tokens/steel/Cargo.toml +++ /dev/null @@ -1,26 +0,0 @@ -[workspace] -resolver = "2" -members = ["api", "program"] - -[workspace.package] -version = "0.1.0" -edition = "2021" -license = "Apache-2.0" -homepage = "" -documentation = "" -repository = "" -readme = "./README.md" -keywords = ["solana"] - -[workspace.dependencies] -transfer-tokens-api = { path = "./api", version = "0.1.0" } -bytemuck = "1.14" -num_enum = "0.7" -solana-program = "2.1" -steel = { version = "3.0", features = ["spl"] } -thiserror = "1.0" -spl-token = "^4" -mpl-token-metadata = { version = "4.1.2" } -spl-associated-token-account = { version = "^2.3", features = [ - "no-entrypoint", -] } diff --git a/tokens/transfer-tokens/steel/README.md b/tokens/transfer-tokens/steel/README.md deleted file mode 100644 index 4f4fe2a54..000000000 --- a/tokens/transfer-tokens/steel/README.md +++ /dev/null @@ -1,22 +0,0 @@ -# Steel - -**Steel** is a ... - -## API -- [`Consts`](api/src/consts.rs) – Program constants. -- [`Error`](api/src/error.rs) – Custom program errors. -- [`Event`](api/src/event.rs) – Custom program events. -- [`Instruction`](api/src/instruction.rs) – Declared instructions. - -## Instructions -- [`Hello`](program/src/hello.rs) – Hello ... - -## State -- [`User`](api/src/state/user.rs) – User ... - -## Tests - -To run the test suit, use the Solana toolchain: -``` -cargo test-sbf -``` diff --git a/tokens/transfer-tokens/steel/api/Cargo.toml b/tokens/transfer-tokens/steel/api/Cargo.toml deleted file mode 100644 index 95f068e07..000000000 --- a/tokens/transfer-tokens/steel/api/Cargo.toml +++ /dev/null @@ -1,14 +0,0 @@ -[package] -name = "transfer-tokens-api" -version = "0.1.0" -edition = "2021" - -[dependencies] -bytemuck.workspace = true -num_enum.workspace = true -solana-program.workspace = true -steel.workspace = true -thiserror.workspace = true -spl-token.workspace = true -mpl-token-metadata.workspace = true -spl-associated-token-account.workspace = true diff --git a/tokens/transfer-tokens/steel/api/src/consts.rs b/tokens/transfer-tokens/steel/api/src/consts.rs deleted file mode 100644 index 29271aa6f..000000000 --- a/tokens/transfer-tokens/steel/api/src/consts.rs +++ /dev/null @@ -1,2 +0,0 @@ -/// The seed of the metadata account PDA. -pub const METADATA: &[u8] = b"metadata"; diff --git a/tokens/transfer-tokens/steel/api/src/instruction.rs b/tokens/transfer-tokens/steel/api/src/instruction.rs deleted file mode 100644 index 8d9587359..000000000 --- a/tokens/transfer-tokens/steel/api/src/instruction.rs +++ /dev/null @@ -1,35 +0,0 @@ -use std::str; -use steel::*; - -#[repr(u8)] -#[derive(Clone, Copy, Debug, Eq, PartialEq, TryFromPrimitive)] -pub enum SteelInstruction { - Create = 0, - Mint = 1, - Transfer = 2, -} - -#[repr(C)] -#[derive(Clone, Copy, Debug, Pod, Zeroable)] -pub struct Create { - pub token_name: [u8; 32], - pub token_symbol: [u8; 8], - pub token_uri: [u8; 64], - pub token_decimals: u8, -} - -#[repr(C)] -#[derive(Clone, Copy, Debug, Pod, Zeroable)] -pub struct Mint { - pub quantity: [u8; 8], -} - -#[repr(C)] -#[derive(Clone, Copy, Debug, Pod, Zeroable)] -pub struct Transfer { - pub quantity: [u8; 8], -} - -instruction!(SteelInstruction, Create); -instruction!(SteelInstruction, Mint); -instruction!(SteelInstruction, Transfer); diff --git a/tokens/transfer-tokens/steel/api/src/lib.rs b/tokens/transfer-tokens/steel/api/src/lib.rs deleted file mode 100644 index 5bb60c309..000000000 --- a/tokens/transfer-tokens/steel/api/src/lib.rs +++ /dev/null @@ -1,16 +0,0 @@ -pub mod consts; -pub mod instruction; -pub mod sdk; -pub mod utils; - -pub mod prelude { - pub use crate::consts::*; - pub use crate::instruction::*; - pub use crate::sdk::*; - pub use crate::utils::*; -} - -use steel::*; - -// TODO Set program id -declare_id!("z7msBPQHDJjTvdQRoEcKyENgXDhSRYeHieN1ZMTqo35"); diff --git a/tokens/transfer-tokens/steel/api/src/sdk.rs b/tokens/transfer-tokens/steel/api/src/sdk.rs deleted file mode 100644 index b07656e16..000000000 --- a/tokens/transfer-tokens/steel/api/src/sdk.rs +++ /dev/null @@ -1,89 +0,0 @@ -use steel::*; - -use crate::prelude::*; - -pub fn create( - payer: Pubkey, - mint: Pubkey, - token_name: [u8; 32], - token_symbol: [u8; 8], - token_uri: [u8; 64], - token_decimals: u8, -) -> Instruction { - let metadata_pda = Pubkey::find_program_address( - &[METADATA, mpl_token_metadata::ID.as_ref(), mint.as_ref()], - &mpl_token_metadata::ID, - ); - - Instruction { - program_id: crate::ID, - accounts: vec![ - AccountMeta::new(payer, true), - AccountMeta::new(mint, true), - AccountMeta::new(metadata_pda.0, false), - AccountMeta::new_readonly(system_program::ID, false), - AccountMeta::new_readonly(spl_token::ID, false), - AccountMeta::new_readonly(mpl_token_metadata::ID, false), - AccountMeta::new_readonly(sysvar::rent::ID, false), - ], - data: Create { - token_name, - token_symbol, - token_uri, - token_decimals, - } - .to_bytes(), - } -} - -pub fn mint( - mint_authority: Pubkey, - recipient: Pubkey, - mint: Pubkey, - associated_token_account: Pubkey, - quantity: u64, -) -> Instruction { - Instruction { - program_id: crate::ID, - accounts: vec![ - AccountMeta::new(mint_authority, true), - AccountMeta::new(recipient, false), - AccountMeta::new(mint, false), - AccountMeta::new(associated_token_account, false), - AccountMeta::new_readonly(spl_token::ID, false), - AccountMeta::new_readonly(spl_associated_token_account::ID, false), - AccountMeta::new_readonly(system_program::ID, false), - ], - data: Mint { - quantity: quantity.to_le_bytes(), - } - .to_bytes(), - } -} - -pub fn transfer( - sender: Pubkey, - recipient: Pubkey, - mint: Pubkey, - sender_token_account: Pubkey, - recipient_token_account: Pubkey, - quantity: u64, -) -> Instruction { - Instruction { - program_id: crate::ID, - accounts: vec![ - AccountMeta::new(sender, true), - AccountMeta::new(recipient, true), - AccountMeta::new(mint, false), - AccountMeta::new(sender_token_account, false), - AccountMeta::new(recipient_token_account, false), - AccountMeta::new_readonly(spl_token::ID, false), - AccountMeta::new_readonly(spl_associated_token_account::ID, false), - AccountMeta::new_readonly(system_program::ID, false), - ], - data: Transfer { - quantity: quantity.to_le_bytes(), - } - .to_bytes(), - } -} diff --git a/tokens/transfer-tokens/steel/api/src/utils.rs b/tokens/transfer-tokens/steel/api/src/utils.rs deleted file mode 100644 index c067063d6..000000000 --- a/tokens/transfer-tokens/steel/api/src/utils.rs +++ /dev/null @@ -1,6 +0,0 @@ -pub fn str_to_bytes(str: &str) -> [u8; N] { - let mut str_bytes = [0u8; N]; - let copy_len = str.len().min(N); - str_bytes[..copy_len].copy_from_slice(&str.as_bytes()[..copy_len]); - str_bytes -} diff --git a/tokens/transfer-tokens/steel/cicd.sh b/tokens/transfer-tokens/steel/cicd.sh deleted file mode 100644 index 8a16e0387..000000000 --- a/tokens/transfer-tokens/steel/cicd.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash - -# This script is for quick building & deploying of the program. -# It also serves as a reference for the commands used for building & deploying Solana programs. -# Run this bad boy with "bash cicd.sh" or "./cicd.sh" - -cargo build-sbf --manifest-path=./program/Cargo.toml -solana program deploy ./program/target/deploy/program.so diff --git a/tokens/transfer-tokens/steel/package.json b/tokens/transfer-tokens/steel/package.json deleted file mode 100644 index 916f7f5c6..000000000 --- a/tokens/transfer-tokens/steel/package.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "scripts": { - "test": "pnpm ts-mocha -p ./tsconfig.json -t 1000000 ./tests/tests.ts", - "build-and-test": "cargo build-sbf --manifest-path=./program/Cargo.toml --sbf-out-dir=./tests/fixtures && pnpm test", - "build": "cargo build-sbf --manifest-path=./program/Cargo.toml --sbf-out-dir=./program/target/so", - "deploy": "solana program deploy ./program/target/so/transfer_tokens_program.so", - "postinstall": "zx prepare.mjs" - }, - "dependencies": { - "@metaplex-foundation/mpl-token-metadata": "^2.5.2", - "@solana/spl-token": "^0.3.7", - "@solana/web3.js": "^1.73.0", - "borsh": "^0.7.0", - "buffer": "^6.0.3", - "fs": "^0.0.1-security" - }, - "devDependencies": { - "@types/bn.js": "^5.1.0", - "@types/chai": "^4.3.1", - "@types/mocha": "^9.1.1", - "chai": "^4.3.4", - "mocha": "^9.0.3", - "ts-mocha": "^10.0.0", - "typescript": "^4.3.5", - "solana-bankrun": "^0.4.0", - "zx": "^8.1.4" - } -} diff --git a/tokens/transfer-tokens/steel/pnpm-lock.yaml b/tokens/transfer-tokens/steel/pnpm-lock.yaml deleted file mode 100644 index 3e9f682cc..000000000 --- a/tokens/transfer-tokens/steel/pnpm-lock.yaml +++ /dev/null @@ -1,2520 +0,0 @@ -lockfileVersion: "9.0" - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -importers: - .: - dependencies: - "@metaplex-foundation/mpl-token-metadata": - specifier: ^2.5.2 - version: 2.13.0(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)(utf-8-validate@5.0.10) - "@solana/spl-token": - specifier: ^0.3.7 - version: 0.3.11(@solana/web3.js@1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)(utf-8-validate@5.0.10) - "@solana/web3.js": - specifier: ^1.73.0 - version: 1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) - borsh: - specifier: ^0.7.0 - version: 0.7.0 - buffer: - specifier: ^6.0.3 - version: 6.0.3 - fs: - specifier: ^0.0.1-security - version: 0.0.1-security - devDependencies: - "@types/bn.js": - specifier: ^5.1.0 - version: 5.1.6 - "@types/chai": - specifier: ^4.3.1 - version: 4.3.20 - "@types/mocha": - specifier: ^9.1.1 - version: 9.1.1 - chai: - specifier: ^4.3.4 - version: 4.5.0 - mocha: - specifier: ^9.0.3 - version: 9.2.2 - solana-bankrun: - specifier: ^0.4.0 - version: 0.4.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - ts-mocha: - specifier: ^10.0.0 - version: 10.0.0(mocha@9.2.2) - typescript: - specifier: ^4.3.5 - version: 4.9.5 - zx: - specifier: ^8.1.4 - version: 8.1.9 - -packages: - "@babel/runtime@7.26.0": - resolution: - { - integrity: sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==, - } - engines: { node: ">=6.9.0" } - - "@metaplex-foundation/beet-solana@0.4.1": - resolution: - { - integrity: sha512-/6o32FNUtwK8tjhotrvU/vorP7umBuRFvBZrC6XCk51aKidBHe5LPVPA5AjGPbV3oftMfRuXPNd9yAGeEqeCDQ==, - } - - "@metaplex-foundation/beet@0.7.2": - resolution: - { - integrity: sha512-K+g3WhyFxKPc0xIvcIjNyV1eaTVJTiuaHZpig7Xx0MuYRMoJLLvhLTnUXhFdR5Tu2l2QSyKwfyXDgZlzhULqFg==, - } - - "@metaplex-foundation/cusper@0.0.2": - resolution: - { - integrity: sha512-S9RulC2fFCFOQraz61bij+5YCHhSO9llJegK8c8Y6731fSi6snUSQJdCUqYS8AIgR0TKbQvdvgSyIIdbDFZbBA==, - } - - "@metaplex-foundation/mpl-token-metadata@2.13.0": - resolution: - { - integrity: sha512-Fl/8I0L9rv4bKTV/RAl5YIbJe9SnQPInKvLz+xR1fEc4/VQkuCn3RPgypfUMEKWmCznzaw4sApDxy6CFS4qmJw==, - } - - "@noble/curves@1.6.0": - resolution: - { - integrity: sha512-TlaHRXDehJuRNR9TfZDNQ45mMEd5dwUwmicsafcIX4SsNiqnCHKjE/1alYPd/lDRVhxdhUAlv8uEhMCI5zjIJQ==, - } - engines: { node: ^14.21.3 || >=16 } - - "@noble/hashes@1.5.0": - resolution: - { - integrity: sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==, - } - engines: { node: ^14.21.3 || >=16 } - - "@solana/buffer-layout-utils@0.2.0": - resolution: - { - integrity: sha512-szG4sxgJGktbuZYDg2FfNmkMi0DYQoVjN2h7ta1W1hPrwzarcFLBq9UpX1UjNXsNpT9dn+chgprtWGioUAr4/g==, - } - engines: { node: ">= 10" } - - "@solana/buffer-layout@4.0.1": - resolution: - { - integrity: sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==, - } - engines: { node: ">=5.10" } - - "@solana/codecs-core@2.0.0-rc.1": - resolution: - { - integrity: sha512-bauxqMfSs8EHD0JKESaNmNuNvkvHSuN3bbWAF5RjOfDu2PugxHrvRebmYauvSumZ3cTfQ4HJJX6PG5rN852qyQ==, - } - peerDependencies: - typescript: ">=5" - - "@solana/codecs-data-structures@2.0.0-rc.1": - resolution: - { - integrity: sha512-rinCv0RrAVJ9rE/rmaibWJQxMwC5lSaORSZuwjopSUE6T0nb/MVg6Z1siNCXhh/HFTOg0l8bNvZHgBcN/yvXog==, - } - peerDependencies: - typescript: ">=5" - - "@solana/codecs-numbers@2.0.0-rc.1": - resolution: - { - integrity: sha512-J5i5mOkvukXn8E3Z7sGIPxsThRCgSdgTWJDQeZvucQ9PT6Y3HiVXJ0pcWiOWAoQ3RX8e/f4I3IC+wE6pZiJzDQ==, - } - peerDependencies: - typescript: ">=5" - - "@solana/codecs-strings@2.0.0-rc.1": - resolution: - { - integrity: sha512-9/wPhw8TbGRTt6mHC4Zz1RqOnuPTqq1Nb4EyuvpZ39GW6O2t2Q7Q0XxiB3+BdoEjwA2XgPw6e2iRfvYgqty44g==, - } - peerDependencies: - fastestsmallesttextencoderdecoder: ^1.0.22 - typescript: ">=5" - - "@solana/codecs@2.0.0-rc.1": - resolution: - { - integrity: sha512-qxoR7VybNJixV51L0G1RD2boZTcxmwUWnKCaJJExQ5qNKwbpSyDdWfFJfM5JhGyKe9DnPVOZB+JHWXnpbZBqrQ==, - } - peerDependencies: - typescript: ">=5" - - "@solana/errors@2.0.0-rc.1": - resolution: - { - integrity: sha512-ejNvQ2oJ7+bcFAYWj225lyRkHnixuAeb7RQCixm+5mH4n1IA4Qya/9Bmfy5RAAHQzxK43clu3kZmL5eF9VGtYQ==, - } - hasBin: true - peerDependencies: - typescript: ">=5" - - "@solana/options@2.0.0-rc.1": - resolution: - { - integrity: sha512-mLUcR9mZ3qfHlmMnREdIFPf9dpMc/Bl66tLSOOWxw4ml5xMT2ohFn7WGqoKcu/UHkT9CrC6+amEdqCNvUqI7AA==, - } - peerDependencies: - typescript: ">=5" - - "@solana/spl-token-metadata@0.1.6": - resolution: - { - integrity: sha512-7sMt1rsm/zQOQcUWllQX9mD2O6KhSAtY1hFR2hfFwgqfFWzSY9E9GDvFVNYUI1F0iQKcm6HmePU9QbKRXTEBiA==, - } - engines: { node: ">=16" } - peerDependencies: - "@solana/web3.js": ^1.95.3 - - "@solana/spl-token@0.3.11": - resolution: - { - integrity: sha512-bvohO3rIMSVL24Pb+I4EYTJ6cL82eFpInEXD/I8K8upOGjpqHsKUoAempR/RnUlI1qSFNyFlWJfu6MNUgfbCQQ==, - } - engines: { node: ">=16" } - peerDependencies: - "@solana/web3.js": ^1.88.0 - - "@solana/web3.js@1.95.4": - resolution: - { - integrity: sha512-sdewnNEA42ZSMxqkzdwEWi6fDgzwtJHaQa5ndUGEJYtoOnM6X5cvPmjoTUp7/k7bRrVAxfBgDnvQQHD6yhlLYw==, - } - - "@swc/helpers@0.5.13": - resolution: - { - integrity: sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==, - } - - "@types/bn.js@5.1.6": - resolution: - { - integrity: sha512-Xh8vSwUeMKeYYrj3cX4lGQgFSF/N03r+tv4AiLl1SucqV+uTQpxRcnM8AkXKHwYP9ZPXOYXRr2KPXpVlIvqh9w==, - } - - "@types/chai@4.3.20": - resolution: - { - integrity: sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==, - } - - "@types/connect@3.4.38": - resolution: - { - integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==, - } - - "@types/fs-extra@11.0.4": - resolution: - { - integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==, - } - - "@types/json5@0.0.29": - resolution: - { - integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==, - } - - "@types/jsonfile@6.1.4": - resolution: - { - integrity: sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==, - } - - "@types/mocha@9.1.1": - resolution: - { - integrity: sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==, - } - - "@types/node@12.20.55": - resolution: - { - integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==, - } - - "@types/node@22.8.4": - resolution: - { - integrity: sha512-SpNNxkftTJOPk0oN+y2bIqurEXHTA2AOZ3EJDDKeJ5VzkvvORSvmQXGQarcOzWV1ac7DCaPBEdMDxBsM+d8jWw==, - } - - "@types/uuid@8.3.4": - resolution: - { - integrity: sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==, - } - - "@types/ws@7.4.7": - resolution: - { - integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==, - } - - "@types/ws@8.5.12": - resolution: - { - integrity: sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==, - } - - "@ungap/promise-all-settled@1.1.2": - resolution: - { - integrity: sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==, - } - - JSONStream@1.3.5: - resolution: - { - integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==, - } - hasBin: true - - agentkeepalive@4.5.0: - resolution: - { - integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==, - } - engines: { node: ">= 8.0.0" } - - ansi-colors@4.1.1: - resolution: - { - integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==, - } - engines: { node: ">=6" } - - ansi-regex@5.0.1: - resolution: - { - integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==, - } - engines: { node: ">=8" } - - ansi-styles@4.3.0: - resolution: - { - integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==, - } - engines: { node: ">=8" } - - ansicolors@0.3.2: - resolution: - { - integrity: sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==, - } - - anymatch@3.1.3: - resolution: - { - integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==, - } - engines: { node: ">= 8" } - - argparse@2.0.1: - resolution: - { - integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==, - } - - arrify@1.0.1: - resolution: - { - integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==, - } - engines: { node: ">=0.10.0" } - - assert@2.1.0: - resolution: - { - integrity: sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==, - } - - assertion-error@1.1.0: - resolution: - { - integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==, - } - - available-typed-arrays@1.0.7: - resolution: - { - integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==, - } - engines: { node: ">= 0.4" } - - balanced-match@1.0.2: - resolution: - { - integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==, - } - - base-x@3.0.10: - resolution: - { - integrity: sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==, - } - - base-x@4.0.0: - resolution: - { - integrity: sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==, - } - - base64-js@1.5.1: - resolution: - { - integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==, - } - - bigint-buffer@1.1.5: - resolution: - { - integrity: sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA==, - } - engines: { node: ">= 10.0.0" } - - bignumber.js@9.1.2: - resolution: - { - integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==, - } - - binary-extensions@2.3.0: - resolution: - { - integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==, - } - engines: { node: ">=8" } - - bindings@1.5.0: - resolution: - { - integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==, - } - - bn.js@5.2.1: - resolution: - { - integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==, - } - - borsh@0.7.0: - resolution: - { - integrity: sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==, - } - - brace-expansion@1.1.11: - resolution: - { - integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==, - } - - braces@3.0.3: - resolution: - { - integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==, - } - engines: { node: ">=8" } - - browser-stdout@1.3.1: - resolution: - { - integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==, - } - - bs58@4.0.1: - resolution: - { - integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==, - } - - bs58@5.0.0: - resolution: - { - integrity: sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==, - } - - buffer-from@1.1.2: - resolution: - { - integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==, - } - - buffer@6.0.3: - resolution: - { - integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==, - } - - bufferutil@4.0.8: - resolution: - { - integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==, - } - engines: { node: ">=6.14.2" } - - call-bind@1.0.7: - resolution: - { - integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==, - } - engines: { node: ">= 0.4" } - - camelcase@6.3.0: - resolution: - { - integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==, - } - engines: { node: ">=10" } - - chai@4.5.0: - resolution: - { - integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==, - } - engines: { node: ">=4" } - - chalk@4.1.2: - resolution: - { - integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==, - } - engines: { node: ">=10" } - - chalk@5.3.0: - resolution: - { - integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==, - } - engines: { node: ^12.17.0 || ^14.13 || >=16.0.0 } - - check-error@1.0.3: - resolution: - { - integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==, - } - - chokidar@3.5.3: - resolution: - { - integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==, - } - engines: { node: ">= 8.10.0" } - - cliui@7.0.4: - resolution: - { - integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==, - } - - color-convert@2.0.1: - resolution: - { - integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==, - } - engines: { node: ">=7.0.0" } - - color-name@1.1.4: - resolution: - { - integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==, - } - - commander@12.1.0: - resolution: - { - integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==, - } - engines: { node: ">=18" } - - commander@2.20.3: - resolution: - { - integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==, - } - - concat-map@0.0.1: - resolution: - { - integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==, - } - - debug@4.3.3: - resolution: - { - integrity: sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==, - } - engines: { node: ">=6.0" } - peerDependencies: - supports-color: "*" - peerDependenciesMeta: - supports-color: - optional: true - - debug@4.3.7: - resolution: - { - integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==, - } - engines: { node: ">=6.0" } - peerDependencies: - supports-color: "*" - peerDependenciesMeta: - supports-color: - optional: true - - decamelize@4.0.0: - resolution: - { - integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==, - } - engines: { node: ">=10" } - - deep-eql@4.1.4: - resolution: - { - integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==, - } - engines: { node: ">=6" } - - define-data-property@1.1.4: - resolution: - { - integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==, - } - engines: { node: ">= 0.4" } - - define-properties@1.2.1: - resolution: - { - integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==, - } - engines: { node: ">= 0.4" } - - delay@5.0.0: - resolution: - { - integrity: sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==, - } - engines: { node: ">=10" } - - diff@3.5.0: - resolution: - { - integrity: sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==, - } - engines: { node: ">=0.3.1" } - - diff@5.0.0: - resolution: - { - integrity: sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==, - } - engines: { node: ">=0.3.1" } - - emoji-regex@8.0.0: - resolution: - { - integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==, - } - - es-define-property@1.0.0: - resolution: - { - integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==, - } - engines: { node: ">= 0.4" } - - es-errors@1.3.0: - resolution: - { - integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==, - } - engines: { node: ">= 0.4" } - - es6-promise@4.2.8: - resolution: - { - integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==, - } - - es6-promisify@5.0.0: - resolution: - { - integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==, - } - - escalade@3.2.0: - resolution: - { - integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==, - } - engines: { node: ">=6" } - - escape-string-regexp@4.0.0: - resolution: - { - integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==, - } - engines: { node: ">=10" } - - eventemitter3@5.0.1: - resolution: - { - integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==, - } - - eyes@0.1.8: - resolution: - { - integrity: sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==, - } - engines: { node: "> 0.1.90" } - - fast-stable-stringify@1.0.0: - resolution: - { - integrity: sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==, - } - - fastestsmallesttextencoderdecoder@1.0.22: - resolution: - { - integrity: sha512-Pb8d48e+oIuY4MaM64Cd7OW1gt4nxCHs7/ddPPZ/Ic3sg8yVGM7O9wDvZ7us6ScaUupzM+pfBolwtYhN1IxBIw==, - } - - file-uri-to-path@1.0.0: - resolution: - { - integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==, - } - - fill-range@7.1.1: - resolution: - { - integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==, - } - engines: { node: ">=8" } - - find-up@5.0.0: - resolution: - { - integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==, - } - engines: { node: ">=10" } - - flat@5.0.2: - resolution: - { - integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==, - } - hasBin: true - - for-each@0.3.3: - resolution: - { - integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==, - } - - fs.realpath@1.0.0: - resolution: - { - integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==, - } - - fs@0.0.1-security: - resolution: - { - integrity: sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w==, - } - - fsevents@2.3.3: - resolution: - { - integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==, - } - engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 } - os: [darwin] - - function-bind@1.1.2: - resolution: - { - integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==, - } - - get-caller-file@2.0.5: - resolution: - { - integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==, - } - engines: { node: 6.* || 8.* || >= 10.* } - - get-func-name@2.0.2: - resolution: - { - integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==, - } - - get-intrinsic@1.2.4: - resolution: - { - integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==, - } - engines: { node: ">= 0.4" } - - glob-parent@5.1.2: - resolution: - { - integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==, - } - engines: { node: ">= 6" } - - glob@7.2.0: - resolution: - { - integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==, - } - deprecated: Glob versions prior to v9 are no longer supported - - gopd@1.0.1: - resolution: - { - integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==, - } - - growl@1.10.5: - resolution: - { - integrity: sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==, - } - engines: { node: ">=4.x" } - - has-flag@4.0.0: - resolution: - { - integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==, - } - engines: { node: ">=8" } - - has-property-descriptors@1.0.2: - resolution: - { - integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==, - } - - has-proto@1.0.3: - resolution: - { - integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==, - } - engines: { node: ">= 0.4" } - - has-symbols@1.0.3: - resolution: - { - integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==, - } - engines: { node: ">= 0.4" } - - has-tostringtag@1.0.2: - resolution: - { - integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==, - } - engines: { node: ">= 0.4" } - - hasown@2.0.2: - resolution: - { - integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==, - } - engines: { node: ">= 0.4" } - - he@1.2.0: - resolution: - { - integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==, - } - hasBin: true - - humanize-ms@1.2.1: - resolution: - { - integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==, - } - - ieee754@1.2.1: - resolution: - { - integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==, - } - - inflight@1.0.6: - resolution: - { - integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==, - } - deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. - - inherits@2.0.4: - resolution: - { - integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==, - } - - is-arguments@1.1.1: - resolution: - { - integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==, - } - engines: { node: ">= 0.4" } - - is-binary-path@2.1.0: - resolution: - { - integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==, - } - engines: { node: ">=8" } - - is-callable@1.2.7: - resolution: - { - integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==, - } - engines: { node: ">= 0.4" } - - is-extglob@2.1.1: - resolution: - { - integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==, - } - engines: { node: ">=0.10.0" } - - is-fullwidth-code-point@3.0.0: - resolution: - { - integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==, - } - engines: { node: ">=8" } - - is-generator-function@1.0.10: - resolution: - { - integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==, - } - engines: { node: ">= 0.4" } - - is-glob@4.0.3: - resolution: - { - integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==, - } - engines: { node: ">=0.10.0" } - - is-nan@1.3.2: - resolution: - { - integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==, - } - engines: { node: ">= 0.4" } - - is-number@7.0.0: - resolution: - { - integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==, - } - engines: { node: ">=0.12.0" } - - is-plain-obj@2.1.0: - resolution: - { - integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==, - } - engines: { node: ">=8" } - - is-typed-array@1.1.13: - resolution: - { - integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==, - } - engines: { node: ">= 0.4" } - - is-unicode-supported@0.1.0: - resolution: - { - integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==, - } - engines: { node: ">=10" } - - isexe@2.0.0: - resolution: - { - integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==, - } - - isomorphic-ws@4.0.1: - resolution: - { - integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==, - } - peerDependencies: - ws: "*" - - jayson@4.1.2: - resolution: - { - integrity: sha512-5nzMWDHy6f+koZOuYsArh2AXs73NfWYVlFyJJuCedr93GpY+Ku8qq10ropSXVfHK+H0T6paA88ww+/dV+1fBNA==, - } - engines: { node: ">=8" } - hasBin: true - - js-yaml@4.1.0: - resolution: - { - integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==, - } - hasBin: true - - json-stringify-safe@5.0.1: - resolution: - { - integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==, - } - - json5@1.0.2: - resolution: - { - integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==, - } - hasBin: true - - jsonparse@1.3.1: - resolution: - { - integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==, - } - engines: { "0": node >= 0.2.0 } - - locate-path@6.0.0: - resolution: - { - integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==, - } - engines: { node: ">=10" } - - log-symbols@4.1.0: - resolution: - { - integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==, - } - engines: { node: ">=10" } - - loupe@2.3.7: - resolution: - { - integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==, - } - - make-error@1.3.6: - resolution: - { - integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==, - } - - minimatch@3.1.2: - resolution: - { - integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==, - } - - minimatch@4.2.1: - resolution: - { - integrity: sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==, - } - engines: { node: ">=10" } - - minimist@1.2.8: - resolution: - { - integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==, - } - - mkdirp@0.5.6: - resolution: - { - integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==, - } - hasBin: true - - mocha@9.2.2: - resolution: - { - integrity: sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==, - } - engines: { node: ">= 12.0.0" } - hasBin: true - - ms@2.1.2: - resolution: - { - integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==, - } - - ms@2.1.3: - resolution: - { - integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==, - } - - nanoid@3.3.1: - resolution: - { - integrity: sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==, - } - engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 } - hasBin: true - - node-fetch@2.7.0: - resolution: - { - integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==, - } - engines: { node: 4.x || >=6.0.0 } - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - - node-gyp-build@4.8.2: - resolution: - { - integrity: sha512-IRUxE4BVsHWXkV/SFOut4qTlagw2aM8T5/vnTsmrHJvVoKueJHRc/JaFND7QDDc61kLYUJ6qlZM3sqTSyx2dTw==, - } - hasBin: true - - normalize-path@3.0.0: - resolution: - { - integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==, - } - engines: { node: ">=0.10.0" } - - object-is@1.1.6: - resolution: - { - integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==, - } - engines: { node: ">= 0.4" } - - object-keys@1.1.1: - resolution: - { - integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==, - } - engines: { node: ">= 0.4" } - - object.assign@4.1.5: - resolution: - { - integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==, - } - engines: { node: ">= 0.4" } - - once@1.4.0: - resolution: - { - integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==, - } - - p-limit@3.1.0: - resolution: - { - integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==, - } - engines: { node: ">=10" } - - p-locate@5.0.0: - resolution: - { - integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==, - } - engines: { node: ">=10" } - - path-exists@4.0.0: - resolution: - { - integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==, - } - engines: { node: ">=8" } - - path-is-absolute@1.0.1: - resolution: - { - integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==, - } - engines: { node: ">=0.10.0" } - - pathval@1.1.1: - resolution: - { - integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==, - } - - picomatch@2.3.1: - resolution: - { - integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==, - } - engines: { node: ">=8.6" } - - possible-typed-array-names@1.0.0: - resolution: - { - integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==, - } - engines: { node: ">= 0.4" } - - randombytes@2.1.0: - resolution: - { - integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==, - } - - readdirp@3.6.0: - resolution: - { - integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==, - } - engines: { node: ">=8.10.0" } - - regenerator-runtime@0.14.1: - resolution: - { - integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==, - } - - require-directory@2.1.1: - resolution: - { - integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==, - } - engines: { node: ">=0.10.0" } - - rpc-websockets@9.0.4: - resolution: - { - integrity: sha512-yWZWN0M+bivtoNLnaDbtny4XchdAIF5Q4g/ZsC5UC61Ckbp0QczwO8fg44rV3uYmY4WHd+EZQbn90W1d8ojzqQ==, - } - - safe-buffer@5.2.1: - resolution: - { - integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==, - } - - serialize-javascript@6.0.0: - resolution: - { - integrity: sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==, - } - - set-function-length@1.2.2: - resolution: - { - integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==, - } - engines: { node: ">= 0.4" } - - solana-bankrun-darwin-arm64@0.4.0: - resolution: - { - integrity: sha512-6dz78Teoz7ez/3lpRLDjktYLJb79FcmJk2me4/YaB8WiO6W43OdExU4h+d2FyuAryO2DgBPXaBoBNY/8J1HJmw==, - } - engines: { node: ">= 10" } - cpu: [arm64] - os: [darwin] - - solana-bankrun-darwin-universal@0.4.0: - resolution: - { - integrity: sha512-zSSw/Jx3KNU42pPMmrEWABd0nOwGJfsj7nm9chVZ3ae7WQg3Uty0hHAkn5NSDCj3OOiN0py9Dr1l9vmRJpOOxg==, - } - engines: { node: ">= 10" } - os: [darwin] - - solana-bankrun-darwin-x64@0.4.0: - resolution: - { - integrity: sha512-LWjs5fsgHFtyr7YdJR6r0Ho5zrtzI6CY4wvwPXr8H2m3b4pZe6RLIZjQtabCav4cguc14G0K8yQB2PTMuGub8w==, - } - engines: { node: ">= 10" } - cpu: [x64] - os: [darwin] - - solana-bankrun-linux-x64-gnu@0.4.0: - resolution: - { - integrity: sha512-SrlVrb82UIxt21Zr/XZFHVV/h9zd2/nP25PMpLJVLD7Pgl2yhkhfi82xj3OjxoQqWe+zkBJ+uszA0EEKr67yNw==, - } - engines: { node: ">= 10" } - cpu: [x64] - os: [linux] - - solana-bankrun-linux-x64-musl@0.4.0: - resolution: - { - integrity: sha512-Nv328ZanmURdYfcLL+jwB1oMzX4ZzK57NwIcuJjGlf0XSNLq96EoaO5buEiUTo4Ls7MqqMyLbClHcrPE7/aKyA==, - } - engines: { node: ">= 10" } - cpu: [x64] - os: [linux] - - solana-bankrun@0.4.0: - resolution: - { - integrity: sha512-NMmXUipPBkt8NgnyNO3SCnPERP6xT/AMNMBooljGA3+rG6NN8lmXJsKeLqQTiFsDeWD74U++QM/DgcueSWvrIg==, - } - engines: { node: ">= 10" } - - source-map-support@0.5.21: - resolution: - { - integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==, - } - - source-map@0.6.1: - resolution: - { - integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==, - } - engines: { node: ">=0.10.0" } - - string-width@4.2.3: - resolution: - { - integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==, - } - engines: { node: ">=8" } - - strip-ansi@6.0.1: - resolution: - { - integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==, - } - engines: { node: ">=8" } - - strip-bom@3.0.0: - resolution: - { - integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==, - } - engines: { node: ">=4" } - - strip-json-comments@3.1.1: - resolution: - { - integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==, - } - engines: { node: ">=8" } - - superstruct@2.0.2: - resolution: - { - integrity: sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A==, - } - engines: { node: ">=14.0.0" } - - supports-color@7.2.0: - resolution: - { - integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==, - } - engines: { node: ">=8" } - - supports-color@8.1.1: - resolution: - { - integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==, - } - engines: { node: ">=10" } - - text-encoding-utf-8@1.0.2: - resolution: - { - integrity: sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==, - } - - through@2.3.8: - resolution: - { - integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==, - } - - to-regex-range@5.0.1: - resolution: - { - integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==, - } - engines: { node: ">=8.0" } - - tr46@0.0.3: - resolution: - { - integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==, - } - - ts-mocha@10.0.0: - resolution: - { - integrity: sha512-VRfgDO+iiuJFlNB18tzOfypJ21xn2xbuZyDvJvqpTbWgkAgD17ONGr8t+Tl8rcBtOBdjXp5e/Rk+d39f7XBHRw==, - } - engines: { node: ">= 6.X.X" } - hasBin: true - peerDependencies: - mocha: ^3.X.X || ^4.X.X || ^5.X.X || ^6.X.X || ^7.X.X || ^8.X.X || ^9.X.X || ^10.X.X - - ts-node@7.0.1: - resolution: - { - integrity: sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==, - } - engines: { node: ">=4.2.0" } - hasBin: true - - tsconfig-paths@3.15.0: - resolution: - { - integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==, - } - - tslib@2.8.0: - resolution: - { - integrity: sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==, - } - - type-detect@4.1.0: - resolution: - { - integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==, - } - engines: { node: ">=4" } - - typescript@4.9.5: - resolution: - { - integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==, - } - engines: { node: ">=4.2.0" } - hasBin: true - - undici-types@6.19.8: - resolution: - { - integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==, - } - - utf-8-validate@5.0.10: - resolution: - { - integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==, - } - engines: { node: ">=6.14.2" } - - util@0.12.5: - resolution: - { - integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==, - } - - uuid@8.3.2: - resolution: - { - integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==, - } - hasBin: true - - webidl-conversions@3.0.1: - resolution: - { - integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==, - } - - whatwg-url@5.0.0: - resolution: - { - integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==, - } - - which-typed-array@1.1.15: - resolution: - { - integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==, - } - engines: { node: ">= 0.4" } - - which@2.0.2: - resolution: - { - integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==, - } - engines: { node: ">= 8" } - hasBin: true - - workerpool@6.2.0: - resolution: - { - integrity: sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==, - } - - wrap-ansi@7.0.0: - resolution: - { - integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==, - } - engines: { node: ">=10" } - - wrappy@1.0.2: - resolution: - { - integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==, - } - - ws@7.5.10: - resolution: - { - integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==, - } - engines: { node: ">=8.3.0" } - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - ws@8.18.0: - resolution: - { - integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==, - } - engines: { node: ">=10.0.0" } - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ">=5.0.2" - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - y18n@5.0.8: - resolution: - { - integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==, - } - engines: { node: ">=10" } - - yargs-parser@20.2.4: - resolution: - { - integrity: sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==, - } - engines: { node: ">=10" } - - yargs-unparser@2.0.0: - resolution: - { - integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==, - } - engines: { node: ">=10" } - - yargs@16.2.0: - resolution: - { - integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==, - } - engines: { node: ">=10" } - - yn@2.0.0: - resolution: - { - integrity: sha512-uTv8J/wiWTgUTg+9vLTi//leUl5vDQS6uii/emeTb2ssY7vl6QWf2fFbIIGjnhjvbdKlU0ed7QPgY1htTC86jQ==, - } - engines: { node: ">=4" } - - yocto-queue@0.1.0: - resolution: - { - integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==, - } - engines: { node: ">=10" } - - zx@8.1.9: - resolution: - { - integrity: sha512-UHuLHphHmsBYKkAchkSrEN4nzDyagafqC9HUxtc1J7eopaScW6H9dsLJ1lmkAntnLtDTGoM8fa+jrJrXiIfKFA==, - } - engines: { node: ">= 12.17.0" } - hasBin: true - -snapshots: - "@babel/runtime@7.26.0": - dependencies: - regenerator-runtime: 0.14.1 - - "@metaplex-foundation/beet-solana@0.4.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)": - dependencies: - "@metaplex-foundation/beet": 0.7.2 - "@solana/web3.js": 1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) - bs58: 5.0.0 - debug: 4.3.7 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - - "@metaplex-foundation/beet@0.7.2": - dependencies: - ansicolors: 0.3.2 - assert: 2.1.0 - bn.js: 5.2.1 - debug: 4.3.7 - transitivePeerDependencies: - - supports-color - - "@metaplex-foundation/cusper@0.0.2": {} - - "@metaplex-foundation/mpl-token-metadata@2.13.0(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)(utf-8-validate@5.0.10)": - dependencies: - "@metaplex-foundation/beet": 0.7.2 - "@metaplex-foundation/beet-solana": 0.4.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) - "@metaplex-foundation/cusper": 0.0.2 - "@solana/spl-token": 0.3.11(@solana/web3.js@1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)(utf-8-validate@5.0.10) - "@solana/web3.js": 1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) - bn.js: 5.2.1 - debug: 4.3.7 - transitivePeerDependencies: - - bufferutil - - encoding - - fastestsmallesttextencoderdecoder - - supports-color - - typescript - - utf-8-validate - - "@noble/curves@1.6.0": - dependencies: - "@noble/hashes": 1.5.0 - - "@noble/hashes@1.5.0": {} - - "@solana/buffer-layout-utils@0.2.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)": - dependencies: - "@solana/buffer-layout": 4.0.1 - "@solana/web3.js": 1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) - bigint-buffer: 1.1.5 - bignumber.js: 9.1.2 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - - "@solana/buffer-layout@4.0.1": - dependencies: - buffer: 6.0.3 - - "@solana/codecs-core@2.0.0-rc.1(typescript@4.9.5)": - dependencies: - "@solana/errors": 2.0.0-rc.1(typescript@4.9.5) - typescript: 4.9.5 - - "@solana/codecs-data-structures@2.0.0-rc.1(typescript@4.9.5)": - dependencies: - "@solana/codecs-core": 2.0.0-rc.1(typescript@4.9.5) - "@solana/codecs-numbers": 2.0.0-rc.1(typescript@4.9.5) - "@solana/errors": 2.0.0-rc.1(typescript@4.9.5) - typescript: 4.9.5 - - "@solana/codecs-numbers@2.0.0-rc.1(typescript@4.9.5)": - dependencies: - "@solana/codecs-core": 2.0.0-rc.1(typescript@4.9.5) - "@solana/errors": 2.0.0-rc.1(typescript@4.9.5) - typescript: 4.9.5 - - "@solana/codecs-strings@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)": - dependencies: - "@solana/codecs-core": 2.0.0-rc.1(typescript@4.9.5) - "@solana/codecs-numbers": 2.0.0-rc.1(typescript@4.9.5) - "@solana/errors": 2.0.0-rc.1(typescript@4.9.5) - fastestsmallesttextencoderdecoder: 1.0.22 - typescript: 4.9.5 - - "@solana/codecs@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)": - dependencies: - "@solana/codecs-core": 2.0.0-rc.1(typescript@4.9.5) - "@solana/codecs-data-structures": 2.0.0-rc.1(typescript@4.9.5) - "@solana/codecs-numbers": 2.0.0-rc.1(typescript@4.9.5) - "@solana/codecs-strings": 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5) - "@solana/options": 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5) - typescript: 4.9.5 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - "@solana/errors@2.0.0-rc.1(typescript@4.9.5)": - dependencies: - chalk: 5.3.0 - commander: 12.1.0 - typescript: 4.9.5 - - "@solana/options@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)": - dependencies: - "@solana/codecs-core": 2.0.0-rc.1(typescript@4.9.5) - "@solana/codecs-data-structures": 2.0.0-rc.1(typescript@4.9.5) - "@solana/codecs-numbers": 2.0.0-rc.1(typescript@4.9.5) - "@solana/codecs-strings": 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5) - "@solana/errors": 2.0.0-rc.1(typescript@4.9.5) - typescript: 4.9.5 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - "@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)": - dependencies: - "@solana/codecs": 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5) - "@solana/web3.js": 1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - typescript - - "@solana/spl-token@0.3.11(@solana/web3.js@1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)(utf-8-validate@5.0.10)": - dependencies: - "@solana/buffer-layout": 4.0.1 - "@solana/buffer-layout-utils": 0.2.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - "@solana/spl-token-metadata": 0.1.6(@solana/web3.js@1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5) - "@solana/web3.js": 1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) - buffer: 6.0.3 - transitivePeerDependencies: - - bufferutil - - encoding - - fastestsmallesttextencoderdecoder - - typescript - - utf-8-validate - - "@solana/web3.js@1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10)": - dependencies: - "@babel/runtime": 7.26.0 - "@noble/curves": 1.6.0 - "@noble/hashes": 1.5.0 - "@solana/buffer-layout": 4.0.1 - agentkeepalive: 4.5.0 - bigint-buffer: 1.1.5 - bn.js: 5.2.1 - borsh: 0.7.0 - bs58: 4.0.1 - buffer: 6.0.3 - fast-stable-stringify: 1.0.0 - jayson: 4.1.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) - node-fetch: 2.7.0 - rpc-websockets: 9.0.4 - superstruct: 2.0.2 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - - "@swc/helpers@0.5.13": - dependencies: - tslib: 2.8.0 - - "@types/bn.js@5.1.6": - dependencies: - "@types/node": 22.8.4 - - "@types/chai@4.3.20": {} - - "@types/connect@3.4.38": - dependencies: - "@types/node": 12.20.55 - - "@types/fs-extra@11.0.4": - dependencies: - "@types/jsonfile": 6.1.4 - "@types/node": 22.8.4 - optional: true - - "@types/json5@0.0.29": - optional: true - - "@types/jsonfile@6.1.4": - dependencies: - "@types/node": 22.8.4 - optional: true - - "@types/mocha@9.1.1": {} - - "@types/node@12.20.55": {} - - "@types/node@22.8.4": - dependencies: - undici-types: 6.19.8 - - "@types/uuid@8.3.4": {} - - "@types/ws@7.4.7": - dependencies: - "@types/node": 12.20.55 - - "@types/ws@8.5.12": - dependencies: - "@types/node": 22.8.4 - - "@ungap/promise-all-settled@1.1.2": {} - - JSONStream@1.3.5: - dependencies: - jsonparse: 1.3.1 - through: 2.3.8 - - agentkeepalive@4.5.0: - dependencies: - humanize-ms: 1.2.1 - - ansi-colors@4.1.1: {} - - ansi-regex@5.0.1: {} - - ansi-styles@4.3.0: - dependencies: - color-convert: 2.0.1 - - ansicolors@0.3.2: {} - - anymatch@3.1.3: - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - - argparse@2.0.1: {} - - arrify@1.0.1: {} - - assert@2.1.0: - dependencies: - call-bind: 1.0.7 - is-nan: 1.3.2 - object-is: 1.1.6 - object.assign: 4.1.5 - util: 0.12.5 - - assertion-error@1.1.0: {} - - available-typed-arrays@1.0.7: - dependencies: - possible-typed-array-names: 1.0.0 - - balanced-match@1.0.2: {} - - base-x@3.0.10: - dependencies: - safe-buffer: 5.2.1 - - base-x@4.0.0: {} - - base64-js@1.5.1: {} - - bigint-buffer@1.1.5: - dependencies: - bindings: 1.5.0 - - bignumber.js@9.1.2: {} - - binary-extensions@2.3.0: {} - - bindings@1.5.0: - dependencies: - file-uri-to-path: 1.0.0 - - bn.js@5.2.1: {} - - borsh@0.7.0: - dependencies: - bn.js: 5.2.1 - bs58: 4.0.1 - text-encoding-utf-8: 1.0.2 - - brace-expansion@1.1.11: - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - - braces@3.0.3: - dependencies: - fill-range: 7.1.1 - - browser-stdout@1.3.1: {} - - bs58@4.0.1: - dependencies: - base-x: 3.0.10 - - bs58@5.0.0: - dependencies: - base-x: 4.0.0 - - buffer-from@1.1.2: {} - - buffer@6.0.3: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - - bufferutil@4.0.8: - dependencies: - node-gyp-build: 4.8.2 - optional: true - - call-bind@1.0.7: - dependencies: - es-define-property: 1.0.0 - es-errors: 1.3.0 - function-bind: 1.1.2 - get-intrinsic: 1.2.4 - set-function-length: 1.2.2 - - camelcase@6.3.0: {} - - chai@4.5.0: - dependencies: - assertion-error: 1.1.0 - check-error: 1.0.3 - deep-eql: 4.1.4 - get-func-name: 2.0.2 - loupe: 2.3.7 - pathval: 1.1.1 - type-detect: 4.1.0 - - chalk@4.1.2: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - - chalk@5.3.0: {} - - check-error@1.0.3: - dependencies: - get-func-name: 2.0.2 - - chokidar@3.5.3: - dependencies: - anymatch: 3.1.3 - braces: 3.0.3 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - - cliui@7.0.4: - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - - color-convert@2.0.1: - dependencies: - color-name: 1.1.4 - - color-name@1.1.4: {} - - commander@12.1.0: {} - - commander@2.20.3: {} - - concat-map@0.0.1: {} - - debug@4.3.3(supports-color@8.1.1): - dependencies: - ms: 2.1.2 - optionalDependencies: - supports-color: 8.1.1 - - debug@4.3.7: - dependencies: - ms: 2.1.3 - - decamelize@4.0.0: {} - - deep-eql@4.1.4: - dependencies: - type-detect: 4.1.0 - - define-data-property@1.1.4: - dependencies: - es-define-property: 1.0.0 - es-errors: 1.3.0 - gopd: 1.0.1 - - define-properties@1.2.1: - dependencies: - define-data-property: 1.1.4 - has-property-descriptors: 1.0.2 - object-keys: 1.1.1 - - delay@5.0.0: {} - - diff@3.5.0: {} - - diff@5.0.0: {} - - emoji-regex@8.0.0: {} - - es-define-property@1.0.0: - dependencies: - get-intrinsic: 1.2.4 - - es-errors@1.3.0: {} - - es6-promise@4.2.8: {} - - es6-promisify@5.0.0: - dependencies: - es6-promise: 4.2.8 - - escalade@3.2.0: {} - - escape-string-regexp@4.0.0: {} - - eventemitter3@5.0.1: {} - - eyes@0.1.8: {} - - fast-stable-stringify@1.0.0: {} - - fastestsmallesttextencoderdecoder@1.0.22: {} - - file-uri-to-path@1.0.0: {} - - fill-range@7.1.1: - dependencies: - to-regex-range: 5.0.1 - - find-up@5.0.0: - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - - flat@5.0.2: {} - - for-each@0.3.3: - dependencies: - is-callable: 1.2.7 - - fs.realpath@1.0.0: {} - - fs@0.0.1-security: {} - - fsevents@2.3.3: - optional: true - - function-bind@1.1.2: {} - - get-caller-file@2.0.5: {} - - get-func-name@2.0.2: {} - - get-intrinsic@1.2.4: - dependencies: - es-errors: 1.3.0 - function-bind: 1.1.2 - has-proto: 1.0.3 - has-symbols: 1.0.3 - hasown: 2.0.2 - - glob-parent@5.1.2: - dependencies: - is-glob: 4.0.3 - - glob@7.2.0: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - - gopd@1.0.1: - dependencies: - get-intrinsic: 1.2.4 - - growl@1.10.5: {} - - has-flag@4.0.0: {} - - has-property-descriptors@1.0.2: - dependencies: - es-define-property: 1.0.0 - - has-proto@1.0.3: {} - - has-symbols@1.0.3: {} - - has-tostringtag@1.0.2: - dependencies: - has-symbols: 1.0.3 - - hasown@2.0.2: - dependencies: - function-bind: 1.1.2 - - he@1.2.0: {} - - humanize-ms@1.2.1: - dependencies: - ms: 2.1.3 - - ieee754@1.2.1: {} - - inflight@1.0.6: - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - - inherits@2.0.4: {} - - is-arguments@1.1.1: - dependencies: - call-bind: 1.0.7 - has-tostringtag: 1.0.2 - - is-binary-path@2.1.0: - dependencies: - binary-extensions: 2.3.0 - - is-callable@1.2.7: {} - - is-extglob@2.1.1: {} - - is-fullwidth-code-point@3.0.0: {} - - is-generator-function@1.0.10: - dependencies: - has-tostringtag: 1.0.2 - - is-glob@4.0.3: - dependencies: - is-extglob: 2.1.1 - - is-nan@1.3.2: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - - is-number@7.0.0: {} - - is-plain-obj@2.1.0: {} - - is-typed-array@1.1.13: - dependencies: - which-typed-array: 1.1.15 - - is-unicode-supported@0.1.0: {} - - isexe@2.0.0: {} - - isomorphic-ws@4.0.1(ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10)): - dependencies: - ws: 7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) - - jayson@4.1.2(bufferutil@4.0.8)(utf-8-validate@5.0.10): - dependencies: - "@types/connect": 3.4.38 - "@types/node": 12.20.55 - "@types/ws": 7.4.7 - JSONStream: 1.3.5 - commander: 2.20.3 - delay: 5.0.0 - es6-promisify: 5.0.0 - eyes: 0.1.8 - isomorphic-ws: 4.0.1(ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10)) - json-stringify-safe: 5.0.1 - uuid: 8.3.2 - ws: 7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - js-yaml@4.1.0: - dependencies: - argparse: 2.0.1 - - json-stringify-safe@5.0.1: {} - - json5@1.0.2: - dependencies: - minimist: 1.2.8 - optional: true - - jsonparse@1.3.1: {} - - locate-path@6.0.0: - dependencies: - p-locate: 5.0.0 - - log-symbols@4.1.0: - dependencies: - chalk: 4.1.2 - is-unicode-supported: 0.1.0 - - loupe@2.3.7: - dependencies: - get-func-name: 2.0.2 - - make-error@1.3.6: {} - - minimatch@3.1.2: - dependencies: - brace-expansion: 1.1.11 - - minimatch@4.2.1: - dependencies: - brace-expansion: 1.1.11 - - minimist@1.2.8: {} - - mkdirp@0.5.6: - dependencies: - minimist: 1.2.8 - - mocha@9.2.2: - dependencies: - "@ungap/promise-all-settled": 1.1.2 - ansi-colors: 4.1.1 - browser-stdout: 1.3.1 - chokidar: 3.5.3 - debug: 4.3.3(supports-color@8.1.1) - diff: 5.0.0 - escape-string-regexp: 4.0.0 - find-up: 5.0.0 - glob: 7.2.0 - growl: 1.10.5 - he: 1.2.0 - js-yaml: 4.1.0 - log-symbols: 4.1.0 - minimatch: 4.2.1 - ms: 2.1.3 - nanoid: 3.3.1 - serialize-javascript: 6.0.0 - strip-json-comments: 3.1.1 - supports-color: 8.1.1 - which: 2.0.2 - workerpool: 6.2.0 - yargs: 16.2.0 - yargs-parser: 20.2.4 - yargs-unparser: 2.0.0 - - ms@2.1.2: {} - - ms@2.1.3: {} - - nanoid@3.3.1: {} - - node-fetch@2.7.0: - dependencies: - whatwg-url: 5.0.0 - - node-gyp-build@4.8.2: - optional: true - - normalize-path@3.0.0: {} - - object-is@1.1.6: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - - object-keys@1.1.1: {} - - object.assign@4.1.5: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - has-symbols: 1.0.3 - object-keys: 1.1.1 - - once@1.4.0: - dependencies: - wrappy: 1.0.2 - - p-limit@3.1.0: - dependencies: - yocto-queue: 0.1.0 - - p-locate@5.0.0: - dependencies: - p-limit: 3.1.0 - - path-exists@4.0.0: {} - - path-is-absolute@1.0.1: {} - - pathval@1.1.1: {} - - picomatch@2.3.1: {} - - possible-typed-array-names@1.0.0: {} - - randombytes@2.1.0: - dependencies: - safe-buffer: 5.2.1 - - readdirp@3.6.0: - dependencies: - picomatch: 2.3.1 - - regenerator-runtime@0.14.1: {} - - require-directory@2.1.1: {} - - rpc-websockets@9.0.4: - dependencies: - "@swc/helpers": 0.5.13 - "@types/uuid": 8.3.4 - "@types/ws": 8.5.12 - buffer: 6.0.3 - eventemitter3: 5.0.1 - uuid: 8.3.2 - ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - optionalDependencies: - bufferutil: 4.0.8 - utf-8-validate: 5.0.10 - - safe-buffer@5.2.1: {} - - serialize-javascript@6.0.0: - dependencies: - randombytes: 2.1.0 - - set-function-length@1.2.2: - dependencies: - define-data-property: 1.1.4 - es-errors: 1.3.0 - function-bind: 1.1.2 - get-intrinsic: 1.2.4 - gopd: 1.0.1 - has-property-descriptors: 1.0.2 - - solana-bankrun-darwin-arm64@0.4.0: - optional: true - - solana-bankrun-darwin-universal@0.4.0: - optional: true - - solana-bankrun-darwin-x64@0.4.0: - optional: true - - solana-bankrun-linux-x64-gnu@0.4.0: - optional: true - - solana-bankrun-linux-x64-musl@0.4.0: - optional: true - - solana-bankrun@0.4.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): - dependencies: - "@solana/web3.js": 1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) - bs58: 4.0.1 - optionalDependencies: - solana-bankrun-darwin-arm64: 0.4.0 - solana-bankrun-darwin-universal: 0.4.0 - solana-bankrun-darwin-x64: 0.4.0 - solana-bankrun-linux-x64-gnu: 0.4.0 - solana-bankrun-linux-x64-musl: 0.4.0 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - - source-map-support@0.5.21: - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - - source-map@0.6.1: {} - - string-width@4.2.3: - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - - strip-ansi@6.0.1: - dependencies: - ansi-regex: 5.0.1 - - strip-bom@3.0.0: - optional: true - - strip-json-comments@3.1.1: {} - - superstruct@2.0.2: {} - - supports-color@7.2.0: - dependencies: - has-flag: 4.0.0 - - supports-color@8.1.1: - dependencies: - has-flag: 4.0.0 - - text-encoding-utf-8@1.0.2: {} - - through@2.3.8: {} - - to-regex-range@5.0.1: - dependencies: - is-number: 7.0.0 - - tr46@0.0.3: {} - - ts-mocha@10.0.0(mocha@9.2.2): - dependencies: - mocha: 9.2.2 - ts-node: 7.0.1 - optionalDependencies: - tsconfig-paths: 3.15.0 - - ts-node@7.0.1: - dependencies: - arrify: 1.0.1 - buffer-from: 1.1.2 - diff: 3.5.0 - make-error: 1.3.6 - minimist: 1.2.8 - mkdirp: 0.5.6 - source-map-support: 0.5.21 - yn: 2.0.0 - - tsconfig-paths@3.15.0: - dependencies: - "@types/json5": 0.0.29 - json5: 1.0.2 - minimist: 1.2.8 - strip-bom: 3.0.0 - optional: true - - tslib@2.8.0: {} - - type-detect@4.1.0: {} - - typescript@4.9.5: {} - - undici-types@6.19.8: {} - - utf-8-validate@5.0.10: - dependencies: - node-gyp-build: 4.8.2 - optional: true - - util@0.12.5: - dependencies: - inherits: 2.0.4 - is-arguments: 1.1.1 - is-generator-function: 1.0.10 - is-typed-array: 1.1.13 - which-typed-array: 1.1.15 - - uuid@8.3.2: {} - - webidl-conversions@3.0.1: {} - - whatwg-url@5.0.0: - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - - which-typed-array@1.1.15: - dependencies: - available-typed-arrays: 1.0.7 - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-tostringtag: 1.0.2 - - which@2.0.2: - dependencies: - isexe: 2.0.0 - - workerpool@6.2.0: {} - - wrap-ansi@7.0.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - wrappy@1.0.2: {} - - ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10): - optionalDependencies: - bufferutil: 4.0.8 - utf-8-validate: 5.0.10 - - ws@8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): - optionalDependencies: - bufferutil: 4.0.8 - utf-8-validate: 5.0.10 - - y18n@5.0.8: {} - - yargs-parser@20.2.4: {} - - yargs-unparser@2.0.0: - dependencies: - camelcase: 6.3.0 - decamelize: 4.0.0 - flat: 5.0.2 - is-plain-obj: 2.1.0 - - yargs@16.2.0: - dependencies: - cliui: 7.0.4 - escalade: 3.2.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 20.2.4 - - yn@2.0.0: {} - - yocto-queue@0.1.0: {} - - zx@8.1.9: - optionalDependencies: - "@types/fs-extra": 11.0.4 - "@types/node": 22.8.4 diff --git a/tokens/transfer-tokens/steel/prepare.mjs b/tokens/transfer-tokens/steel/prepare.mjs deleted file mode 100644 index 7c5ec464b..000000000 --- a/tokens/transfer-tokens/steel/prepare.mjs +++ /dev/null @@ -1,34 +0,0 @@ -#!/usr/bin/env zx - -import { mkdir, rm } from 'node:fs/promises'; -import { join } from 'node:path'; -import { $ } from 'zx'; - -const programs = [ - { - id: 'metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s', - name: 'token_metadata.so', - }, -]; - -const outputDir = 'tests/fixtures'; -const overwrite = true; - -try { - for (const program of programs) { - const { id, name } = program; - const outputFile = join(outputDir, name); - await $`solana config set -um`; - - try { - await mkdir(outputDir, { recursive: true }); - if (overwrite) await rm(outputFile, { force: true }); - await $`solana program dump ${id} ${outputFile}`; - console.log(`Program ${id} dumped to ${outputFile}`); - } catch (error) { - console.error(`Error dumping ${id}: ${error.message}`); - } - } -} catch (error) { - console.error(`Error preparing programs: ${error.message}`); -} diff --git a/tokens/transfer-tokens/steel/program/Cargo.toml b/tokens/transfer-tokens/steel/program/Cargo.toml deleted file mode 100644 index 7345737fb..000000000 --- a/tokens/transfer-tokens/steel/program/Cargo.toml +++ /dev/null @@ -1,23 +0,0 @@ -[package] -name = "transfer-tokens-program" -version = "0.1.0" -edition = "2021" - -[lib] -crate-type = ["cdylib", "lib"] - -[dependencies] -transfer-tokens-api.workspace = true -solana-program.workspace = true -steel.workspace = true -spl-token.workspace = true -mpl-token-metadata.workspace = true -spl-associated-token-account.workspace = true - - -[dev-dependencies] -base64 = "0.21" -rand = "0.8.5" -solana-program-test = "1.18" -solana-sdk = "1.18" -tokio = { version = "1.35", features = ["full"] } diff --git a/tokens/transfer-tokens/steel/program/src/create.rs b/tokens/transfer-tokens/steel/program/src/create.rs deleted file mode 100644 index ca2004a6f..000000000 --- a/tokens/transfer-tokens/steel/program/src/create.rs +++ /dev/null @@ -1,101 +0,0 @@ -use solana_program::msg; -use solana_program::program_pack::Pack; -use spl_token::state::Mint; -use steel::*; -use transfer_tokens_api::prelude::*; - -pub fn process_create(accounts: &[AccountInfo<'_>], data: &[u8]) -> ProgramResult { - // parse args. - let args = Create::try_from_bytes(data)?; - let token_name = String::from_utf8(args.token_name.to_vec()).expect("Invalid UTF-8"); - let token_symbol = String::from_utf8(args.token_symbol.to_vec()).expect("Invalid UTF-8"); - let token_uri = String::from_utf8(args.token_uri.to_vec()).expect("Invalid UTF-8"); - let token_decimals = args.token_decimals; - - // Load accounts. - let [payer_info, mint_info, metadata_info, system_program, token_program, metadata_program, rent_sysvar] = - accounts - else { - return Err(ProgramError::NotEnoughAccountKeys); - }; - - // validation - payer_info.is_signer()?; - mint_info.is_empty()?.is_writable()?; - system_program.is_program(&system_program::ID)?; - token_program.is_program(&spl_token::ID)?; - rent_sysvar.is_sysvar(&sysvar::rent::ID)?; - - // First create the account for the Mint - // - msg!("Creating mint account..."); - msg!("Mint: {}", mint_info.key); - solana_program::program::invoke( - &solana_program::system_instruction::create_account( - payer_info.key, - mint_info.key, - (solana_program::rent::Rent::get()?).minimum_balance(Mint::LEN), - Mint::LEN as u64, - token_program.key, - ), - &[ - mint_info.clone(), - payer_info.clone(), - system_program.clone(), - token_program.clone(), - ], - )?; - - // Now initialize that account as a Mint (standard Mint) - // - msg!("Initializing mint account..."); - msg!("Mint: {}", mint_info.key); - solana_program::program::invoke( - &spl_token::instruction::initialize_mint( - token_program.key, - mint_info.key, - payer_info.key, - Some(payer_info.key), - token_decimals, // 9 Decimals for the default SPL Token standard - )?, - &[ - mint_info.clone(), - payer_info.clone(), - token_program.clone(), - rent_sysvar.clone(), - ], - )?; - - // Now create the account for that Mint's metadata - // - msg!("Creating metadata account..."); - msg!("Metadata account address: {}", metadata_info.key); - mpl_token_metadata::instructions::CreateMetadataAccountV3Cpi { - __program: metadata_program, - metadata: metadata_info, - mint: mint_info, - mint_authority: payer_info, - payer: payer_info, - update_authority: (payer_info, true), - system_program, - rent: Some(rent_sysvar), - __args: mpl_token_metadata::instructions::CreateMetadataAccountV3InstructionArgs { - data: mpl_token_metadata::types::DataV2 { - name: token_name, - symbol: token_symbol, - uri: token_uri, - seller_fee_basis_points: 0, - creators: None, - collection: None, - uses: None, - }, - is_mutable: true, - collection_details: None, - }, - } - .invoke()?; - - msg!("Token mint created successfully."); - - Ok(()) -} diff --git a/tokens/transfer-tokens/steel/program/src/lib.rs b/tokens/transfer-tokens/steel/program/src/lib.rs deleted file mode 100644 index 0f836be7d..000000000 --- a/tokens/transfer-tokens/steel/program/src/lib.rs +++ /dev/null @@ -1,28 +0,0 @@ -mod create; -mod mint; -mod transfer; - -use create::*; -use mint::*; -use transfer::*; - -use steel::*; -use transfer_tokens_api::prelude::*; - -pub fn process_instruction( - program_id: &Pubkey, - accounts: &[AccountInfo], - data: &[u8], -) -> ProgramResult { - let (ix, data) = parse_instruction(&transfer_tokens_api::ID, program_id, data)?; - - match ix { - SteelInstruction::Mint => process_mint(accounts, data)?, - SteelInstruction::Create => process_create(accounts, data)?, - SteelInstruction::Transfer => process_transfer(accounts, data)?, - } - - Ok(()) -} - -entrypoint!(process_instruction); diff --git a/tokens/transfer-tokens/steel/program/src/mint.rs b/tokens/transfer-tokens/steel/program/src/mint.rs deleted file mode 100644 index 1ae5d8655..000000000 --- a/tokens/transfer-tokens/steel/program/src/mint.rs +++ /dev/null @@ -1,61 +0,0 @@ -use solana_program::msg; -use steel::*; -use transfer_tokens_api::prelude::*; - -pub fn process_mint(accounts: &[AccountInfo<'_>], data: &[u8]) -> ProgramResult { - // parse args. - let args = Mint::try_from_bytes(data)?; - let quantity = u64::from_le_bytes(args.quantity); - - // Load accounts. - let [mint_authority_info, recipient_info, mint_info, associated_token_account_info, token_program, associated_token_program, system_program] = - accounts - else { - return Err(ProgramError::NotEnoughAccountKeys); - }; - mint_authority_info.is_signer()?; - mint_info.as_mint()?; - token_program.is_program(&spl_token::ID)?; - - if associated_token_account_info.lamports() == 0 { - msg!("Creating associated token account..."); - create_associated_token_account( - mint_authority_info, - recipient_info, - associated_token_account_info, - mint_info, - system_program, - token_program, - associated_token_program, - )?; - } else { - msg!("Associated token account exists."); - } - msg!( - "Associated Token Address: {}", - associated_token_account_info.key - ); - - msg!("Minting {} tokens to associated token account...", quantity); - - solana_program::program::invoke( - &spl_token::instruction::mint_to( - &spl_token::id(), - mint_info.key, - associated_token_account_info.key, - mint_authority_info.key, - &[mint_authority_info.key], - quantity, - )?, - &[ - token_program.clone(), - mint_info.clone(), - associated_token_account_info.clone(), - mint_authority_info.clone(), - ], - )?; - - msg!("Token minted successfully."); - - Ok(()) -} diff --git a/tokens/transfer-tokens/steel/program/src/transfer.rs b/tokens/transfer-tokens/steel/program/src/transfer.rs deleted file mode 100644 index c71fb3333..000000000 --- a/tokens/transfer-tokens/steel/program/src/transfer.rs +++ /dev/null @@ -1,65 +0,0 @@ -use solana_program::msg; -use steel::{transfer as transfer_spl_tokens, *}; -use transfer_tokens_api::prelude::*; - -pub fn process_transfer(accounts: &[AccountInfo<'_>], data: &[u8]) -> ProgramResult { - // parse args. - let args = Transfer::try_from_bytes(data)?; - let quantity = u64::from_le_bytes(args.quantity); - - // Load accounts. - let [sender_info, recipient_info, mint_info, sender_token_account_info, recipient_token_account_info, token_program, associated_token_program, system_program] = - accounts - else { - return Err(ProgramError::NotEnoughAccountKeys); - }; - - // validation - sender_info.is_signer()?; - mint_info.as_mint()?; - sender_token_account_info - .is_writable()? - .as_associated_token_account(sender_info.key, mint_info.key)?; - token_program.is_program(&spl_token::ID)?; - associated_token_program.is_program(&spl_associated_token_account::ID)?; - system_program.is_program(&system_program::ID)?; - - if recipient_token_account_info.lamports() == 0 { - msg!("Creating associated token account for recipient..."); - create_associated_token_account( - sender_info, - recipient_info, - recipient_token_account_info, - mint_info, - system_program, - token_program, - associated_token_program, - )?; - } else { - msg!("Associated token account exists."); - } - msg!( - "Recipient Associated Token Address: {}", - recipient_token_account_info.key - ); - - msg!("Transferring {} tokens...", quantity); - msg!("Mint: {}", mint_info.key); - msg!("Owner Token Address: {}", sender_token_account_info.key); - msg!( - "Recipient Token Address: {}", - recipient_token_account_info.key - ); - - transfer_spl_tokens( - sender_info, - sender_token_account_info, - recipient_token_account_info, - token_program, - quantity, - )?; - - msg!("Tokens transferred successfully."); - - Ok(()) -} diff --git a/tokens/transfer-tokens/steel/program/tests/test.rs b/tokens/transfer-tokens/steel/program/tests/test.rs deleted file mode 100644 index 85045ea36..000000000 --- a/tokens/transfer-tokens/steel/program/tests/test.rs +++ /dev/null @@ -1,89 +0,0 @@ -use solana_program::hash::Hash; -use solana_program_test::{processor, BanksClient, ProgramTest}; -use solana_sdk::{signature::Keypair, signer::Signer, transaction::Transaction}; -use transfer_tokens_api::prelude::*; - -async fn setup() -> (BanksClient, Keypair, Hash) { - let mut program_test = ProgramTest::new( - "transfer_tokens_program", - transfer_tokens_api::ID, - processor!(transfer_tokens_program::process_instruction), - ); - - program_test.add_program("token_metadata", mpl_token_metadata::ID, None); - - program_test.prefer_bpf(true); - program_test.start().await -} - -#[tokio::test] -async fn run_test() { - // Setup test - let (mut banks, payer, blockhash) = setup().await; - let mint_keypair = Keypair::new(); - - let name = str_to_bytes::<32>("Solana Gold"); - let symbol = str_to_bytes::<8>("GOLDSOL"); - let uri = str_to_bytes::<64>("https://raw.githubusercontent.com/solana-developers/program-examples/new-examples/tokens/tokens/.assets/spl-token.json"); - let decimals = 9; - - // Submit create transaction. - let ix = create( - payer.pubkey(), - mint_keypair.pubkey(), - name, - symbol, - uri, - decimals, - ); - let tx = Transaction::new_signed_with_payer( - &[ix], - Some(&payer.pubkey()), - &[&payer, &mint_keypair], - blockhash, - ); - let res = banks.process_transaction(tx).await; - assert!(res.is_ok()); - - let recipient = Keypair::new(); - - let to_ata = spl_associated_token_account::get_associated_token_address( - &payer.pubkey(), - &mint_keypair.pubkey(), - ); - - // Submit mint transaction. - let ix = mint( - payer.pubkey(), - payer.pubkey(), - mint_keypair.pubkey(), - to_ata, - 100, - ); - let tx = Transaction::new_signed_with_payer(&[ix], Some(&payer.pubkey()), &[&payer], blockhash); - let res = banks.process_transaction(tx).await; - assert!(res.is_ok()); - - let recipient_ata = spl_associated_token_account::get_associated_token_address( - &recipient.pubkey(), - &mint_keypair.pubkey(), - ); - - // Submit transfer transaction. - let ix = transfer( - payer.pubkey(), - recipient.pubkey(), - mint_keypair.pubkey(), - to_ata, - recipient_ata, - 100, - ); - let tx = Transaction::new_signed_with_payer( - &[ix], - Some(&payer.pubkey()), - &[&payer, &recipient], - blockhash, - ); - let res = banks.process_transaction(tx).await; - assert!(res.is_ok()); -} diff --git a/tokens/transfer-tokens/steel/tests/instructions.ts b/tokens/transfer-tokens/steel/tests/instructions.ts deleted file mode 100644 index a668089bd..000000000 --- a/tokens/transfer-tokens/steel/tests/instructions.ts +++ /dev/null @@ -1,113 +0,0 @@ -import { BN } from 'bn.js'; - -class Assignable { - constructor(properties) { - for (const [key, value] of Object.entries(properties)) { - this[key] = value; - } - } -} - -// Helper function to pad strings to fixed length buffers -function strToBytes(str: string, length: number): Buffer { - const buffer = Buffer.alloc(length); - buffer.write(str); - return buffer; -} - -export enum TransferTokensInstruction { - Create = 0, - Mint = 1, - Transfer = 2, -} - -export class CreateTokenArgs { - instruction: number; - name: Buffer; - symbol: Buffer; - uri: Buffer; - decimals: number; - - constructor(name: string, symbol: string, uri: string, decimals: number) { - this.instruction = TransferTokensInstruction.Create; - this.name = strToBytes(name, 32); - this.symbol = strToBytes(symbol, 8); - this.uri = strToBytes(uri, 64); - this.decimals = decimals; - } - - toBuffer(): Buffer { - // Added 1 byte for decimals to the total buffer size - const buffer = Buffer.alloc(1 + 32 + 8 + 64 + 1); - let offset = 0; - - // Write instruction - buffer.writeUInt8(this.instruction, offset); - offset += 1; - - // Write name - this.name.copy(buffer, offset); - offset += 32; - - // Write symbol - this.symbol.copy(buffer, offset); - offset += 8; - - // Write uri - this.uri.copy(buffer, offset); - offset += 64; - - // Write decimals - buffer.writeUInt8(this.decimals, offset); - - return buffer; - } -} - -export class MintToArgs { - instruction: number; - quantity: BN; - - constructor(quantity: number) { - this.instruction = TransferTokensInstruction.Mint; - this.quantity = new BN(quantity); - } - - toBuffer(): Buffer { - const buffer = Buffer.alloc(9); // 1 byte for instruction + 8 bytes for u64 quantity - let offset = 0; - - // Write instruction - buffer.writeUInt8(this.instruction, offset); - offset += 1; - - // Write quantity as u64 LE (8 bytes) - this.quantity.toBuffer('le', 8).copy(buffer, offset); - - return buffer; - } -} - -export class TransferTokensArgs { - instruction: number; - quantity: BN; - - constructor(quantity: number) { - this.instruction = TransferTokensInstruction.Transfer; - this.quantity = new BN(quantity); - } - - toBuffer(): Buffer { - const buffer = Buffer.alloc(9); // 1 byte for instruction + 8 bytes for u64 quantity - let offset = 0; - - // Write instruction - buffer.writeUInt8(this.instruction, offset); - offset += 1; - - // Write quantity as u64 LE (8 bytes) - this.quantity.toBuffer('le', 8).copy(buffer, offset); - - return buffer; - } -} diff --git a/tokens/transfer-tokens/steel/tests/tests.ts b/tokens/transfer-tokens/steel/tests/tests.ts deleted file mode 100644 index 6900e6691..000000000 --- a/tokens/transfer-tokens/steel/tests/tests.ts +++ /dev/null @@ -1,211 +0,0 @@ -import { Buffer } from 'node:buffer'; -import { describe, test } from 'node:test'; -import { PROGRAM_ID as TOKEN_METADATA_PROGRAM_ID } from '@metaplex-foundation/mpl-token-metadata'; -import { ASSOCIATED_TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID, getAssociatedTokenAddressSync } from '@solana/spl-token'; -import { Keypair, PublicKey, SYSVAR_RENT_PUBKEY, SystemProgram, Transaction, TransactionInstruction } from '@solana/web3.js'; -import { start } from 'solana-bankrun'; -import { CreateTokenArgs, MintToArgs, TransferTokensArgs } from './instructions'; - -describe('Transferring Tokens', async () => { - const PROGRAM_ID = new PublicKey('z7msBPQHDJjTvdQRoEcKyENgXDhSRYeHieN1ZMTqo35'); - const context = await start( - [ - { name: 'transfer_tokens_program', programId: PROGRAM_ID }, - { name: 'token_metadata', programId: TOKEN_METADATA_PROGRAM_ID }, - ], - [], - ); - const client = context.banksClient; - const payer = context.payer; - - const tokenMintKeypair: Keypair = Keypair.generate(); - const nftMintKeypair: Keypair = Keypair.generate(); - - const recipientWallet = Keypair.generate(); - - test('Create an SPL Token!', async () => { - const metadataPDA = PublicKey.findProgramAddressSync( - [Buffer.from('metadata'), TOKEN_METADATA_PROGRAM_ID.toBuffer(), tokenMintKeypair.publicKey.toBuffer()], - TOKEN_METADATA_PROGRAM_ID, - )[0]; - - // SPL Token default = 9 decimals - // - const createArgs = new CreateTokenArgs( - 'Solana Gold', - 'GOLDSOL', - 'https://raw.githubusercontent.com/solana-developers/program-examples/new-examples/tokens/tokens/.assets/spl-token.json', - 9, - ); - - const createTokenIx = new TransactionInstruction({ - keys: [ - { pubkey: payer.publicKey, isSigner: true, isWritable: true }, - { - pubkey: tokenMintKeypair.publicKey, - isSigner: true, - isWritable: true, - }, - { pubkey: metadataPDA, isSigner: false, isWritable: true }, - { - pubkey: SystemProgram.programId, - isSigner: false, - isWritable: false, - }, - { pubkey: TOKEN_PROGRAM_ID, isSigner: false, isWritable: false }, - { - pubkey: TOKEN_METADATA_PROGRAM_ID, - isSigner: false, - isWritable: false, - }, - { pubkey: SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false }, - ], - programId: PROGRAM_ID, - data: createArgs.toBuffer(), - }); - - const tx = new Transaction(); - const [blockhash, _] = await client.getLatestBlockhash(); - tx.recentBlockhash = blockhash; - tx.add(createTokenIx).sign(payer, tokenMintKeypair); - - await client.processTransaction(tx); - - console.log('Success!'); - console.log(` Mint Address: ${tokenMintKeypair.publicKey}`); - }); - - test('Create an NFT!', async () => { - const metadataPDA = PublicKey.findProgramAddressSync( - [Buffer.from('metadata'), TOKEN_METADATA_PROGRAM_ID.toBuffer(), nftMintKeypair.publicKey.toBuffer()], - TOKEN_METADATA_PROGRAM_ID, - )[0]; - - // NFT default = 0 decimals - // - const createArgs = new CreateTokenArgs( - 'Homer NFT', - 'HOMR', - 'https://raw.githubusercontent.com/solana-developers/program-examples/new-examples/tokens/tokens/.assets/nft.json', - 0, - ); - - const createTokenIx = new TransactionInstruction({ - keys: [ - { pubkey: payer.publicKey, isSigner: true, isWritable: true }, - { pubkey: nftMintKeypair.publicKey, isSigner: true, isWritable: true }, - { pubkey: metadataPDA, isSigner: false, isWritable: true }, - { - pubkey: SystemProgram.programId, - isSigner: false, - isWritable: false, - }, - { pubkey: TOKEN_PROGRAM_ID, isSigner: false, isWritable: false }, - { - pubkey: TOKEN_METADATA_PROGRAM_ID, - isSigner: false, - isWritable: false, - }, - { pubkey: SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false }, - ], - programId: PROGRAM_ID, - data: createArgs.toBuffer(), - }); - - const tx = new Transaction(); - const [blockhash, _] = await client.getLatestBlockhash(); - tx.recentBlockhash = blockhash; - tx.add(createTokenIx).sign(payer, nftMintKeypair); - - await client.processTransaction(tx); - - console.log('Success!'); - console.log(` Mint Address: ${nftMintKeypair.publicKey}`); - }); - - test('Mint some tokens to your wallet!', async () => { - const recipientATA = getAssociatedTokenAddressSync(tokenMintKeypair.publicKey, payer.publicKey); - - const mintArgs = new MintToArgs(100); - - const mintToIx = new TransactionInstruction({ - keys: [ - { pubkey: payer.publicKey, isSigner: true, isWritable: true }, // mint_authority - { pubkey: payer.publicKey, isSigner: false, isWritable: false }, // recipient - { - pubkey: tokenMintKeypair.publicKey, - isSigner: false, - isWritable: true, - }, // mint_pda must be writable - { pubkey: recipientATA, isSigner: false, isWritable: true }, // associated_token_account must be writable - { pubkey: TOKEN_PROGRAM_ID, isSigner: false, isWritable: false }, // spl_token::ID - { - pubkey: ASSOCIATED_TOKEN_PROGRAM_ID, - isSigner: false, - isWritable: false, - }, // spl_associated_token_account::ID - { - pubkey: SystemProgram.programId, - isSigner: false, - isWritable: false, - }, // system_program::ID - ], - programId: PROGRAM_ID, - data: mintArgs.toBuffer(), - }); - - const tx = new Transaction(); - const [blockhash, _] = await client.getLatestBlockhash(); - tx.recentBlockhash = blockhash; - tx.add(mintToIx).sign(payer); - - await client.processTransaction(tx); - - console.log('Success!'); - console.log(` ATA Address: ${recipientATA}`); - }); - - test('Transfer tokens to another wallet!', async () => { - const fromAssociatedTokenAddress = getAssociatedTokenAddressSync(tokenMintKeypair.publicKey, payer.publicKey); - console.log(`Owner Token Address: ${fromAssociatedTokenAddress}`); - const toAssociatedTokenAddress = getAssociatedTokenAddressSync(tokenMintKeypair.publicKey, recipientWallet.publicKey); - console.log(`Recipient Token Address: ${toAssociatedTokenAddress}`); - - const transferArgs = new TransferTokensArgs(15); - - const transferTokensIx = new TransactionInstruction({ - keys: [ - { pubkey: payer.publicKey, isSigner: true, isWritable: true }, // Owner - { pubkey: recipientWallet.publicKey, isSigner: true, isWritable: true }, // Recipient - { - pubkey: tokenMintKeypair.publicKey, - isSigner: false, - isWritable: true, - }, // Mint account - { - pubkey: fromAssociatedTokenAddress, - isSigner: false, - isWritable: true, - }, // Owner Token account - { pubkey: toAssociatedTokenAddress, isSigner: false, isWritable: true }, // Recipient Token account - // { pubkey: payer.publicKey, isSigner: true, isWritable: true }, // Payer - { pubkey: TOKEN_PROGRAM_ID, isSigner: false, isWritable: false }, // Token program - { - pubkey: ASSOCIATED_TOKEN_PROGRAM_ID, - isSigner: false, - isWritable: false, - }, // Associated token program - { pubkey: SystemProgram.programId, isSigner: false, isWritable: false }, // System program - ], - programId: PROGRAM_ID, - data: transferArgs.toBuffer(), - }); - - const tx = new Transaction(); - const [blockhash, _] = await client.getLatestBlockhash(); - tx.recentBlockhash = blockhash; - tx.add(transferTokensIx).sign(payer, recipientWallet); - - await client.processTransaction(tx); - }); -}); diff --git a/tokens/transfer-tokens/steel/tsconfig.json b/tokens/transfer-tokens/steel/tsconfig.json deleted file mode 100644 index cd5d2e3d0..000000000 --- a/tokens/transfer-tokens/steel/tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "compilerOptions": { - "types": ["mocha", "chai"], - "typeRoots": ["./node_modules/@types"], - "lib": ["es2015"], - "module": "commonjs", - "target": "es6", - "esModuleInterop": true - } -}