├── .github └── workflows │ └── main.yml ├── .gitignore ├── LICENSE ├── README.md ├── dist ├── sbv2.d.ts ├── sbv2.js ├── sbv2.js.map └── test │ ├── context.d.ts │ ├── context.js │ ├── context.js.map │ ├── env.d.ts │ ├── env.js │ ├── env.js.map │ ├── index.d.ts │ ├── index.js │ ├── index.js.map │ ├── utils.d.ts │ ├── utils.js │ └── utils.js.map ├── docs ├── .nojekyll ├── assets │ ├── highlight.css │ ├── icons.css │ ├── icons.png │ ├── icons@2x.png │ ├── main.js │ ├── search.js │ ├── style.css │ ├── widgets.png │ └── widgets@2x.png ├── classes │ ├── AggregatorAccount.html │ ├── AggregatorHistoryRow.html │ ├── CrankAccount.html │ ├── CrankRow.html │ ├── JobAccount.html │ ├── LeaseAccount.html │ ├── OracleAccount.html │ ├── OracleJob.AddTask.html │ ├── OracleJob.AnchorFetchTask.html │ ├── OracleJob.ConditionalTask.html │ ├── OracleJob.DefiKingdomsTask-1.html │ ├── OracleJob.DefiKingdomsTask.Token.html │ ├── OracleJob.DivideTask.html │ ├── OracleJob.HttpTask-1.html │ ├── OracleJob.HttpTask.Header.html │ ├── OracleJob.JsonParseTask-1.html │ ├── OracleJob.JupiterSwapTask.html │ ├── OracleJob.LendingRateTask-1.html │ ├── OracleJob.LpExchangeRateTask.html │ ├── OracleJob.LpTokenPriceTask.html │ ├── OracleJob.MangoPerpMarketTask.html │ ├── OracleJob.MaxTask.html │ ├── OracleJob.MeanTask.html │ ├── OracleJob.MedianTask.html │ ├── OracleJob.MultiplyTask.html │ ├── OracleJob.OracleTask.html │ ├── OracleJob.PerpMarketTask.html │ ├── OracleJob.PowTask.html │ ├── OracleJob.RegexExtractTask.html │ ├── OracleJob.SerumSwapTask.html │ ├── OracleJob.SubtractTask.html │ ├── OracleJob.Task.html │ ├── OracleJob.TpsTask.html │ ├── OracleJob.TwapTask.html │ ├── OracleJob.ValueTask.html │ ├── OracleJob.WebsocketTask.html │ ├── OracleJob.XStepPriceTask.html │ ├── OracleJob.html │ ├── OracleQueueAccount.html │ ├── PermissionAccount.html │ ├── ProgramStateAccount.html │ ├── SwitchboardDecimal.html │ ├── SwitchboardError.html │ ├── SwitchboardTestContext.html │ ├── SwitchboardTestEnvironment.html │ └── VrfAccount.html ├── enums │ ├── OracleJob.HttpTask.Method.html │ ├── OracleJob.JsonParseTask.AggregationMethod.html │ ├── OracleJob.LendingRateTask.Field.html │ ├── SwitchboardPermission.html │ └── SwitchboardPermissionValue.html ├── index.html ├── interfaces │ ├── AccountParams.html │ ├── AggregatorInitParams.html │ ├── AggregatorOpenRoundParams.html │ ├── AggregatorSaveResultParams.html │ ├── AggregatorSetBatchSizeParams.html │ ├── AggregatorSetHistoryBufferParams.html │ ├── AggregatorSetMinJobsParams.html │ ├── AggregatorSetMinOraclesParams.html │ ├── AggregatorSetQueueParams.html │ ├── Callback.html │ ├── CrankInitParams.html │ ├── CrankPopParams.html │ ├── CrankPushParams.html │ ├── ISwitchboardTestContext.html │ ├── ISwitchboardTestEnvironment.html │ ├── JobInitParams.html │ ├── LeaseExtendParams.html │ ├── LeaseInitParams.html │ ├── LeaseWithdrawParams.html │ ├── OracleInitParams.html │ ├── OracleJob.DefiKingdomsTask.IToken.html │ ├── OracleJob.HttpTask.IHeader.html │ ├── OracleJob.IAddTask.html │ ├── OracleJob.IAnchorFetchTask.html │ ├── OracleJob.IConditionalTask.html │ ├── OracleJob.IDefiKingdomsTask.html │ ├── OracleJob.IDivideTask.html │ ├── OracleJob.IHttpTask.html │ ├── OracleJob.IJsonParseTask.html │ ├── OracleJob.IJupiterSwapTask.html │ ├── OracleJob.ILendingRateTask.html │ ├── OracleJob.ILpExchangeRateTask.html │ ├── OracleJob.ILpTokenPriceTask.html │ ├── OracleJob.IMangoPerpMarketTask.html │ ├── OracleJob.IMaxTask.html │ ├── OracleJob.IMeanTask.html │ ├── OracleJob.IMedianTask.html │ ├── OracleJob.IMultiplyTask.html │ ├── OracleJob.IOracleTask.html │ ├── OracleJob.IPerpMarketTask.html │ ├── OracleJob.IPowTask.html │ ├── OracleJob.IRegexExtractTask.html │ ├── OracleJob.ISerumSwapTask.html │ ├── OracleJob.ISubtractTask.html │ ├── OracleJob.ITask.html │ ├── OracleJob.ITpsTask.html │ ├── OracleJob.ITwapTask.html │ ├── OracleJob.IValueTask.html │ ├── OracleJob.IWebsocketTask.html │ ├── OracleJob.IXStepPriceTask.html │ ├── OracleQueueInitParams.html │ ├── OracleQueueSetRewardsParams.html │ ├── OracleQueueSetVrfSettingsParams.html │ ├── OracleWithdrawParams.html │ ├── PermissionInitParams.html │ ├── PermissionSetParams.html │ ├── PermissionSetVoterWeightParams.html │ ├── ProgramConfigParams.html │ ├── ProgramInitParams.html │ ├── VaultTransferParams.html │ ├── VrfInitParams.html │ ├── VrfProveAndVerifyParams.html │ ├── VrfProveParams.html │ ├── VrfRequestRandomnessParams.html │ └── VrfSetCallbackParams.html ├── modules.html └── modules │ ├── OracleJob.DefiKingdomsTask.html │ ├── OracleJob.HttpTask.html │ ├── OracleJob.JsonParseTask.html │ ├── OracleJob.LendingRateTask.html │ └── OracleJob.html ├── package-lock.json ├── package.json ├── src ├── sbv2.ts └── test │ ├── context.ts │ ├── env.ts │ ├── index.ts │ └── utils.ts ├── tests └── decimal-tests.ts ├── tsconfig.json └── typedoc.json /.github/workflows/main.yml: -------------------------------------------------------------------------------- 1 | # This is a basic workflow to help you get started with Actions 2 | 3 | name: AutoTest 4 | 5 | # Controls when the workflow will run 6 | on: 7 | # Triggers the workflow on push or pull request events but only for the main branch 8 | push: 9 | branches: [ main ] 10 | 11 | # Allows you to run this workflow manually from the Actions tab 12 | workflow_dispatch: 13 | 14 | # A workflow run is made up of one or more jobs that can run sequentially or in parallel 15 | jobs: 16 | # This workflow contains a single job called "build" 17 | test: 18 | # The type of runner that the job will run on 19 | runs-on: ubuntu-latest 20 | 21 | # Steps represent a sequence of tasks that will be executed as part of the job 22 | steps: 23 | # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it 24 | - uses: actions/checkout@v2 25 | 26 | - name: install 27 | run: npm i 28 | - name: test 29 | run: npm run test 30 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | lerna-debug.log* 8 | 9 | # Build output 10 | # dist 11 | 12 | # Diagnostic reports (https://nodejs.org/api/report.html) 13 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 14 | 15 | # Runtime data 16 | pids 17 | *.pid 18 | *.seed 19 | *.pid.lock 20 | 21 | # Directory for instrumented libs generated by jscoverage/JSCover 22 | lib-cov 23 | 24 | # Coverage directory used by tools like istanbul 25 | coverage 26 | *.lcov 27 | 28 | # nyc test coverage 29 | .nyc_output 30 | 31 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 32 | .grunt 33 | 34 | # Bower dependency directory (https://bower.io/) 35 | bower_components 36 | 37 | # node-waf configuration 38 | .lock-wscript 39 | 40 | # Compiled binary addons (https://nodejs.org/api/addons.html) 41 | build/Release 42 | 43 | # Dependency directories 44 | node_modules/ 45 | jspm_packages/ 46 | 47 | # TypeScript v1 declaration files 48 | typings/ 49 | 50 | # TypeScript cache 51 | *.tsbuildinfo 52 | 53 | # Optional npm cache directory 54 | .npm 55 | 56 | # Optional eslint cache 57 | .eslintcache 58 | 59 | # Microbundle cache 60 | .rpt2_cache/ 61 | .rts2_cache_cjs/ 62 | .rts2_cache_es/ 63 | .rts2_cache_umd/ 64 | 65 | # Optional REPL history 66 | .node_repl_history 67 | 68 | # Output of 'npm pack' 69 | *.tgz 70 | 71 | # Yarn Integrity file 72 | .yarn-integrity 73 | 74 | # dotenv environment variables file 75 | .env 76 | .env.test 77 | 78 | # parcel-bundler cache (https://parceljs.org/) 79 | .cache 80 | 81 | # Next.js build output 82 | .next 83 | 84 | # Nuxt.js build / generate output 85 | .nuxt 86 | # dist 87 | 88 | # Gatsby files 89 | .cache/ 90 | # Comment in the public line in if your project uses Gatsby and *not* Next.js 91 | # https://nextjs.org/blog/next-9-1#public-directory-support 92 | # public 93 | 94 | # vuepress build output 95 | .vuepress/dist 96 | 97 | # Serverless directories 98 | .serverless/ 99 | 100 | # FuseBox cache 101 | .fusebox/ 102 | 103 | # DynamoDB Local files 104 | .dynamodb/ 105 | 106 | # TernJS port file 107 | .tern-port 108 | 109 | #docs 110 | # docs 111 | # docs/** 112 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Switchboard 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Switchboard-v2 API module 2 | 3 | A library of utility functions to interact with the Switchboardv2 program 4 | 5 | ## Git Pages 6 | 7 | See https://switchboard-xyz.github.io/switchboardv2-api/ for module documentation. 8 | 9 | -------------------------------------------------------------------------------- /dist/test/context.d.ts: -------------------------------------------------------------------------------- 1 | import * as anchor from "@project-serum/anchor"; 2 | import * as spl from "@solana/spl-token"; 3 | import * as sbv2 from "../sbv2"; 4 | import { PublicKey } from "@solana/web3.js"; 5 | export interface ISwitchboardTestContext { 6 | program: anchor.Program; 7 | mint: spl.Token; 8 | tokenWallet: PublicKey; 9 | queue: sbv2.OracleQueueAccount; 10 | oracle: sbv2.OracleAccount; 11 | } 12 | export declare class SwitchboardTestContext implements ISwitchboardTestContext { 13 | program: anchor.Program; 14 | mint: spl.Token; 15 | tokenWallet: PublicKey; 16 | queue: sbv2.OracleQueueAccount; 17 | oracle: sbv2.OracleAccount; 18 | constructor(ctx: ISwitchboardTestContext); 19 | private static createSwitchboardWallet; 20 | /** Load SwitchboardTestContext from an env file containing $SWITCHBOARD_PROGRAM_ID, $ORACLE_QUEUE, $AGGREGATOR, $ORACLE 21 | * @param provider anchor Provider containing connection and payer Keypair 22 | * @param filePath filesystem path to env file 23 | */ 24 | static loadFromEnv(provider: anchor.Provider, filePath: string): Promise; 25 | /** Create a static data feed that resolves to an expected value */ 26 | createStaticFeed(value: number): Promise; 27 | /** Update a feed to a single job that resolves to a new expected value 28 | * @param aggregatorAccount the aggregator to change a job definition for 29 | * @param value the new expected value 30 | * @param timeout how long to wait for the oracle to update the aggregator's latestRound result 31 | */ 32 | updateStaticFeed(aggregatorAccount: sbv2.AggregatorAccount, value: number, timeout?: number): Promise; 33 | } 34 | -------------------------------------------------------------------------------- /dist/test/context.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/test/context.ts"],"names":[],"mappings":"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"} -------------------------------------------------------------------------------- /dist/test/env.d.ts: -------------------------------------------------------------------------------- 1 | import { PublicKey, Keypair } from "@solana/web3.js"; 2 | export interface ISwitchboardTestEnvironment { 3 | programId: PublicKey; 4 | programDataAddress: PublicKey; 5 | idlAddress: PublicKey; 6 | programState: PublicKey; 7 | switchboardVault: PublicKey; 8 | switchboardMint: PublicKey; 9 | tokenWallet: PublicKey; 10 | queue: PublicKey; 11 | queueAuthority: PublicKey; 12 | queueBuffer: PublicKey; 13 | crank: PublicKey; 14 | crankBuffer: PublicKey; 15 | oracle: PublicKey; 16 | oracleAuthority: PublicKey; 17 | oracleEscrow: PublicKey; 18 | oraclePermissions: PublicKey; 19 | additionalClonedAccounts?: Record; 20 | } 21 | /** Contains all of the necessary devnet Switchboard accounts to clone to localnet */ 22 | export declare class SwitchboardTestEnvironment implements ISwitchboardTestEnvironment { 23 | programId: PublicKey; 24 | programDataAddress: PublicKey; 25 | idlAddress: PublicKey; 26 | programState: PublicKey; 27 | switchboardVault: PublicKey; 28 | switchboardMint: PublicKey; 29 | tokenWallet: PublicKey; 30 | queue: PublicKey; 31 | queueAuthority: PublicKey; 32 | queueBuffer: PublicKey; 33 | crank: PublicKey; 34 | crankBuffer: PublicKey; 35 | oracle: PublicKey; 36 | oracleAuthority: PublicKey; 37 | oracleEscrow: PublicKey; 38 | oraclePermissions: PublicKey; 39 | additionalClonedAccounts?: Record; 40 | constructor(ctx: ISwitchboardTestEnvironment); 41 | private getAccountCloneString; 42 | toJSON(): ISwitchboardTestEnvironment; 43 | /** Write switchboard test environment to filesystem */ 44 | writeAll(payerKeypairPath: string, filePath: string): void; 45 | /** Write the env file to filesystem */ 46 | writeEnv(filePath: string): void; 47 | writeJSON(filePath: string): void; 48 | writeScripts(payerKeypairPath: string, filePath: string): void; 49 | /** Build a devnet environment to later clone to localnet */ 50 | static create(payerKeypair: Keypair, additionalClonedAccounts?: Record): Promise; 51 | } 52 | -------------------------------------------------------------------------------- /dist/test/env.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/test/env.ts"],"names":[],"mappings":"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"} -------------------------------------------------------------------------------- /dist/test/index.d.ts: -------------------------------------------------------------------------------- 1 | export * from "./context"; 2 | export * from "./env"; 3 | -------------------------------------------------------------------------------- /dist/test/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { 3 | if (k2 === undefined) k2 = k; 4 | Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); 5 | }) : (function(o, m, k, k2) { 6 | if (k2 === undefined) k2 = k; 7 | o[k2] = m[k]; 8 | })); 9 | var __exportStar = (this && this.__exportStar) || function(m, exports) { 10 | for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); 11 | }; 12 | Object.defineProperty(exports, "__esModule", { value: true }); 13 | __exportStar(require("./context"), exports); 14 | __exportStar(require("./env"), exports); 15 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /dist/test/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/test/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,4CAA0B;AAC1B,wCAAsB"} -------------------------------------------------------------------------------- /dist/test/utils.d.ts: -------------------------------------------------------------------------------- 1 | import { PublicKey } from "@solana/web3.js"; 2 | export declare const DEFAULT_PUBKEY: PublicKey; 3 | export declare const sleep: (ms: number) => Promise; 4 | export declare function promiseWithTimeout(ms: number, promise: Promise, timeoutError?: Error): Promise; 5 | export declare const getProgramDataAddress: (programId: PublicKey) => PublicKey; 6 | export declare const getIdlAddress: (programId: PublicKey) => Promise; 7 | -------------------------------------------------------------------------------- /dist/test/utils.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.getIdlAddress = exports.getProgramDataAddress = exports.promiseWithTimeout = exports.sleep = exports.DEFAULT_PUBKEY = void 0; 4 | const web3_js_1 = require("@solana/web3.js"); 5 | const pubkey_1 = require("@project-serum/anchor/dist/cjs/utils/pubkey"); 6 | exports.DEFAULT_PUBKEY = new web3_js_1.PublicKey("11111111111111111111111111111111"); 7 | const sleep = (ms) => new Promise((s) => setTimeout(s, ms)); 8 | exports.sleep = sleep; 9 | async function promiseWithTimeout(ms, promise, timeoutError = new Error("timeoutError")) { 10 | // create a promise that rejects in milliseconds 11 | const timeout = new Promise((_, reject) => { 12 | setTimeout(() => { 13 | reject(timeoutError); 14 | }, ms); 15 | }); 16 | return Promise.race([promise, timeout]); 17 | } 18 | exports.promiseWithTimeout = promiseWithTimeout; 19 | const getProgramDataAddress = (programId) => { 20 | return pubkey_1.findProgramAddressSync([programId.toBytes()], new web3_js_1.PublicKey("BPFLoaderUpgradeab1e11111111111111111111111"))[0]; 21 | }; 22 | exports.getProgramDataAddress = getProgramDataAddress; 23 | const getIdlAddress = async (programId) => { 24 | const base = (await web3_js_1.PublicKey.findProgramAddress([], programId))[0]; 25 | return web3_js_1.PublicKey.createWithSeed(base, "anchor:idl", programId); 26 | }; 27 | exports.getIdlAddress = getIdlAddress; 28 | //# sourceMappingURL=utils.js.map -------------------------------------------------------------------------------- /dist/test/utils.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/test/utils.ts"],"names":[],"mappings":";;;AAAA,6CAA4C;AAC5C,wEAAqF;AAExE,QAAA,cAAc,GAAG,IAAI,mBAAS,CAAC,kCAAkC,CAAC,CAAC;AAEzE,MAAM,KAAK,GAAG,CAAC,EAAU,EAAgB,EAAE,CAChD,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAD3B,QAAA,KAAK,SACsB;AAEjC,KAAK,UAAU,kBAAkB,CACtC,EAAU,EACV,OAAmB,EACnB,YAAY,GAAG,IAAI,KAAK,CAAC,cAAc,CAAC;IAExC,gDAAgD;IAChD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;QAC/C,UAAU,CAAC,GAAG,EAAE;YACd,MAAM,CAAC,YAAY,CAAC,CAAC;QACvB,CAAC,EAAE,EAAE,CAAC,CAAC;IACT,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC,IAAI,CAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AAC7C,CAAC;AAbD,gDAaC;AAEM,MAAM,qBAAqB,GAAG,CAAC,SAAoB,EAAa,EAAE;IACvE,OAAO,+BAAsB,CAC3B,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,EACrB,IAAI,mBAAS,CAAC,6CAA6C,CAAC,CAC7D,CAAC,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AALW,QAAA,qBAAqB,yBAKhC;AAEK,MAAM,aAAa,GAAG,KAAK,EAChC,SAAoB,EACA,EAAE;IACtB,MAAM,IAAI,GAAG,CAAC,MAAM,mBAAS,CAAC,kBAAkB,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpE,OAAO,mBAAS,CAAC,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;AACjE,CAAC,CAAC;AALW,QAAA,aAAa,iBAKxB"} -------------------------------------------------------------------------------- /docs/.nojekyll: -------------------------------------------------------------------------------- 1 | TypeDoc added this file to prevent GitHub Pages from using Jekyll. You can turn off this behavior by setting the `githubPages` option to false. -------------------------------------------------------------------------------- /docs/assets/highlight.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --light-code-background: #F5F5F5; 3 | --dark-code-background: #1E1E1E; 4 | } 5 | 6 | @media (prefers-color-scheme: light) { :root { 7 | --code-background: var(--light-code-background); 8 | } } 9 | 10 | @media (prefers-color-scheme: dark) { :root { 11 | --code-background: var(--dark-code-background); 12 | } } 13 | 14 | body.light { 15 | --code-background: var(--light-code-background); 16 | } 17 | 18 | body.dark { 19 | --code-background: var(--dark-code-background); 20 | } 21 | 22 | pre, code { background: var(--code-background); } 23 | -------------------------------------------------------------------------------- /docs/assets/icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/switchboard-xyz/switchboardv2-api/47fbd1eba3466a41bc3b02cf785040ea9a632265/docs/assets/icons.png -------------------------------------------------------------------------------- /docs/assets/icons@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/switchboard-xyz/switchboardv2-api/47fbd1eba3466a41bc3b02cf785040ea9a632265/docs/assets/icons@2x.png -------------------------------------------------------------------------------- /docs/assets/widgets.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/switchboard-xyz/switchboardv2-api/47fbd1eba3466a41bc3b02cf785040ea9a632265/docs/assets/widgets.png -------------------------------------------------------------------------------- /docs/assets/widgets@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/switchboard-xyz/switchboardv2-api/47fbd1eba3466a41bc3b02cf785040ea9a632265/docs/assets/widgets@2x.png -------------------------------------------------------------------------------- /docs/enums/OracleJob.LendingRateTask.Field.html: -------------------------------------------------------------------------------- 1 | Field | @switchboard-xyz/switchboard-v2
Options
All
  • Public
  • Public/Protected
  • All
