hedge-web3 0.2.20 → 0.2.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/declarations/Constants.d.ts +15 -0
  2. package/declarations/idl/pyth.d.ts +44 -24
  3. package/declarations/idl/switchboard.d.ts +47 -0
  4. package/declarations/idl/vault.d.ts +857 -157
  5. package/declarations/index.d.ts +26 -20
  6. package/declarations/instructions/closeLiquidationPoolPosition.d.ts +2 -2
  7. package/declarations/instructions/createReferralAccount.d.ts +17 -0
  8. package/declarations/instructions/createUserReferralAccount.d.ts +5 -0
  9. package/declarations/instructions/depositLiquidationPool.d.ts +2 -2
  10. package/declarations/instructions/loanVault.d.ts +2 -2
  11. package/declarations/instructions/psmEditAccount.d.ts +12 -0
  12. package/declarations/instructions/psmMintUsh.d.ts +2 -2
  13. package/declarations/instructions/psmRedeemUsh.d.ts +2 -2
  14. package/declarations/instructions/referralClaimFees.d.ts +16 -0
  15. package/declarations/instructions/transferVault.d.ts +3 -17
  16. package/declarations/instructions/updateReferralAccount.d.ts +13 -0
  17. package/declarations/instructions/updateReferralState.d.ts +20 -0
  18. package/declarations/instructions/updateVaultType.d.ts +1 -0
  19. package/declarations/state/VaultAccount.d.ts +2 -1
  20. package/lib/Constants.js +36 -1
  21. package/lib/idl/pyth.js +44 -24
  22. package/lib/idl/switchboard.js +49 -0
  23. package/lib/idl/vault.js +850 -150
  24. package/lib/index.js +26 -20
  25. package/lib/instructions/closeLiquidationPoolPosition.js +16 -3
  26. package/lib/instructions/createReferralAccount.js +80 -0
  27. package/lib/instructions/createUserReferralAccount.js +61 -0
  28. package/lib/instructions/depositLiquidationPool.js +16 -5
  29. package/lib/instructions/loanVault.js +16 -3
  30. package/lib/instructions/psmEditAccount.js +60 -0
  31. package/lib/instructions/psmMintUsh.js +14 -3
  32. package/lib/instructions/psmRedeemUsh.js +14 -3
  33. package/lib/instructions/referralClaimFees.js +84 -0
  34. package/lib/instructions/transferVault.js +10 -24
  35. package/lib/instructions/updateReferralAccount.js +50 -0
  36. package/lib/instructions/updateReferralState.js +57 -0
  37. package/lib/instructions/updateVaultType.js +10 -9
  38. package/package.json +1 -1
  39. package/src/Constants.ts +42 -0
  40. package/src/idl/pyth.ts +88 -48
  41. package/src/idl/switchboard.ts +93 -0
  42. package/src/idl/vault.ts +1762 -362
  43. package/src/index.ts +28 -24
  44. package/src/instructions/closeLiquidationPoolPosition.ts +25 -1
  45. package/src/instructions/createReferralAccount.ts +127 -0
  46. package/src/instructions/createUserReferralAccount.ts +86 -0
  47. package/src/instructions/depositLiquidationPool.ts +24 -4
  48. package/src/instructions/loanVault.ts +20 -1
  49. package/src/instructions/{psmEditAccount.rs → psmEditAccount.ts} +0 -0
  50. package/src/instructions/psmMintUsh.ts +20 -1
  51. package/src/instructions/psmRedeemUsh.ts +20 -1
  52. package/src/instructions/referralClaimFees.ts +159 -0
  53. package/src/instructions/transferVault.ts +21 -58
  54. package/src/instructions/updateReferralAccount.ts +77 -0
  55. package/src/instructions/updateReferralState.ts +93 -0
  56. package/src/instructions/updateVaultType.ts +3 -0
  57. package/src/state/VaultAccount.ts +1 -1
