From 18d91205d4afad70815445aa5594dfd820dcfed0 Mon Sep 17 00:00:00 2001 From: Emanuele Cesena Date: Sun, 31 Mar 2024 15:12:06 -0700 Subject: [PATCH] infra: deploy to pages --- .github/workflows/dapp.yml | 79 +++ .gitignore | 9 +- anchor/target/idl/glam.json | 673 ++++++++++++++++++ anchor/target/types/glam.ts | 1341 +++++++++++++++++++++++++++++++++++ 4 files changed, 2101 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/dapp.yml create mode 100644 anchor/target/idl/glam.json create mode 100644 anchor/target/types/glam.ts diff --git a/.github/workflows/dapp.yml b/.github/workflows/dapp.yml new file mode 100644 index 00000000..1e9238af --- /dev/null +++ b/.github/workflows/dapp.yml @@ -0,0 +1,79 @@ +name: Deploy Dapp to GitHub Pages + +on: + # Runs on pushes targeting the default branch + push: + branches: ["main"] + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages +permissions: + contents: read + pages: write + id-token: write + +# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. +# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. +concurrency: + group: "pages" + cancel-in-progress: false + +jobs: + # Build job + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Node + uses: actions/setup-node@v4 + with: + node-version: 20 + + - name: Setup Pages + uses: actions/configure-pages@v5 + + - uses: pnpm/action-setup@v3 + name: Install pnpm + with: + version: 8 + run_install: false + + - name: Get pnpm store directory + shell: bash + run: | + echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV + + - uses: actions/cache@v4 + name: Setup pnpm cache + with: + path: ${{ env.STORE_PATH }} + key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + restore-keys: | + ${{ runner.os }}-pnpm-store- + + - name: Install dependencies + run: pnpm install + + - name: Build + run: pnpm run build + + - name: Upload artifact + uses: actions/upload-pages-artifact@v3 + with: + path: ./dist/web + + # Deployment job + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + needs: build + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 diff --git a/.gitignore b/.gitignore index 211d772c..de1a1b69 100644 --- a/.gitignore +++ b/.gitignore @@ -36,6 +36,13 @@ testem.log Thumbs.db .nx/cache .anchor -anchor/target +!anchor/target/deploy/.gitignore +anchor/target/deploy +anchor/target/debug +anchor/target/release +anchor/target/sbf-solana-solana +anchor/target/.rustc_info.json +!anchor/target/idl/*.json +!anchor/target/types/*.ts test-ledger .yarn diff --git a/anchor/target/idl/glam.json b/anchor/target/idl/glam.json new file mode 100644 index 00000000..e56572ad --- /dev/null +++ b/anchor/target/idl/glam.json @@ -0,0 +1,673 @@ +{ + "version": "0.1.0", + "name": "glam", + "constants": [ + { + "name": "SEED", + "type": "string", + "value": "\"anchor\"" + } + ], + "instructions": [ + { + "name": "initialize", + "accounts": [ + { + "name": "fund", + "isMut": true, + "isSigner": false + }, + { + "name": "treasury", + "isMut": true, + "isSigner": false + }, + { + "name": "share", + "isMut": true, + "isSigner": false + }, + { + "name": "manager", + "isMut": true, + "isSigner": true + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "rent", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "name", + "type": "string" + }, + { + "name": "symbol", + "type": "string" + }, + { + "name": "assetWeights", + "type": { + "vec": "u32" + } + }, + { + "name": "activate", + "type": "bool" + } + ] + }, + { + "name": "update", + "accounts": [ + { + "name": "fund", + "isMut": true, + "isSigner": false + }, + { + "name": "manager", + "isMut": true, + "isSigner": true + } + ], + "args": [ + { + "name": "name", + "type": { + "option": "string" + } + }, + { + "name": "symbol", + "type": { + "option": "string" + } + }, + { + "name": "assetWeights", + "type": { + "option": { + "vec": "u32" + } + } + }, + { + "name": "activate", + "type": { + "option": "bool" + } + } + ] + }, + { + "name": "close", + "accounts": [ + { + "name": "fund", + "isMut": true, + "isSigner": false + }, + { + "name": "manager", + "isMut": true, + "isSigner": true + } + ], + "args": [] + }, + { + "name": "subscribe", + "accounts": [ + { + "name": "fund", + "isMut": false, + "isSigner": false + }, + { + "name": "shareClass", + "isMut": true, + "isSigner": false + }, + { + "name": "signerShareAta", + "isMut": true, + "isSigner": false + }, + { + "name": "asset", + "isMut": true, + "isSigner": false + }, + { + "name": "treasuryAta", + "isMut": true, + "isSigner": false + }, + { + "name": "signerAssetAta", + "isMut": true, + "isSigner": false + }, + { + "name": "signer", + "isMut": true, + "isSigner": true + }, + { + "name": "tokenProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "token2022Program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "amount", + "type": "u64" + }, + { + "name": "skipState", + "type": "bool" + } + ] + }, + { + "name": "redeem", + "accounts": [ + { + "name": "fund", + "isMut": false, + "isSigner": false + }, + { + "name": "shareClass", + "isMut": true, + "isSigner": false + }, + { + "name": "signerShareAta", + "isMut": true, + "isSigner": false + }, + { + "name": "signer", + "isMut": true, + "isSigner": true + }, + { + "name": "treasury", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "token2022Program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "amount", + "type": "u64" + }, + { + "name": "inKind", + "type": "bool" + }, + { + "name": "skipState", + "type": "bool" + } + ] + }, + { + "name": "driftInitialize", + "accounts": [ + { + "name": "fund", + "isMut": false, + "isSigner": false + }, + { + "name": "treasury", + "isMut": false, + "isSigner": false + }, + { + "name": "userStats", + "isMut": true, + "isSigner": false + }, + { + "name": "user", + "isMut": true, + "isSigner": false + }, + { + "name": "state", + "isMut": true, + "isSigner": false + }, + { + "name": "manager", + "isMut": true, + "isSigner": true + }, + { + "name": "driftProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "rent", + "isMut": false, + "isSigner": false + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "trader", + "type": { + "option": "publicKey" + } + } + ] + }, + { + "name": "driftUpdateDelegatedTrader", + "accounts": [ + { + "name": "fund", + "isMut": false, + "isSigner": false + }, + { + "name": "treasury", + "isMut": false, + "isSigner": false + }, + { + "name": "user", + "isMut": true, + "isSigner": false + }, + { + "name": "manager", + "isMut": true, + "isSigner": true + }, + { + "name": "driftProgram", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "trader", + "type": { + "option": "publicKey" + } + } + ] + }, + { + "name": "driftDeposit", + "accounts": [ + { + "name": "fund", + "isMut": false, + "isSigner": false + }, + { + "name": "treasury", + "isMut": false, + "isSigner": false + }, + { + "name": "userStats", + "isMut": true, + "isSigner": false + }, + { + "name": "user", + "isMut": true, + "isSigner": false + }, + { + "name": "state", + "isMut": true, + "isSigner": false + }, + { + "name": "treasuryAta", + "isMut": true, + "isSigner": false + }, + { + "name": "driftAta", + "isMut": true, + "isSigner": false + }, + { + "name": "manager", + "isMut": true, + "isSigner": true + }, + { + "name": "driftProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenProgram", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "amount", + "type": "u64" + } + ] + }, + { + "name": "driftWithdraw", + "accounts": [ + { + "name": "fund", + "isMut": false, + "isSigner": false + }, + { + "name": "treasury", + "isMut": false, + "isSigner": false + }, + { + "name": "userStats", + "isMut": true, + "isSigner": false + }, + { + "name": "user", + "isMut": true, + "isSigner": false + }, + { + "name": "state", + "isMut": true, + "isSigner": false + }, + { + "name": "driftSigner", + "isMut": false, + "isSigner": false + }, + { + "name": "treasuryAta", + "isMut": true, + "isSigner": false + }, + { + "name": "driftAta", + "isMut": true, + "isSigner": false + }, + { + "name": "manager", + "isMut": true, + "isSigner": true + }, + { + "name": "driftProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenProgram", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "amount", + "type": "u64" + } + ] + }, + { + "name": "driftClose", + "accounts": [ + { + "name": "fund", + "isMut": false, + "isSigner": false + }, + { + "name": "treasury", + "isMut": false, + "isSigner": false + }, + { + "name": "userStats", + "isMut": true, + "isSigner": false + }, + { + "name": "user", + "isMut": true, + "isSigner": false + }, + { + "name": "state", + "isMut": true, + "isSigner": false + }, + { + "name": "manager", + "isMut": true, + "isSigner": true + }, + { + "name": "driftProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false + } + ], + "args": [] + } + ], + "accounts": [ + { + "name": "Fund", + "type": { + "kind": "struct", + "fields": [ + { + "name": "manager", + "type": "publicKey" + }, + { + "name": "treasury", + "type": "publicKey" + }, + { + "name": "assetsLen", + "type": "u8" + }, + { + "name": "assets", + "type": { + "array": [ + "publicKey", + 5 + ] + } + }, + { + "name": "assetsWeights", + "type": { + "array": [ + "u32", + 5 + ] + } + }, + { + "name": "shareClassesLen", + "type": "u8" + }, + { + "name": "shareClasses", + "type": { + "array": [ + "publicKey", + 3 + ] + } + }, + { + "name": "shareClassesBumps", + "type": { + "array": [ + "u8", + 3 + ] + } + }, + { + "name": "timeCreated", + "type": "i64" + }, + { + "name": "bumpFund", + "type": "u8" + }, + { + "name": "bumpTreasury", + "type": "u8" + }, + { + "name": "name", + "type": "string" + }, + { + "name": "symbol", + "type": "string" + }, + { + "name": "isActive", + "type": "bool" + } + ] + } + }, + { + "name": "Treasury", + "type": { + "kind": "struct", + "fields": [ + { + "name": "manager", + "type": "publicKey" + }, + { + "name": "fund", + "type": "publicKey" + }, + { + "name": "bump", + "type": "u8" + } + ] + } + } + ], + "types": [ + { + "name": "InvestorError", + "type": { + "kind": "enum", + "variants": [ + { + "name": "FundNotActive" + }, + { + "name": "InvalidAssetSubscribe" + }, + { + "name": "InvalidAssetsRedeem" + }, + { + "name": "InvalidTreasuryAccount" + } + ] + } + } + ], + "errors": [ + { + "code": 6000, + "name": "CloseNotEmptyError", + "msg": "Error closing account: not empty" + }, + { + "code": 6001, + "name": "NotAuthorizedError", + "msg": "Error: not authorized" + }, + { + "code": 6002, + "name": "InvalidFundName", + "msg": "Invalid fund name: max 30 chars" + }, + { + "code": 6003, + "name": "InvalidAssetsLen", + "msg": "Too many assets: max 10" + }, + { + "code": 6004, + "name": "InvalidAssetsWeights", + "msg": "Number of weights should match number of assets" + } + ], + "metadata": { + "address": "Gco1pcjxCMYjKJjSNJ7mKV7qezeUTE7arXJgy7PAPNRc" + } +} \ No newline at end of file diff --git a/anchor/target/types/glam.ts b/anchor/target/types/glam.ts new file mode 100644 index 00000000..35ffd158 --- /dev/null +++ b/anchor/target/types/glam.ts @@ -0,0 +1,1341 @@ +export type Glam = { + "version": "0.1.0", + "name": "glam", + "constants": [ + { + "name": "SEED", + "type": "string", + "value": "\"anchor\"" + } + ], + "instructions": [ + { + "name": "initialize", + "accounts": [ + { + "name": "fund", + "isMut": true, + "isSigner": false + }, + { + "name": "treasury", + "isMut": true, + "isSigner": false + }, + { + "name": "share", + "isMut": true, + "isSigner": false + }, + { + "name": "manager", + "isMut": true, + "isSigner": true + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "rent", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "name", + "type": "string" + }, + { + "name": "symbol", + "type": "string" + }, + { + "name": "assetWeights", + "type": { + "vec": "u32" + } + }, + { + "name": "activate", + "type": "bool" + } + ] + }, + { + "name": "update", + "accounts": [ + { + "name": "fund", + "isMut": true, + "isSigner": false + }, + { + "name": "manager", + "isMut": true, + "isSigner": true + } + ], + "args": [ + { + "name": "name", + "type": { + "option": "string" + } + }, + { + "name": "symbol", + "type": { + "option": "string" + } + }, + { + "name": "assetWeights", + "type": { + "option": { + "vec": "u32" + } + } + }, + { + "name": "activate", + "type": { + "option": "bool" + } + } + ] + }, + { + "name": "close", + "accounts": [ + { + "name": "fund", + "isMut": true, + "isSigner": false + }, + { + "name": "manager", + "isMut": true, + "isSigner": true + } + ], + "args": [] + }, + { + "name": "subscribe", + "accounts": [ + { + "name": "fund", + "isMut": false, + "isSigner": false + }, + { + "name": "shareClass", + "isMut": true, + "isSigner": false + }, + { + "name": "signerShareAta", + "isMut": true, + "isSigner": false + }, + { + "name": "asset", + "isMut": true, + "isSigner": false + }, + { + "name": "treasuryAta", + "isMut": true, + "isSigner": false + }, + { + "name": "signerAssetAta", + "isMut": true, + "isSigner": false + }, + { + "name": "signer", + "isMut": true, + "isSigner": true + }, + { + "name": "tokenProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "token2022Program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "amount", + "type": "u64" + }, + { + "name": "skipState", + "type": "bool" + } + ] + }, + { + "name": "redeem", + "accounts": [ + { + "name": "fund", + "isMut": false, + "isSigner": false + }, + { + "name": "shareClass", + "isMut": true, + "isSigner": false + }, + { + "name": "signerShareAta", + "isMut": true, + "isSigner": false + }, + { + "name": "signer", + "isMut": true, + "isSigner": true + }, + { + "name": "treasury", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "token2022Program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "amount", + "type": "u64" + }, + { + "name": "inKind", + "type": "bool" + }, + { + "name": "skipState", + "type": "bool" + } + ] + }, + { + "name": "driftInitialize", + "accounts": [ + { + "name": "fund", + "isMut": false, + "isSigner": false + }, + { + "name": "treasury", + "isMut": false, + "isSigner": false + }, + { + "name": "userStats", + "isMut": true, + "isSigner": false + }, + { + "name": "user", + "isMut": true, + "isSigner": false + }, + { + "name": "state", + "isMut": true, + "isSigner": false + }, + { + "name": "manager", + "isMut": true, + "isSigner": true + }, + { + "name": "driftProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "rent", + "isMut": false, + "isSigner": false + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "trader", + "type": { + "option": "publicKey" + } + } + ] + }, + { + "name": "driftUpdateDelegatedTrader", + "accounts": [ + { + "name": "fund", + "isMut": false, + "isSigner": false + }, + { + "name": "treasury", + "isMut": false, + "isSigner": false + }, + { + "name": "user", + "isMut": true, + "isSigner": false + }, + { + "name": "manager", + "isMut": true, + "isSigner": true + }, + { + "name": "driftProgram", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "trader", + "type": { + "option": "publicKey" + } + } + ] + }, + { + "name": "driftDeposit", + "accounts": [ + { + "name": "fund", + "isMut": false, + "isSigner": false + }, + { + "name": "treasury", + "isMut": false, + "isSigner": false + }, + { + "name": "userStats", + "isMut": true, + "isSigner": false + }, + { + "name": "user", + "isMut": true, + "isSigner": false + }, + { + "name": "state", + "isMut": true, + "isSigner": false + }, + { + "name": "treasuryAta", + "isMut": true, + "isSigner": false + }, + { + "name": "driftAta", + "isMut": true, + "isSigner": false + }, + { + "name": "manager", + "isMut": true, + "isSigner": true + }, + { + "name": "driftProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenProgram", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "amount", + "type": "u64" + } + ] + }, + { + "name": "driftWithdraw", + "accounts": [ + { + "name": "fund", + "isMut": false, + "isSigner": false + }, + { + "name": "treasury", + "isMut": false, + "isSigner": false + }, + { + "name": "userStats", + "isMut": true, + "isSigner": false + }, + { + "name": "user", + "isMut": true, + "isSigner": false + }, + { + "name": "state", + "isMut": true, + "isSigner": false + }, + { + "name": "driftSigner", + "isMut": false, + "isSigner": false + }, + { + "name": "treasuryAta", + "isMut": true, + "isSigner": false + }, + { + "name": "driftAta", + "isMut": true, + "isSigner": false + }, + { + "name": "manager", + "isMut": true, + "isSigner": true + }, + { + "name": "driftProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenProgram", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "amount", + "type": "u64" + } + ] + }, + { + "name": "driftClose", + "accounts": [ + { + "name": "fund", + "isMut": false, + "isSigner": false + }, + { + "name": "treasury", + "isMut": false, + "isSigner": false + }, + { + "name": "userStats", + "isMut": true, + "isSigner": false + }, + { + "name": "user", + "isMut": true, + "isSigner": false + }, + { + "name": "state", + "isMut": true, + "isSigner": false + }, + { + "name": "manager", + "isMut": true, + "isSigner": true + }, + { + "name": "driftProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false + } + ], + "args": [] + } + ], + "accounts": [ + { + "name": "fund", + "type": { + "kind": "struct", + "fields": [ + { + "name": "manager", + "type": "publicKey" + }, + { + "name": "treasury", + "type": "publicKey" + }, + { + "name": "assetsLen", + "type": "u8" + }, + { + "name": "assets", + "type": { + "array": [ + "publicKey", + 5 + ] + } + }, + { + "name": "assetsWeights", + "type": { + "array": [ + "u32", + 5 + ] + } + }, + { + "name": "shareClassesLen", + "type": "u8" + }, + { + "name": "shareClasses", + "type": { + "array": [ + "publicKey", + 3 + ] + } + }, + { + "name": "shareClassesBumps", + "type": { + "array": [ + "u8", + 3 + ] + } + }, + { + "name": "timeCreated", + "type": "i64" + }, + { + "name": "bumpFund", + "type": "u8" + }, + { + "name": "bumpTreasury", + "type": "u8" + }, + { + "name": "name", + "type": "string" + }, + { + "name": "symbol", + "type": "string" + }, + { + "name": "isActive", + "type": "bool" + } + ] + } + }, + { + "name": "treasury", + "type": { + "kind": "struct", + "fields": [ + { + "name": "manager", + "type": "publicKey" + }, + { + "name": "fund", + "type": "publicKey" + }, + { + "name": "bump", + "type": "u8" + } + ] + } + } + ], + "types": [ + { + "name": "InvestorError", + "type": { + "kind": "enum", + "variants": [ + { + "name": "FundNotActive" + }, + { + "name": "InvalidAssetSubscribe" + }, + { + "name": "InvalidAssetsRedeem" + }, + { + "name": "InvalidTreasuryAccount" + } + ] + } + } + ], + "errors": [ + { + "code": 6000, + "name": "CloseNotEmptyError", + "msg": "Error closing account: not empty" + }, + { + "code": 6001, + "name": "NotAuthorizedError", + "msg": "Error: not authorized" + }, + { + "code": 6002, + "name": "InvalidFundName", + "msg": "Invalid fund name: max 30 chars" + }, + { + "code": 6003, + "name": "InvalidAssetsLen", + "msg": "Too many assets: max 10" + }, + { + "code": 6004, + "name": "InvalidAssetsWeights", + "msg": "Number of weights should match number of assets" + } + ] +}; + +export const IDL: Glam = { + "version": "0.1.0", + "name": "glam", + "constants": [ + { + "name": "SEED", + "type": "string", + "value": "\"anchor\"" + } + ], + "instructions": [ + { + "name": "initialize", + "accounts": [ + { + "name": "fund", + "isMut": true, + "isSigner": false + }, + { + "name": "treasury", + "isMut": true, + "isSigner": false + }, + { + "name": "share", + "isMut": true, + "isSigner": false + }, + { + "name": "manager", + "isMut": true, + "isSigner": true + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "rent", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "name", + "type": "string" + }, + { + "name": "symbol", + "type": "string" + }, + { + "name": "assetWeights", + "type": { + "vec": "u32" + } + }, + { + "name": "activate", + "type": "bool" + } + ] + }, + { + "name": "update", + "accounts": [ + { + "name": "fund", + "isMut": true, + "isSigner": false + }, + { + "name": "manager", + "isMut": true, + "isSigner": true + } + ], + "args": [ + { + "name": "name", + "type": { + "option": "string" + } + }, + { + "name": "symbol", + "type": { + "option": "string" + } + }, + { + "name": "assetWeights", + "type": { + "option": { + "vec": "u32" + } + } + }, + { + "name": "activate", + "type": { + "option": "bool" + } + } + ] + }, + { + "name": "close", + "accounts": [ + { + "name": "fund", + "isMut": true, + "isSigner": false + }, + { + "name": "manager", + "isMut": true, + "isSigner": true + } + ], + "args": [] + }, + { + "name": "subscribe", + "accounts": [ + { + "name": "fund", + "isMut": false, + "isSigner": false + }, + { + "name": "shareClass", + "isMut": true, + "isSigner": false + }, + { + "name": "signerShareAta", + "isMut": true, + "isSigner": false + }, + { + "name": "asset", + "isMut": true, + "isSigner": false + }, + { + "name": "treasuryAta", + "isMut": true, + "isSigner": false + }, + { + "name": "signerAssetAta", + "isMut": true, + "isSigner": false + }, + { + "name": "signer", + "isMut": true, + "isSigner": true + }, + { + "name": "tokenProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "token2022Program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "amount", + "type": "u64" + }, + { + "name": "skipState", + "type": "bool" + } + ] + }, + { + "name": "redeem", + "accounts": [ + { + "name": "fund", + "isMut": false, + "isSigner": false + }, + { + "name": "shareClass", + "isMut": true, + "isSigner": false + }, + { + "name": "signerShareAta", + "isMut": true, + "isSigner": false + }, + { + "name": "signer", + "isMut": true, + "isSigner": true + }, + { + "name": "treasury", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "token2022Program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "amount", + "type": "u64" + }, + { + "name": "inKind", + "type": "bool" + }, + { + "name": "skipState", + "type": "bool" + } + ] + }, + { + "name": "driftInitialize", + "accounts": [ + { + "name": "fund", + "isMut": false, + "isSigner": false + }, + { + "name": "treasury", + "isMut": false, + "isSigner": false + }, + { + "name": "userStats", + "isMut": true, + "isSigner": false + }, + { + "name": "user", + "isMut": true, + "isSigner": false + }, + { + "name": "state", + "isMut": true, + "isSigner": false + }, + { + "name": "manager", + "isMut": true, + "isSigner": true + }, + { + "name": "driftProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "rent", + "isMut": false, + "isSigner": false + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "trader", + "type": { + "option": "publicKey" + } + } + ] + }, + { + "name": "driftUpdateDelegatedTrader", + "accounts": [ + { + "name": "fund", + "isMut": false, + "isSigner": false + }, + { + "name": "treasury", + "isMut": false, + "isSigner": false + }, + { + "name": "user", + "isMut": true, + "isSigner": false + }, + { + "name": "manager", + "isMut": true, + "isSigner": true + }, + { + "name": "driftProgram", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "trader", + "type": { + "option": "publicKey" + } + } + ] + }, + { + "name": "driftDeposit", + "accounts": [ + { + "name": "fund", + "isMut": false, + "isSigner": false + }, + { + "name": "treasury", + "isMut": false, + "isSigner": false + }, + { + "name": "userStats", + "isMut": true, + "isSigner": false + }, + { + "name": "user", + "isMut": true, + "isSigner": false + }, + { + "name": "state", + "isMut": true, + "isSigner": false + }, + { + "name": "treasuryAta", + "isMut": true, + "isSigner": false + }, + { + "name": "driftAta", + "isMut": true, + "isSigner": false + }, + { + "name": "manager", + "isMut": true, + "isSigner": true + }, + { + "name": "driftProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenProgram", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "amount", + "type": "u64" + } + ] + }, + { + "name": "driftWithdraw", + "accounts": [ + { + "name": "fund", + "isMut": false, + "isSigner": false + }, + { + "name": "treasury", + "isMut": false, + "isSigner": false + }, + { + "name": "userStats", + "isMut": true, + "isSigner": false + }, + { + "name": "user", + "isMut": true, + "isSigner": false + }, + { + "name": "state", + "isMut": true, + "isSigner": false + }, + { + "name": "driftSigner", + "isMut": false, + "isSigner": false + }, + { + "name": "treasuryAta", + "isMut": true, + "isSigner": false + }, + { + "name": "driftAta", + "isMut": true, + "isSigner": false + }, + { + "name": "manager", + "isMut": true, + "isSigner": true + }, + { + "name": "driftProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenProgram", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "amount", + "type": "u64" + } + ] + }, + { + "name": "driftClose", + "accounts": [ + { + "name": "fund", + "isMut": false, + "isSigner": false + }, + { + "name": "treasury", + "isMut": false, + "isSigner": false + }, + { + "name": "userStats", + "isMut": true, + "isSigner": false + }, + { + "name": "user", + "isMut": true, + "isSigner": false + }, + { + "name": "state", + "isMut": true, + "isSigner": false + }, + { + "name": "manager", + "isMut": true, + "isSigner": true + }, + { + "name": "driftProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false + } + ], + "args": [] + } + ], + "accounts": [ + { + "name": "fund", + "type": { + "kind": "struct", + "fields": [ + { + "name": "manager", + "type": "publicKey" + }, + { + "name": "treasury", + "type": "publicKey" + }, + { + "name": "assetsLen", + "type": "u8" + }, + { + "name": "assets", + "type": { + "array": [ + "publicKey", + 5 + ] + } + }, + { + "name": "assetsWeights", + "type": { + "array": [ + "u32", + 5 + ] + } + }, + { + "name": "shareClassesLen", + "type": "u8" + }, + { + "name": "shareClasses", + "type": { + "array": [ + "publicKey", + 3 + ] + } + }, + { + "name": "shareClassesBumps", + "type": { + "array": [ + "u8", + 3 + ] + } + }, + { + "name": "timeCreated", + "type": "i64" + }, + { + "name": "bumpFund", + "type": "u8" + }, + { + "name": "bumpTreasury", + "type": "u8" + }, + { + "name": "name", + "type": "string" + }, + { + "name": "symbol", + "type": "string" + }, + { + "name": "isActive", + "type": "bool" + } + ] + } + }, + { + "name": "treasury", + "type": { + "kind": "struct", + "fields": [ + { + "name": "manager", + "type": "publicKey" + }, + { + "name": "fund", + "type": "publicKey" + }, + { + "name": "bump", + "type": "u8" + } + ] + } + } + ], + "types": [ + { + "name": "InvestorError", + "type": { + "kind": "enum", + "variants": [ + { + "name": "FundNotActive" + }, + { + "name": "InvalidAssetSubscribe" + }, + { + "name": "InvalidAssetsRedeem" + }, + { + "name": "InvalidTreasuryAccount" + } + ] + } + } + ], + "errors": [ + { + "code": 6000, + "name": "CloseNotEmptyError", + "msg": "Error closing account: not empty" + }, + { + "code": 6001, + "name": "NotAuthorizedError", + "msg": "Error: not authorized" + }, + { + "code": 6002, + "name": "InvalidFundName", + "msg": "Invalid fund name: max 30 chars" + }, + { + "code": 6003, + "name": "InvalidAssetsLen", + "msg": "Too many assets: max 10" + }, + { + "code": 6004, + "name": "InvalidAssetsWeights", + "msg": "Number of weights should match number of assets" + } + ] +};