Menu
2 |

Field enum.

3 |

Index

Enumeration members

FIELD_BORROW_RATE = 1
FIELD_DEPOSIT_RATE = 0

Legend

  • Constructor
  • Property
  • Method
  • Property
  • Private method
  • Static method

Settings

Theme

Generated using TypeDoc

-------------------------------------------------------------------------------- /docs/enums/SwitchboardPermissionValue.html: -------------------------------------------------------------------------------- 1 | SwitchboardPermissionValue | @switchboard-xyz/switchboard-v2
Options
All
  • Public
  • Public/Protected
  • All
Menu

Enumeration SwitchboardPermissionValue

Index

Enumeration members

PERMIT_ORACLE_HEARTBEAT = 1
PERMIT_ORACLE_QUEUE_USAGE = 2
PERMIT_VRF_REQUESTS = 4

Legend

  • Constructor
  • Property
  • Method
  • Property
  • Private method
  • Static method

Settings

Theme

Generated using TypeDoc

-------------------------------------------------------------------------------- /docs/interfaces/AggregatorOpenRoundParams.html: -------------------------------------------------------------------------------- 1 | AggregatorOpenRoundParams | @switchboard-xyz/switchboard-v2
Options
All
  • Public
  • Public/Protected
  • All
Menu
2 |