@@ -1,33 +1,39 @@
1
- export * from './instructions/createStakingPool';
2
- export * from './instructions/depositStakingPool';
3
- export * from './instructions/withdrawStakingPool';
4
- export * from './instructions/claimStakingPoolPosition';
5
- export * from './instructions/depositLiquidationPool';
6
- export * from './instructions/closeLiquidationPoolPosition';
1
+ export * from './Constants';
2
+ export * from './HedgeDecimal';
3
+ export * from './idl/vault';
7
4
  export * from './instructions/claimLiquidationPoolPosition';
5
+ export * from './instructions/claimStakingPoolPosition';
8
6
  export * from './instructions/closeClaimedLiquidationPoolPosition';
7
+ export * from './instructions/closeLiquidationPoolPosition';
8
+ export * from './instructions/createReferralAccount';
9
+ export * from './instructions/createStakingPool';
10
+ export * from './instructions/createUserReferralAccount';
9
11
  export * from './instructions/createVault';
10
- export * from './instructions/psmMintUsh';
11
- export * from './instructions/psmRedeemUsh';
12
+ export * from './instructions/depositLiquidationPool';
13
+ export * from './instructions/depositStakingPool';
12
14
  export * from './instructions/depositVault';
13
- export * from './instructions/withdrawVault';
15
+ export * from './instructions/initHedgeFoundation';
16
+ export * from './instructions/initHedgeFoundationTokens';
17
+ export * from './instructions/liquidateVault';
14
18
  export * from './instructions/loanVault';
15
- export * from './instructions/repayVault';
19
+ export * from './instructions/psmMintUsh';
20
+ export * from './instructions/psmRedeemUsh';
16
21
  export * from './instructions/redeemVault';
17
- export * from './instructions/liquidateVault';
22
+ export * from './instructions/referralClaimFees';
18
23
  export * from './instructions/refreshOraclePrice';
19
- export * from './instructions/initHedgeFoundation';
20
- export * from './instructions/initHedgeFoundationTokens';
24
+ export * from './instructions/repayVault';
21
25
  export * from './instructions/setHalted';
26
+ export * from './instructions/transferVault';
27
+ export * from './instructions/updateReferralAccount';
28
+ export * from './instructions/updateReferralState';
22
29
  export * from './instructions/updateVaultType';
23
- export * from './HedgeDecimal';
24
- export * from './Constants';
25
- export * from './state/VaultAccount';
26
- export * from './state/VaultHistoryEvent';
27
- export * from './state/StakingPool';
28
- export * from './state/StakingPoolPosition';
30
+ export * from './instructions/withdrawStakingPool';
31
+ export * from './instructions/withdrawVault';
29
32
  export * from './state/LiquidationPoolEra';
30
33
  export * from './state/LiquidationPoolState';
31
34
  export * from './state/LiquidationPosition';
35
+ export * from './state/StakingPool';
36
+ export * from './state/StakingPoolPosition';
37
+ export * from './state/VaultAccount';
38
+ export * from './state/VaultHistoryEvent';
32
39
  export * from './utils/getLinkedListAccounts';
33
- export * from './idl/vault';
@@ -1,5 +1,5 @@
1
1
  import { Program, Provider } from '@project-serum/anchor';
2
2
  import { PublicKey, Signer, TransactionInstruction } from '@solana/web3.js';
3
3
  import { Vault } from '../idl/vault';
4
- export declare function closeLiquidationPoolPosition(program: Program<Vault>, provider: Provider, poolPosition: PublicKey, payer: Signer, overrideStartTime?: number): Promise<PublicKey>;
5
- export declare function closeLiquidationPoolPositionInstruction(program: Program<Vault>, poolEra: PublicKey, poolPosition: PublicKey, payerPublicKey: PublicKey, payerUshAccount: PublicKey, payerAssociatedHedgeAccount: PublicKey, communityAssociatedHedgeTokenAccount: PublicKey, overrideStartTime?: number): Promise<TransactionInstruction>;
4
+ export declare function closeLiquidationPoolPosition(program: Program<Vault>, provider: Provider, poolPosition: PublicKey, payer: Signer, overrideStartTime?: number, referrer?: PublicKey): Promise<PublicKey>;
5
+ export declare function closeLiquidationPoolPositionInstruction(program: Program<Vault>, poolEra: PublicKey, poolPosition: PublicKey, payerPublicKey: PublicKey, payerUshAccount: PublicKey, payerAssociatedHedgeAccount: PublicKey, communityAssociatedHedgeTokenAccount: PublicKey, userReferralAccountPublicKey: PublicKey, referralAccountPublicKey: PublicKey, referralStatePublicKey: PublicKey, overrideStartTime?: number): Promise<TransactionInstruction>;
@@ -0,0 +1,17 @@
1
+ import { Program, Provider } from '@project-serum/anchor';
2
+ import { PublicKey, Signer, TransactionInstruction } from '@solana/web3.js';
3
+ import { Vault } from '../idl/vault';
4
+ /** @type {Function} - Creates a new referral account.
5
+ * This checks the user has enough HDG in their wallet or staked and
6
+ * then allows them to create a referral account. If they meet the PSM referral threshold,
7
+ * they will be eligible for PSM cut.
8
+ * Params:
9
+ * - program: Program<Vault> : The program instance of Hedge Vault program
10
+ * - provider: Provider : Current connection
11
+ * - payer: Signer : who we are creating the referral account for
12
+ * - poolPublicKey: PublicKey : a key to a pool position. If the position is closed or does not belong to the signer it will be ignored
13
+ * - referrer: PublicKey
14
+ * - overrideTime?: number
15
+ */
16
+ export declare function createReferralAccount(program: Program<Vault>, provider: Provider, payer: Signer, poolPosition: PublicKey, overrideTime?: number): Promise<PublicKey>;
17
+ export declare function createReferralAccountInstruction(program: Program<Vault>, payerPublicKey: PublicKey, poolPositionPublicKey: PublicKey, referralAccountPublicKey: PublicKey, referralStatePublicKey: PublicKey, hedgeMintPublicKey: PublicKey, hdgAssociatedTokenAccountPublicKey: PublicKey, userReferralAccountPublicKey: PublicKey, overrideTime?: number): Promise<TransactionInstruction>;
@@ -0,0 +1,5 @@
1
+ import { Program, Provider } from '@project-serum/anchor';
2
+ import { PublicKey, Signer, TransactionInstruction } from '@solana/web3.js';
3
+ import { Vault } from '../idl/vault';
4
+ export declare function createUserReferralAccount(program: Program<Vault>, provider: Provider, payer: Signer, referrer?: PublicKey, overrideTime?: number): Promise<PublicKey>;
5
+ export declare function createUserReferralAccountInstruction(program: Program<Vault>, payerPublicKey: PublicKey, referralAccount: PublicKey, userReferralAccount: PublicKey, overrideTime?: number): Promise<TransactionInstruction>;
@@ -2,5 +2,5 @@
2
2
  import { BN, Program, Provider } from '@project-serum/anchor';
3
3
  import { PublicKey, Signer, TransactionInstruction } from '@solana/web3.js';
4
4
  import { Vault } from '../idl/vault';
5
- export declare function depositLiquidationPool(program: Program<Vault>, provider: Provider, payer: Signer, depositAmount: BN, overrideStartTime?: number): Promise<PublicKey>;
6
- export declare function depositLiquidationPoolInstruction(program: Program<Vault>, payerPublicKey: PublicKey, payerUshAccount: PublicKey, poolPositionPublicKey: PublicKey, depositAmount: BN, overrideStartTime?: number): Promise<TransactionInstruction>;
5
+ export declare function depositLiquidationPool(program: Program<Vault>, provider: Provider, payer: Signer, depositAmount: BN, overrideStartTime?: number, referrer?: PublicKey): Promise<PublicKey>;
6
+ export declare function depositLiquidationPoolInstruction(program: Program<Vault>, payerPublicKey: PublicKey, vaultSystemStatePublicKey: PublicKey, payerUshAccount: PublicKey, poolPositionPublicKey: PublicKey, depositAmount: BN, userReferralAccountPublicKey: PublicKey, referralAccountPublicKey: PublicKey, overrideStartTime?: number): Promise<TransactionInstruction>;
@@ -2,5 +2,5 @@
2
2
  import { BN, Program, Provider } from '@project-serum/anchor';