Parameters required to open an aggregator round

3 |

Hierarchy

  • AggregatorOpenRoundParams

Index

Properties

oracleQueueAccount: OracleQueueAccount
4 |

The oracle queue from which oracles are assigned this update.

5 |
payoutWallet: PublicKey
6 |

The token wallet which will receive rewards for calling update on this feed.

7 |

Legend

  • Constructor
  • Property
  • Method
  • Property
  • Private method
  • Static method

Settings

Theme

Generated using TypeDoc

-------------------------------------------------------------------------------- /docs/interfaces/AggregatorSetBatchSizeParams.html: -------------------------------------------------------------------------------- 1 | AggregatorSetBatchSizeParams | @switchboard-xyz/switchboard-v2
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

  • AggregatorSetBatchSizeParams

Index

Properties

authority?: Keypair
batchSize: number

Legend

  • Constructor
  • Property
  • Method
  • Property
  • Private method
  • Static method

Settings

Theme

Generated using TypeDoc

-------------------------------------------------------------------------------- /docs/interfaces/AggregatorSetHistoryBufferParams.html: -------------------------------------------------------------------------------- 1 | AggregatorSetHistoryBufferParams | @switchboard-xyz/switchboard-v2
Options
All
  • Public
  • Public/Protected
  • All
Menu