3
3
  import { PublicKey, Signer, TransactionInstruction } from '@solana/web3.js';
4
4
  import { Vault } from '../idl/vault';
5
- export declare function loanVault(program: Program<Vault>, provider: Provider, payer: Signer, vaultPublicKey: PublicKey, loanAmount: number, overrideTime?: number): Promise<PublicKey>;
6
- export declare function loanVaultInstruction(program: Program<Vault>, payerPublicKey: PublicKey, ownerUshAccount: PublicKey, vaultPublickey: PublicKey, vaultAssociatedTokenAccount: PublicKey, historyPublicKey: PublicKey, vaultTypeAccount: PublicKey, vaultTypeAssociatedTokenAccount: PublicKey, oldSmallerPublicKey: PublicKey, newSmallerPublicKey: PublicKey, newLargerPublicKey: PublicKey, loanAmount: BN, overrideTime?: number): Promise<TransactionInstruction>;
5
+ export declare function loanVault(program: Program<Vault>, provider: Provider, payer: Signer, vaultPublicKey: PublicKey, loanAmount: number, overrideTime?: number, referrer?: PublicKey): Promise<PublicKey>;
6
+ export declare function loanVaultInstruction(program: Program<Vault>, payerPublicKey: PublicKey, ownerUshAccount: PublicKey, vaultPublickey: PublicKey, vaultAssociatedTokenAccount: PublicKey, historyPublicKey: PublicKey, vaultTypeAccount: PublicKey, vaultTypeAssociatedTokenAccount: PublicKey, oldSmallerPublicKey: PublicKey, newSmallerPublicKey: PublicKey, newLargerPublicKey: PublicKey, loanAmount: BN, referralAccountPublicKey: PublicKey, overrideTime?: number): Promise<TransactionInstruction>;
@@ -0,0 +1,12 @@
1
+ /// <reference types="bn.js" />
2
+ import { BN, Program, Provider } from '@project-serum/anchor';
3
+ import { PublicKey, Signer, TransactionInstruction } from '@solana/web3.js';
4
+ import { Vault } from '../idl/vault';
5
+ export declare enum psmStatus {
6
+ PsmEnabled = 0,
7
+ PsmDisabled = 1,
8
+ MintOnly = 2,
9
+ RedeemOnly = 3
10
+ }
11
+ export declare function psmEditAccount(program: Program<Vault>, provider: Provider, payer: Signer, collateralMint: PublicKey, mintFee: number, redeemFee: number, debtLimit: number, minSwap: number, overrideTime?: number): Promise<PublicKey>;
12
+ export declare function psmEditAccountInstruction(program: Program<Vault>, payerPublicKey: PublicKey, psmAccount: PublicKey, collateralMint: PublicKey, mintFee: BN, redeemFee: BN, debtLimit: BN, minSwap: BN, overrideTime?: number): Promise<TransactionInstruction>;
@@ -2,5 +2,5 @@
2
2
  import { BN, Program, Provider } from '@project-serum/anchor';
3
3
  import { PublicKey, Signer, TransactionInstruction } from '@solana/web3.js';
4
4
  import { Vault } from '../idl/vault';
5
- export declare function psmMintUsh(program: Program<Vault>, provider: Provider, payer: Signer, collateralMint: PublicKey, collateralAmount: number, overrideTime?: number): Promise<PublicKey>;
6
- export declare function psmMintUshInstruction(program: Program<Vault>, payerPublicKey: PublicKey, psmAccount: PublicKey, collateralMint: PublicKey, collateralAmount: BN, overrideTime?: number): Promise<TransactionInstruction>;
5
+ export declare function psmMintUsh(program: Program<Vault>, provider: Provider, payer: Signer, collateralMint: PublicKey, collateralAmount: number, overrideTime?: number, referrer?: PublicKey): Promise<PublicKey>;
6
+ export declare function psmMintUshInstruction(program: Program<Vault>, payerPublicKey: PublicKey, psmAccount: PublicKey, collateralMint: PublicKey, collateralAmount: BN, referralStatePublicKey: PublicKey, referralAccountPublicKey: PublicKey, overrideTime?: number): Promise<TransactionInstruction>;
@@ -2,5 +2,5 @@
2
2
  import { BN, Program, Provider } from '@project-serum/anchor';
3
3
  import { PublicKey, Signer, TransactionInstruction } from '@solana/web3.js';
4
4
  import { Vault } from '../idl/vault';
5
- export declare function psmRedeemUsh(program: Program<Vault>, provider: Provider, payer: Signer, collateralMint: PublicKey, ushAmount: number, overrideTime?: number): Promise<PublicKey>;
6
- export declare function psmRedeemUshInstruction(program: Program<Vault>, payerPublicKey: PublicKey, psmAccount: PublicKey, collateralMint: PublicKey, ushAmount: BN, overrideTime?: number): Promise<TransactionInstruction>;
5
+ export declare function psmRedeemUsh(program: Program<Vault>, provider: Provider, payer: Signer, collateralMint: PublicKey, ushAmount: number, overrideTime?: number, referrer?: PublicKey): Promise<PublicKey>;
6
+ export declare function psmRedeemUshInstruction(program: Program<Vault>, payerPublicKey: PublicKey, psmAccount: PublicKey, collateralMint: PublicKey, ushAmount: BN, referralStatePublicKey: PublicKey, referralAccountPublicKey: PublicKey, overrideTime?: number): Promise<TransactionInstruction>;
@@ -0,0 +1,16 @@
1
+ import { Program, Provider } from '@project-serum/anchor';
2
+ import { PublicKey, Signer, TransactionInstruction } from '@solana/web3.js';
3
+ import { Vault } from '../idl/vault';
4
+ /** @type {Function} - Allows a referrer to claims their fees.
5
+ * This checks the user has enough HDG in their wallet or staked and
6
+ * then allows them to claim earned fees. If they meet the PSM referral threshold,
7
+ * they will be eligible for PSM cut.
8
+ * Params:
9
+ * - program: Program<Vault> : The program instance of Hedge Vault program
10
+ * - provider: Provider : Current connection
11
+ * - payer: Signer : who we are creating the referral account for
12
+ * - poolPublicKey: PublicKey : a key to a pool position. If the position is closed or does not belong to the signer it will be ignored
13
+ * - referrer: PublicKey
14
+ */
15
+ export declare function referralClaimFees(program: Program<Vault>, provider: Provider, payer: Signer, poolPosition: PublicKey): Promise<PublicKey>;
16
+ export declare function referralClaimFeesInstruction(program: Program<Vault>, payerPublicKey: PublicKey, vaultSystemStatePublicKey: PublicKey, poolPositionPublicKey: PublicKey, referralAccountPublicKey: PublicKey, referralStatePublicKey: PublicKey, hedgeMintPublicKey: PublicKey, hdgAssociatedTokenAccountPublicKey: PublicKey, ushMintPublicKey: PublicKey, ushAssociatedTokenAccountPublicKey: PublicKey, communityAssociatedHedgeTokenAccountPublicKey: PublicKey, feePoolPublicKey: PublicKey, feePoolAssociatedUshTokenAccountPublicKey: PublicKey): Promise<TransactionInstruction>;
@@ -1,19 +1,5 @@
1
- /// <reference types="bn.js" />
2
- import { BN, Program, Provider } from '@project-serum/anchor';
1
+ import { Program, Provider } from '@project-serum/anchor';
3
2
  import { PublicKey, Signer, TransactionInstruction } from '@solana/web3.js';
4
3
  import { Vault } from '../idl/vault';