Interface AggregatorSetHistoryBufferParams

2 |

Parameters for creating and setting a history buffer for an aggregator

3 |

Hierarchy

  • AggregatorSetHistoryBufferParams

Index

Properties

Properties

authority?: Keypair
size: number

Legend

  • Constructor
  • Property
  • Method
  • Property
  • Private method
  • Static method

Settings

Theme

Generated using TypeDoc

-------------------------------------------------------------------------------- /docs/interfaces/AggregatorSetMinJobsParams.html: -------------------------------------------------------------------------------- 1 | AggregatorSetMinJobsParams | @switchboard-xyz/switchboard-v2
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

  • AggregatorSetMinJobsParams

Index

Properties

authority?: Keypair
minJobResults: number

Legend

  • Constructor
  • Property
  • Method
  • Property
  • Private method
  • Static method

Settings

Theme

Generated using TypeDoc

-------------------------------------------------------------------------------- /docs/interfaces/AggregatorSetMinOraclesParams.html: -------------------------------------------------------------------------------- 1 | AggregatorSetMinOraclesParams | @switchboard-xyz/switchboard-v2
Options
All
  • Public
  • Public/Protected
  • All
Menu

Interface AggregatorSetMinOraclesParams

Hierarchy

  • AggregatorSetMinOraclesParams

Index

Properties

authority?: Keypair
minOracleResults: number

Legend

  • Constructor
  • Property
  • Method
  • Property
  • Private method
  • Static method

Settings

Theme

Generated using TypeDoc

-------------------------------------------------------------------------------- /docs/interfaces/AggregatorSetQueueParams.html: -------------------------------------------------------------------------------- 1 | AggregatorSetQueueParams | @switchboard-xyz/switchboard-v2
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

  • AggregatorSetQueueParams

Index

Properties

authority?: Keypair
queueAccount: OracleQueueAccount

Legend

  • Constructor
  • Property
  • Method
  • Property
  • Private method
  • Static method

Settings

Theme

Generated using TypeDoc

-------------------------------------------------------------------------------- /docs/interfaces/Callback.html: -------------------------------------------------------------------------------- 1 | Callback | @switchboard-xyz/switchboard-v2
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

  • Callback

Index

Properties

accounts: AccountMeta[]
ixData: Buffer
programId: PublicKey

Legend

  • Constructor
  • Property
  • Method
  • Property
  • Private method
  • Static method

Settings

Theme

Generated using TypeDoc

-------------------------------------------------------------------------------- /docs/interfaces/CrankPushParams.html: -------------------------------------------------------------------------------- 1 | CrankPushParams | @switchboard-xyz/switchboard-v2
Options
All
  • Public
  • Public/Protected
  • All
Menu
2 |

Parameters for pushing an element into a CrankAccount.

3 |

Hierarchy

  • CrankPushParams

Index

Properties

aggregatorAccount: AggregatorAccount
4 |

Specifies the aggregator to push onto the crank.

5 |

Legend

  • Constructor
  • Property
  • Method
  • Property
  • Private method
  • Static method

Settings

Theme

Generated using TypeDoc

-------------------------------------------------------------------------------- /docs/interfaces/OracleJob.HttpTask.IHeader.html: -------------------------------------------------------------------------------- 1 | IHeader | @switchboard-xyz/switchboard-v2
Options
All
  • Public
  • Public/Protected
  • All