5
- export interface VaultTypeConfig {
6
- maxDebtExtended?: BN;
7
- minDebtPerVault?: BN;
8
- loanInitFee?: BN;
9
- emergencyModeThreshold?: BN;
10
- oracleChainlink?: PublicKey;
11
- oraclePyth?: PublicKey;
12
- oracleSwitchboard?: PublicKey;
13
- priorityPyth?: number;
14
- priorityChainlink?: number;
15
- prioritySwitchboard?: number;
16
- deprecated?: boolean;
17
- }
18
- export declare function transferVault(program: Program<Vault>, provider: Provider, payer: Signer, vaultTypeAccount: PublicKey, oracleInfoAccount: PublicKey, config: VaultTypeConfig): Promise<PublicKey>;
19
- export declare function transferVaultInstruction(program: Program<Vault>, vaultSystemStatePublicKey: PublicKey, payerPublicKey: PublicKey, vaultTypeAccount: PublicKey, oracleInfoAccount: PublicKey, vaultTypeConfig: VaultTypeConfig): Promise<TransactionInstruction>;
4
+ export declare function transferVault(program: Program<Vault>, provider: Provider, payer: Signer, vaultPublicKey: PublicKey, vaultSystemStatePublicKey: PublicKey, vaultTypeAccount: PublicKey, newOwner: PublicKey): Promise<PublicKey>;
5
+ export declare function transferVaultInstruction(vaultPublickey: PublicKey, vaultSystemStatePublicKey: PublicKey, vaultTypeAccount: PublicKey, historyPublicKey: PublicKey, vaultOwner: PublicKey, program: Program<Vault>, newOwner: PublicKey): Promise<TransactionInstruction>;
@@ -0,0 +1,13 @@
1
+ /// <reference types="bn.js" />
2
+ import { BN, Program, Provider } from '@project-serum/anchor';
3
+ import { PublicKey, Signer, TransactionInstruction } from '@solana/web3.js';
4
+ import { Vault } from '../idl/vault';
5
+ export interface ReferralAccountConfig {
6
+ setupCut?: BN;
7
+ referredUserDiscount?: BN;
8
+ stabilityCut?: BN;
9
+ psmCut?: BN;
10
+ hdgThreshold?: BN;
11
+ }
12
+ export declare function updateReferralAccount(program: Program<Vault>, provider: Provider, payer: Signer, referrer: PublicKey, config: ReferralAccountConfig): Promise<PublicKey>;
13
+ export declare function updateReferralAccountInstruction(program: Program<Vault>, vaultSystemStatePublicKey: PublicKey, referralAccountPublicKey: PublicKey, payerPublicKey: PublicKey, referralAccountConfig: ReferralAccountConfig): Promise<TransactionInstruction>;
@@ -0,0 +1,20 @@
1
+ /// <reference types="bn.js" />
2
+ import { BN, Program, Provider } from '@project-serum/anchor';
3
+ import { PublicKey, Signer, TransactionInstruction } from '@solana/web3.js';
4
+ import { Vault } from '../idl/vault';
5
+ export interface ReferralStateConfig {
6
+ setupCut?: BN;
7
+ referredUserDiscount?: BN;
8
+ stabilityCut?: BN;
9
+ psmCut?: BN;
10
+ maxSetupCut?: BN;
11
+ maxReferredDiscount?: BN;
12
+ maxStabilityCut?: BN;
13
+ maxPsmCut?: BN;
14
+ hdgThreshold?: BN;
15
+ hdgPsmThreshold?: BN;
16
+ referralThreshold?: BN;
17
+ referralEnabled?: boolean;
18
+ }
19
+ export declare function updateReferralState(program: Program<Vault>, provider: Provider, payer: Signer, config: ReferralStateConfig): Promise<PublicKey>;
20
+ export declare function updateReferralStateInstruction(program: Program<Vault>, vaultSystemStatePublicKey: PublicKey, referralStatePublicKey: PublicKey, payerPublicKey: PublicKey, referralStateConfig: ReferralStateConfig): Promise<TransactionInstruction>;
@@ -6,6 +6,7 @@ export interface VaultTypeConfig {
6
6
  maxDebtExtended?: BN;
7
7
  minDebtPerVault?: BN;
8
8
  loanInitFee?: BN;
9
+ interestRatePerSecond?: BN;
9
10
  emergencyModeThreshold?: BN;
10
11
  oracleChainlink?: PublicKey;
11
12
  oraclePyth?: PublicKey;
@@ -11,7 +11,8 @@ export declare class VaultAccount {
11
11
  publicKey: PublicKey;
12
12
  /** The public key of the vault owner. */
13
13
  vaultOwner: PublicKey;
14
- /** The public key of the vault owner. */ pdaSalt: string;
14
+ /** The salt used to derive the PDA for the vault. */
15
+ pdaSalt: string;
15
16
  /** The deposited collateral of the vault (in SOL Lamports). */
16
17
  deposited: BN;
17
18
  /** The outstanding debt of the vault (in USH Lamports). Denormalized to time 0. */
package/lib/Constants.js CHANGED
@@ -9,7 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.findAssociatedTokenAddress = exports.findVaultAddress = exports.getVaultTypeOracleAccountPublicKey = exports.getVaultTypeAccountPublicKey = exports.getPoolPublicKeyForMint = exports.getHedgeMintPublicKey = exports.getVaultSystemStatePublicKey = exports.getUshMintPublicKey = exports.getLiquidationPoolUshAccountPublicKey = exports.getLiquidationPoolStatePublicKey = exports.CHAINLINK_PROGRAM_ID = exports.CHAINLINK_SOL_USD_PUBLICKEY = exports.CHAINLINK_SOL_USD_ID = exports.HEDGE_PROGRAM_PUBLICKEY = exports.HEDGE_PROGRAM_ID = void 0;
12
+ exports.findAssociatedTokenAddress = exports.findVaultAddress = exports.getVaultTypeOracleAccountPublicKey = exports.getVaultTypeAccountPublicKey = exports.getPoolPublicKeyForMint = exports.getHedgeMintPublicKey = exports.getUserReferralAccountPublicKey = exports.getReferralAccountPublicKey = exports.getReferralStatePublicKey = exports.getVaultSystemStatePublicKey = exports.getUshMintPublicKey = exports.getLiquidationPoolUshAccountPublicKey = exports.getLiquidationPoolStatePublicKey = exports.CHAINLINK_PROGRAM_ID = exports.CHAINLINK_SOL_USD_PUBLICKEY = exports.CHAINLINK_SOL_USD_ID = exports.HEDGE_PROGRAM_PUBLICKEY = exports.HEDGE_PROGRAM_ID = void 0;
13
13
  const spl_token_1 = require("@solana/spl-token");
14
14
  const web3_js_1 = require("@solana/web3.js");
15
15
  exports.HEDGE_PROGRAM_ID = 'HedgeEohwU6RqokrvPU4Hb6XKPub8NuKbnPmY7FoMMtN';
@@ -61,6 +61,41 @@ function getVaultSystemStatePublicKey() {
61
61
  });
62
62
  }