Menu
2 |

Properties of a Header.

3 |

Hierarchy

  • IHeader

Implemented by

Index

Properties

Properties

key?: string
4 |

Header key

5 |
value?: string
6 |

Header value

7 |

Legend

  • Constructor
  • Property
  • Method
  • Property
  • Private method
  • Static method

Settings

Theme

Generated using TypeDoc

-------------------------------------------------------------------------------- /docs/interfaces/OracleJob.IMangoPerpMarketTask.html: -------------------------------------------------------------------------------- 1 | IMangoPerpMarketTask | @switchboard-xyz/switchboard-v2
Options
All
  • Public
  • Public/Protected
  • All
Menu
2 |

Properties of a MangoPerpMarketTask.

3 |

Hierarchy

  • IMangoPerpMarketTask

Implemented by

Index

Properties

perpMarketAddress?: string
4 |

MangoPerpMarketTask perpMarketAddress

5 |

Legend

  • Constructor
  • Property
  • Method
  • Property
  • Private method
  • Static method

Settings

Theme

Generated using TypeDoc

-------------------------------------------------------------------------------- /docs/interfaces/OracleJob.IMaxTask.html: -------------------------------------------------------------------------------- 1 | IMaxTask | @switchboard-xyz/switchboard-v2
Options
All
  • Public
  • Public/Protected
  • All
Menu
2 |

Properties of a MaxTask.

3 |

Hierarchy

  • IMaxTask

Implemented by

Index

Properties

Properties

jobs?: IOracleJob[]
4 |

MaxTask jobs

5 |
tasks?: ITask[]
6 |

MaxTask tasks

7 |

Legend

  • Constructor
  • Property
  • Method
  • Property
  • Private method
  • Static method

Settings

Theme

Generated using TypeDoc

-------------------------------------------------------------------------------- /docs/interfaces/OracleJob.ISerumSwapTask.html: -------------------------------------------------------------------------------- 1 | ISerumSwapTask | @switchboard-xyz/switchboard-v2
Options
All
  • Public
  • Public/Protected
  • All
Menu
2 |

Properties of a SerumSwapTask.

3 |

Hierarchy

  • ISerumSwapTask

Implemented by

Index

Properties

serumPoolAddress?: string
4 |

SerumSwapTask serumPoolAddress

5 |

Legend

  • Constructor
  • Property
  • Method
  • Property
  • Private method
  • Static method

Settings

Theme

Generated using TypeDoc

-------------------------------------------------------------------------------- /docs/interfaces/OracleJob.ITpsTask.html: -------------------------------------------------------------------------------- 1 | ITpsTask | @switchboard-xyz/switchboard-v2
Options
All
  • Public
  • Public/Protected
  • All
Menu
2 |

Properties of a TpsTask.

3 |

Hierarchy

  • ITpsTask

Implemented by

Legend

  • Constructor
  • Property
  • Method
  • Property
  • Private method
  • Static method

Settings

Theme

Generated using TypeDoc

-------------------------------------------------------------------------------- /docs/interfaces/OracleQueueSetRewardsParams.html: -------------------------------------------------------------------------------- 1 | OracleQueueSetRewardsParams | @switchboard-xyz/switchboard-v2
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

  • OracleQueueSetRewardsParams

Index

Properties

authority?: Keypair
rewards: BN

Legend

  • Constructor
  • Property
  • Method
  • Property
  • Private method
  • Static method

Settings

Theme

Generated using TypeDoc

-------------------------------------------------------------------------------- /docs/interfaces/OracleQueueSetVrfSettingsParams.html: -------------------------------------------------------------------------------- 1 | OracleQueueSetVrfSettingsParams | @switchboard-xyz/switchboard-v2
Options
All
  • Public
  • Public/Protected
  • All
Menu

Interface OracleQueueSetVrfSettingsParams

Hierarchy

  • OracleQueueSetVrfSettingsParams

Index

Properties

authority?: Keypair
unpermissionedVrf: boolean

Legend

  • Constructor
  • Property
  • Method
  • Property
  • Private method
  • Static method

Settings

Theme

Generated using TypeDoc

-------------------------------------------------------------------------------- /docs/interfaces/PermissionSetVoterWeightParams.html: -------------------------------------------------------------------------------- 1 | PermissionSetVoterWeightParams | @switchboard-xyz/switchboard-v2
Options
All
  • Public
  • Public/Protected
  • All
Menu

Interface PermissionSetVoterWeightParams

Hierarchy

  • PermissionSetVoterWeightParams

Index

Properties

Properties

govProgram: PublicKey

Legend

  • Constructor
  • Property
  • Method
  • Property
  • Private method
  • Static method

Settings

Theme

Generated using TypeDoc

-------------------------------------------------------------------------------- /docs/interfaces/ProgramConfigParams.html: -------------------------------------------------------------------------------- 1 | ProgramConfigParams | @switchboard-xyz/switchboard-v2
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

  • ProgramConfigParams

Index

Properties

Properties

daoMint?: PublicKey
mint?: PublicKey

Legend

  • Constructor
  • Property
  • Method
  • Property
  • Private method
  • Static method

Settings

Theme

Generated using TypeDoc

-------------------------------------------------------------------------------- /docs/interfaces/ProgramInitParams.html: -------------------------------------------------------------------------------- 1 | ProgramInitParams | @switchboard-xyz/switchboard-v2
Options
All
  • Public
  • Public/Protected
  • All
Menu
2 |

Input parameters initializing program state.

3 |

Hierarchy

  • ProgramInitParams

Index

Properties

Properties

daoMint?: PublicKey
mint?: PublicKey

Legend

  • Constructor
  • Property
  • Method
  • Property
  • Private method
  • Static method

Settings

Theme

Generated using TypeDoc

-------------------------------------------------------------------------------- /docs/interfaces/VaultTransferParams.html: -------------------------------------------------------------------------------- 1 | VaultTransferParams | @switchboard-xyz/switchboard-v2
Options
All
  • Public
  • Public/Protected
  • All
Menu
2 |

Input parameters for transferring from Switchboard token vault.

3 |

Hierarchy

  • VaultTransferParams

Index

Properties

Properties

amount: BN

Legend

  • Constructor
  • Property
  • Method
  • Property
  • Private method
  • Static method

Settings

Theme

Generated using TypeDoc

-------------------------------------------------------------------------------- /docs/interfaces/VrfProveParams.html: -------------------------------------------------------------------------------- 1 | VrfProveParams | @switchboard-xyz/switchboard-v2
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

  • VrfProveParams

Index

Properties

oracleAccount: OracleAccount
oracleAuthority: Keypair
proof: Buffer

Legend

  • Constructor
  • Property
  • Method
  • Property
  • Private method
  • Static method

Settings

Theme

Generated using TypeDoc

-------------------------------------------------------------------------------- /docs/interfaces/VrfRequestRandomnessParams.html: -------------------------------------------------------------------------------- 1 | VrfRequestRandomnessParams | @switchboard-xyz/switchboard-v2
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

  • VrfRequestRandomnessParams

Index

Properties

authority: Keypair
payer: PublicKey
payerAuthority: Keypair

Legend

  • Constructor
  • Property
  • Method
  • Property
  • Private method
  • Static method

Settings

Theme

Generated using TypeDoc

-------------------------------------------------------------------------------- /docs/modules/OracleJob.DefiKingdomsTask.html: -------------------------------------------------------------------------------- 1 | DefiKingdomsTask | @switchboard-xyz/switchboard-v2
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Constructor
  • Property
  • Method
  • Property
  • Private method
  • Static method

Settings

Theme

Generated using TypeDoc

-------------------------------------------------------------------------------- /docs/modules/OracleJob.HttpTask.html: -------------------------------------------------------------------------------- 1 | HttpTask | @switchboard-xyz/switchboard-v2
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Constructor
  • Property
  • Method
  • Property
  • Private method
  • Static method

Settings

Theme

Generated using TypeDoc

-------------------------------------------------------------------------------- /docs/modules/OracleJob.JsonParseTask.html: -------------------------------------------------------------------------------- 1 | JsonParseTask | @switchboard-xyz/switchboard-v2
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Constructor
  • Property
  • Method
  • Property
  • Private method
  • Static method

Settings

Theme

Generated using TypeDoc

-------------------------------------------------------------------------------- /docs/modules/OracleJob.LendingRateTask.html: -------------------------------------------------------------------------------- 1 | LendingRateTask | @switchboard-xyz/switchboard-v2
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Constructor
  • Property
  • Method
  • Property
  • Private method
  • Static method

Settings

Theme

Generated using TypeDoc