63
63
  exports.getVaultSystemStatePublicKey = getVaultSystemStatePublicKey;
64
+ /**
65
+ *
66
+ * @returns The Referral State public key
67
+ */
68
+ function getReferralStatePublicKey() {
69
+ return __awaiter(this, void 0, void 0, function* () {
70
+ const [publicKey] = yield web3_js_1.PublicKey.findProgramAddress([enc.encode('ReferralStateV1')], exports.HEDGE_PROGRAM_PUBLICKEY);
71
+ return publicKey;
72
+ });
73
+ }
74
+ exports.getReferralStatePublicKey = getReferralStatePublicKey;
75
+ /**
76
+ *
77
+ * @returns The Referral State public key based off the owner's public key
78
+ */
79
+ function getReferralAccountPublicKey(ownerPublicKey) {
80
+ return __awaiter(this, void 0, void 0, function* () {
81
+ const strToEncode = ownerPublicKey.toBuffer(); //.substring(0, 28)
82
+ const [publicKey] = yield web3_js_1.PublicKey.findProgramAddress([enc.encode('refer_acct'), strToEncode], exports.HEDGE_PROGRAM_PUBLICKEY);
83
+ return publicKey;
84
+ });
85
+ }
86
+ exports.getReferralAccountPublicKey = getReferralAccountPublicKey;
87
+ /**
88
+ *
89
+ * @returns The user referral account public key based off the user's public key
90
+ */
91
+ function getUserReferralAccountPublicKey(ownerPublicKey) {
92
+ return __awaiter(this, void 0, void 0, function* () {
93
+ const strToEncode = ownerPublicKey.toBuffer(); //.substring(0, 28)
94
+ const [publicKey] = yield web3_js_1.PublicKey.findProgramAddress([enc.encode('user_ref'), strToEncode], exports.HEDGE_PROGRAM_PUBLICKEY);
95
+ return publicKey;
96
+ });
97
+ }
98
+ exports.getUserReferralAccountPublicKey = getUserReferralAccountPublicKey;
64
99
  /**
65
100
  *
66
101
  * @returns The HDG mint public key
package/lib/idl/pyth.js CHANGED
@@ -8,19 +8,9 @@ exports.IDL = {
8
8
  {
9
9
  "name": "initialize",
10
10
  "accounts": [
11
- {
12
- "name": "payer",
13
- "isMut": true,
14
- "isSigner": true
15
- },
16
11
  {
17
12
  "name": "price",
18
13
  "isMut": true,
19
- "isSigner": true
20
- },
21
- {
22
- "name": "systemProgram",
23
- "isMut": false,
24
14
  "isSigner": false
25
15
  }
26
16
  ],
@@ -56,27 +46,57 @@ exports.IDL = {
56
46
  ]
57
47
  }
58
48
  ],
59
- "accounts": [
49
+ "types": [
60
50
  {
61
- "name": "priceWrapper",
51
+ "name": "PriceStatus",
62
52
  "type": {
63
- "kind": "struct",
64
- "fields": [
53
+ "kind": "enum",
54
+ "variants": [
55
+ {
56
+ "name": "Unknown"
57
+ },
58
+ {
59
+ "name": "Trading"
60
+ },
65
61
  {
66
- "name": "price",
67
- "type": {
68
- "defined": "Price"
69
- }
62
+ "name": "Halted"
63
+ },
64
+ {
65
+ "name": "Auction"
70
66
  }
71
67
  ]
72
68
  }
73
- }
74
- ],
75
- "errors": [
69
+ },
70
+ {
71
+ "name": "CorpAction",
72
+ "type": {
73
+ "kind": "enum",
74
+ "variants": [
75
+ {
76
+ "name": "NoCorpAct"
77
+ }
78
+ ]
79
+ }
80
+ },
76
81
  {
77
- "code": 6000,
78
- "name": "InvalidTradingStatus",
79
- "msg": "invalid trading status"
82
+ "name": "PriceType",
83
+ "type": {
84
+ "kind": "enum",
85
+ "variants": [
86
+ {
87
+ "name": "Unknown"
88
+ },
89
+ {
90
+ "name": "Price"
91
+ },
92
+ {
93
+ "name": "TWAP"
94
+ },
95
+ {
96
+ "name": "Volatility"
97
+ }
98
+ ]
99
+ }
80
100
  }
81
101
  ]
82
102
  };
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IDL = void 0;
4
+ exports.IDL = {
5
+ "version": "0.1.0",
6
+ "name": "switchboard",
7
+ "instructions": [
8
+ {
9
+ "name": "initialize",
10
+ "accounts": [
11
+ {
12
+ "name": "aggregator",
13
+ "isMut": true,
14
+ "isSigner": false
15
+ }
16
+ ],
17
+ "args": [
18
+ {
19
+ "name": "price",
20
+ "type": "u64"
21
+ },
22
+ {
23
+ "name": "scale",
24
+ "type": "u16"
25
+ }
26
+ ]
27
+ },
28
+ {
29
+ "name": "setPrice",
30
+ "accounts": [
31
+ {
32
+ "name": "aggregator",
33
+ "isMut": true,
34
+ "isSigner": false
35
+ }
36
+ ],
37
+ "args": [
38
+ {
39
+ "name": "price",
40
+ "type": "u64"
41
+ },
42
+ {
43
+ "name": "scale",
44
+ "type": "u16"
45
+ }
46
+ ]
47
+ }
48
+ ]
49
+ };