-------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@switchboard-xyz/switchboard-v2", 3 | "version": "0.0.99", 4 | "description": "API wrapper for intergating with the Switchboardv2 program", 5 | "keywords": [ 6 | "oracle", 7 | "solana", 8 | "Defi" 9 | ], 10 | "repository": { 11 | "type": "git", 12 | "url": "https://github.com/switchboard-xyz/switchboardv2-api" 13 | }, 14 | "license": "MIT", 15 | "author": "mitch@switchboard.xyz", 16 | "main": "dist/sbv2.js", 17 | "types": "dist/sbv2.d.ts", 18 | "directories": { 19 | "dist": "dist", 20 | "src": "src" 21 | }, 22 | "files": [ 23 | "dist/", 24 | "src/" 25 | ], 26 | "scripts": { 27 | "docgen": "npx tsc && npx typedoc src/sbv2.ts", 28 | "build": "rm -rf dist && tsc -b", 29 | "test": "mocha --extension ts --require ts-node/register -t 1000000 tests/" 30 | }, 31 | "dependencies": { 32 | "@project-serum/anchor": "^0.24.2", 33 | "@solana/spl-governance": "^0.0.34", 34 | "@solana/spl-token": "^0.1.8", 35 | "@solana/web3.js": "^1.39.1", 36 | "@switchboard-xyz/switchboard-api": "^0.2.201", 37 | "assert": "^2.0.0", 38 | "big.js": "^6.1.1", 39 | "bs58": "^4.0.1", 40 | "buffer-layout": "^1.2.0", 41 | "chalk": "^4.1.2", 42 | "chan": "^0.6.1", 43 | "crypto-js": "^4.0.0", 44 | "dotenv": "^16.0.0", 45 | "long": "^4.0.0", 46 | "node-fetch": "^3.2.3", 47 | "protobufjs": "^6.10.2", 48 | "ts-proto": "^1.79.0", 49 | "typescript": "^4.6.3" 50 | }, 51 | "devDependencies": { 52 | "@types/big.js": "^6.0.2", 53 | "@types/long": "^4.0.1", 54 | "@types/mocha": "^9.0.0", 55 | "mocha": "^9.1.1", 56 | "ts-mocha": "^8.0.0", 57 | "typedoc": "^0.22.15", 58 | "typescript": "^4.2.4" 59 | }, 60 | "testnetDefaultChannel": "v1.4.8" 61 | } 62 | -------------------------------------------------------------------------------- /src/test/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./context"; 2 | export * from "./env"; 3 | -------------------------------------------------------------------------------- /src/test/utils.ts: -------------------------------------------------------------------------------- 1 | import { PublicKey } from "@solana/web3.js"; 2 | import { findProgramAddressSync } from "@project-serum/anchor/dist/cjs/utils/pubkey"; 3 | 4 | export const DEFAULT_PUBKEY = new PublicKey("11111111111111111111111111111111"); 5 | 6 | export const sleep = (ms: number): Promise => 7 | new Promise((s) => setTimeout(s, ms)); 8 | 9 | export async function promiseWithTimeout( 10 | ms: number, 11 | promise: Promise, 12 | timeoutError = new Error("timeoutError") 13 | ): Promise { 14 | // create a promise that rejects in milliseconds 15 | const timeout = new Promise((_, reject) => { 16 | setTimeout(() => { 17 | reject(timeoutError); 18 | }, ms); 19 | }); 20 | 21 | return Promise.race([promise, timeout]); 22 | } 23 | 24 | export const getProgramDataAddress = (programId: PublicKey): PublicKey => { 25 | return findProgramAddressSync( 26 | [programId.toBytes()], 27 | new PublicKey("BPFLoaderUpgradeab1e11111111111111111111111") 28 | )[0]; 29 | }; 30 | 31 | export const getIdlAddress = async ( 32 | programId: PublicKey 33 | ): Promise => { 34 | const base = (await PublicKey.findProgramAddress([], programId))[0]; 35 | return PublicKey.createWithSeed(base, "anchor:idl", programId); 36 | }; 37 | -------------------------------------------------------------------------------- /tests/decimal-tests.ts: -------------------------------------------------------------------------------- 1 | import "mocha"; 2 | import { strict as assert } from "assert"; 3 | import * as sbv2 from "../src/sbv2"; 4 | import Big from "big.js"; 5 | import * as anchor from "@project-serum/anchor"; 6 | 7 | describe("Decimal tests", () => { 8 | it("Converts a SwitchboardDecimal to a Big", async () => { 9 | let sbd = new sbv2.SwitchboardDecimal(new anchor.BN(8675309), 3); 10 | assert(sbd.toBig().toNumber() === 8675.309); 11 | 12 | sbd = new sbv2.SwitchboardDecimal(new anchor.BN(-5000), 3); 13 | assert(sbd.toBig().toNumber() === -5); 14 | 15 | sbd = new sbv2.SwitchboardDecimal(new anchor.BN(0), 0); 16 | assert(sbd.toBig().toNumber() === 0); 17 | }); 18 | 19 | it("Converts a Big to a SwitchboardDecimal", async () => { 20 | let b = Big(100.25); 21 | let sbd = sbv2.SwitchboardDecimal.fromBig(b); 22 | assert(sbd.mantissa.eq(new anchor.BN(10025, 10))); 23 | assert(sbd.scale === 2); 24 | 25 | b = Big(10.025); 26 | sbd = sbv2.SwitchboardDecimal.fromBig(b); 27 | assert(sbd.mantissa.eq(new anchor.BN(10025, 10))); 28 | assert(sbd.scale === 3); 29 | 30 | b = Big(0.10025); 31 | sbd = sbv2.SwitchboardDecimal.fromBig(b); 32 | assert(sbd.mantissa.eq(new anchor.BN(10025, 10))); 33 | assert(sbd.scale === 5); 34 | 35 | b = Big(0); 36 | sbd = sbv2.SwitchboardDecimal.fromBig(b); 37 | assert(sbd.mantissa.eq(new anchor.BN(0, 10))); 38 | assert(sbd.scale === 0); 39 | 40 | b = Big(-270.4); 41 | sbd = sbv2.SwitchboardDecimal.fromBig(b); 42 | assert(sbd.mantissa.eq(new anchor.BN(-2704, 10))); 43 | assert(sbd.scale === 1); 44 | }); 45 | 46 | it("Converts a SwitchboardDecimal back and forth", async () => { 47 | let big = new Big(4.847); 48 | let sbd = sbv2.SwitchboardDecimal.fromBig(big); 49 | assert(sbd.toBig().toNumber() === 4.847); 50 | 51 | sbd = sbv2.SwitchboardDecimal.fromBig(sbd.toBig()); 52 | assert(sbd.toBig().toNumber() === 4.847); 53 | 54 | }); 55 | }); 56 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "ts-node": { 3 | "compilerOptions": { 4 | "module": "commonjs", 5 | "target": "ES2019", 6 | "strictFunctionTypes": true, 7 | "noImplicitReturns": true, 8 | "noImplicitAny": true 9 | } 10 | }, 11 | "compilerOptions": { 12 | "declaration": true, 13 | "moduleResolution": "node", 14 | "module": "commonjs", 15 | "target": "ES2019", 16 | "esModuleInterop": true, 17 | "allowJs": true, 18 | "checkJs": false, 19 | "types": ["mocha", "node", "long"], 20 | "sourceMap": true, 21 | "outDir": "dist" 22 | }, 23 | "typedocOptions": { 24 | "entryPoints": ["src/sbv2.ts"], 25 | "out": "docs" 26 | }, 27 | "include": ["src/**/*.ts"], 28 | "exclude": ["node_modules"] 29 | } 30 | -------------------------------------------------------------------------------- /typedoc.json: -------------------------------------------------------------------------------- 1 | { 2 | "entryPoints": ["src/sbv2.ts"], 3 | "out": "docs" 4 | } 5 | --------------------------------------------------------------------------------