@epicentral/sos-sdk 0.9.0-beta

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 (113) hide show
  1. package/.env.example +1 -0
  2. package/AGENTS.md +7 -0
  3. package/LICENSE +21 -0
  4. package/README.md +568 -0
  5. package/accounts/fetchers.ts +196 -0
  6. package/accounts/list.ts +184 -0
  7. package/accounts/pdas.ts +325 -0
  8. package/accounts/resolve-option.ts +104 -0
  9. package/client/lookup-table.ts +114 -0
  10. package/client/program.ts +13 -0
  11. package/client/types.ts +9 -0
  12. package/generated/accounts/collateralPool.ts +217 -0
  13. package/generated/accounts/config.ts +156 -0
  14. package/generated/accounts/escrowState.ts +183 -0
  15. package/generated/accounts/index.ts +20 -0
  16. package/generated/accounts/lenderPosition.ts +211 -0
  17. package/generated/accounts/makerCollateralShare.ts +229 -0
  18. package/generated/accounts/marketDataAccount.ts +176 -0
  19. package/generated/accounts/optionAccount.ts +247 -0
  20. package/generated/accounts/optionPool.ts +285 -0
  21. package/generated/accounts/poolLoan.ts +232 -0
  22. package/generated/accounts/positionAccount.ts +201 -0
  23. package/generated/accounts/vault.ts +366 -0
  24. package/generated/accounts/writerPosition.ts +327 -0
  25. package/generated/errors/index.ts +9 -0
  26. package/generated/errors/optionProgram.ts +476 -0
  27. package/generated/index.ts +13 -0
  28. package/generated/instructions/acceptAdmin.ts +230 -0
  29. package/generated/instructions/autoExerciseAllExpired.ts +685 -0
  30. package/generated/instructions/autoExerciseExpired.ts +754 -0
  31. package/generated/instructions/borrowFromPool.ts +619 -0
  32. package/generated/instructions/buyFromPool.ts +761 -0
  33. package/generated/instructions/closeLongToPool.ts +762 -0
  34. package/generated/instructions/closeOption.ts +235 -0
  35. package/generated/instructions/createEscrowV2.ts +518 -0
  36. package/generated/instructions/depositCollateral.ts +624 -0
  37. package/generated/instructions/depositToPosition.ts +429 -0
  38. package/generated/instructions/index.ts +47 -0
  39. package/generated/instructions/initCollateralPool.ts +513 -0
  40. package/generated/instructions/initConfig.ts +279 -0
  41. package/generated/instructions/initOptionPool.ts +587 -0
  42. package/generated/instructions/initializeMarketData.ts +359 -0
  43. package/generated/instructions/liquidateWriterPosition.ts +750 -0
  44. package/generated/instructions/liquidateWriterPositionRescue.ts +623 -0
  45. package/generated/instructions/omlpCreateVault.ts +553 -0
  46. package/generated/instructions/omlpUpdateFeeWallet.ts +473 -0
  47. package/generated/instructions/omlpUpdateInterestModel.ts +322 -0
  48. package/generated/instructions/omlpUpdateLiquidationThreshold.ts +304 -0
  49. package/generated/instructions/omlpUpdateMaintenanceBuffer.ts +304 -0
  50. package/generated/instructions/omlpUpdateMaxBorrowCap.ts +304 -0
  51. package/generated/instructions/omlpUpdateMaxLeverage.ts +304 -0
  52. package/generated/instructions/omlpUpdateProtocolFee.ts +304 -0
  53. package/generated/instructions/omlpUpdateSupplyLimit.ts +304 -0
  54. package/generated/instructions/optionExercise.ts +617 -0
  55. package/generated/instructions/optionMint.ts +1373 -0
  56. package/generated/instructions/optionValidate.ts +302 -0
  57. package/generated/instructions/repayPoolLoan.ts +558 -0
  58. package/generated/instructions/repayPoolLoanFromCollateral.ts +514 -0
  59. package/generated/instructions/repayPoolLoanFromWallet.ts +542 -0
  60. package/generated/instructions/settleMakerCollateral.ts +509 -0
  61. package/generated/instructions/syncWriterPosition.ts +206 -0
  62. package/generated/instructions/transferAdmin.ts +245 -0
  63. package/generated/instructions/unwindWriterUnsold.ts +764 -0
  64. package/generated/instructions/updateImpliedVolatility.ts +226 -0
  65. package/generated/instructions/updateMarketData.ts +315 -0
  66. package/generated/instructions/withdrawFromPosition.ts +405 -0
  67. package/generated/instructions/writeToPool.ts +619 -0
  68. package/generated/programs/index.ts +9 -0
  69. package/generated/programs/optionProgram.ts +1144 -0
  70. package/generated/shared/index.ts +164 -0
  71. package/generated/types/impliedVolatilityUpdated.ts +73 -0
  72. package/generated/types/index.ts +28 -0
  73. package/generated/types/liquidationExecuted.ts +73 -0
  74. package/generated/types/liquidationRescueEvent.ts +82 -0
  75. package/generated/types/marketDataInitialized.ts +61 -0
  76. package/generated/types/marketDataUpdated.ts +69 -0
  77. package/generated/types/optionClosed.ts +56 -0
  78. package/generated/types/optionExercised.ts +62 -0
  79. package/generated/types/optionExpired.ts +49 -0
  80. package/generated/types/optionMinted.ts +78 -0
  81. package/generated/types/optionType.ts +38 -0
  82. package/generated/types/optionValidated.ts +82 -0
  83. package/generated/types/poolLoanCreated.ts +74 -0
  84. package/generated/types/poolLoanRepaid.ts +74 -0
  85. package/generated/types/positionDeposited.ts +73 -0
  86. package/generated/types/positionWithdrawn.ts +81 -0
  87. package/generated/types/protocolFeeUpdated.ts +69 -0
  88. package/generated/types/vaultCreated.ts +60 -0
  89. package/generated/types/vaultFeeWalletUpdated.ts +67 -0
  90. package/generated/types/vaultInterestModelUpdated.ts +77 -0
  91. package/generated/types/vaultLiquidationThresholdUpdated.ts +69 -0
  92. package/index.ts +68 -0
  93. package/long/builders.ts +690 -0
  94. package/long/exercise.ts +123 -0
  95. package/long/preflight.ts +214 -0
  96. package/long/quotes.ts +48 -0
  97. package/long/remaining-accounts.ts +111 -0
  98. package/omlp/builders.ts +94 -0
  99. package/omlp/service.ts +136 -0
  100. package/oracle/switchboard.ts +315 -0
  101. package/package.json +34 -0
  102. package/shared/amounts.ts +53 -0
  103. package/shared/balances.ts +57 -0
  104. package/shared/errors.ts +12 -0
  105. package/shared/remaining-accounts.ts +41 -0
  106. package/shared/trade-config.ts +27 -0
  107. package/shared/transactions.ts +121 -0
  108. package/short/builders.ts +874 -0
  109. package/short/close-option.ts +34 -0
  110. package/short/pool.ts +189 -0
  111. package/short/preflight.ts +619 -0
  112. package/tsconfig.json +13 -0
  113. package/wsol/instructions.ts +247 -0
@@ -0,0 +1,34 @@
1
+ import { getCloseOptionInstruction } from "../generated/instructions";
2
+ import type { Instruction } from "@solana/kit";
3
+ import { toAddress } from "../client/program";
4
+ import type { AddressLike, BuiltTransaction } from "../client/types";
5
+
6
+ export interface BuildCloseOptionParams {
7
+ optionAccount: AddressLike;
8
+ optionMint: AddressLike;
9
+ makerOptionAccount: AddressLike;
10
+ maker: AddressLike;
11
+ tokenProgram?: AddressLike;
12
+ }
13
+
14
+ export function buildCloseOptionInstruction(
15
+ params: BuildCloseOptionParams
16
+ ): Instruction<string> {
17
+ return getCloseOptionInstruction({
18
+ optionAccount: toAddress(params.optionAccount),
19
+ optionMint: toAddress(params.optionMint),
20
+ makerOptionAccount: toAddress(params.makerOptionAccount),
21
+ maker: toAddress(params.maker) as any,
22
+ tokenProgram: params.tokenProgram ? toAddress(params.tokenProgram) : undefined,
23
+ });
24
+ }
25
+
26
+ /**
27
+ * Builds the close-option transaction instruction set for a maker.
28
+ */
29
+ export function buildCloseOptionTransaction(
30
+ params: BuildCloseOptionParams
31
+ ): BuiltTransaction {
32
+ const instruction = buildCloseOptionInstruction(params);
33
+ return { instructions: [instruction] };
34
+ }
package/short/pool.ts ADDED
@@ -0,0 +1,189 @@
1
+ import {
2
+ getBorrowFromPoolInstructionAsync,
3
+ getRepayPoolLoanInstructionAsync,
4
+ getRepayPoolLoanFromCollateralInstructionAsync,
5
+ getRepayPoolLoanFromWalletInstructionAsync,
6
+ } from "../generated/instructions";
7
+ import type { Instruction } from "@solana/kit";
8
+ import { toAddress } from "../client/program";
9
+ import type { AddressLike, BuiltTransaction } from "../client/types";
10
+ import { assertNonNegativeAmount, assertPositiveAmount } from "../shared/amounts";
11
+
12
+ export interface BuildBorrowFromPoolParams {
13
+ vault: AddressLike;
14
+ vaultTokenAccount: AddressLike;
15
+ escrowTokenAccount: AddressLike;
16
+ collateralMint: AddressLike;
17
+ /** Option pool PDA for the market (links the writer position). */
18
+ optionPool: AddressLike;
19
+ /** Writer position PDA: `["writer_position", optionPool, maker]`. */
20
+ writerPosition: AddressLike;
21
+ maker: AddressLike;
22
+ nonce: bigint | number;
23
+ borrowAmount: bigint | number;
24
+ collateralAmount: bigint | number;
25
+ poolLoan?: AddressLike;
26
+ escrowState?: AddressLike;
27
+ escrowAuthority?: AddressLike;
28
+ tokenProgram?: AddressLike;
29
+ systemProgram?: AddressLike;
30
+ }
31
+
32
+ export interface BuildRepayPoolLoanParams {
33
+ poolLoan: AddressLike;
34
+ vault: AddressLike;
35
+ vaultTokenAccount: AddressLike;
36
+ escrowState: AddressLike;
37
+ escrowTokenAccount: AddressLike;
38
+ makerTokenAccount: AddressLike;
39
+ feeWalletTokenAccount: AddressLike;
40
+ optionPool: AddressLike;
41
+ writerPosition: AddressLike;
42
+ maker: AddressLike;
43
+ escrowAuthority?: AddressLike;
44
+ tokenProgram?: AddressLike;
45
+ }
46
+
47
+ export interface BuildRepayPoolLoanFromCollateralParams {
48
+ poolLoan: AddressLike;
49
+ vault: AddressLike;
50
+ vaultTokenAccount: AddressLike;
51
+ optionAccount: AddressLike;
52
+ optionPool: AddressLike;
53
+ collateralVault: AddressLike;
54
+ writerPosition: AddressLike;
55
+ feeWalletTokenAccount: AddressLike;
56
+ maker: AddressLike;
57
+ collateralPool?: AddressLike;
58
+ tokenProgram?: AddressLike;
59
+ }
60
+
61
+ export async function buildBorrowFromPoolInstruction(
62
+ params: BuildBorrowFromPoolParams
63
+ ): Promise<Instruction<string>> {
64
+ assertNonNegativeAmount(params.nonce, "nonce");
65
+ assertPositiveAmount(params.borrowAmount, "borrowAmount");
66
+ assertPositiveAmount(params.collateralAmount, "collateralAmount");
67
+
68
+ return getBorrowFromPoolInstructionAsync({
69
+ poolLoan: params.poolLoan ? toAddress(params.poolLoan) : undefined,
70
+ vault: toAddress(params.vault),
71
+ vaultTokenAccount: toAddress(params.vaultTokenAccount),
72
+ escrowState: params.escrowState ? toAddress(params.escrowState) : undefined,
73
+ escrowAuthority: params.escrowAuthority ? toAddress(params.escrowAuthority) : undefined,
74
+ escrowTokenAccount: toAddress(params.escrowTokenAccount),
75
+ collateralMint: toAddress(params.collateralMint),
76
+ optionPool: toAddress(params.optionPool),
77
+ writerPosition: toAddress(params.writerPosition),
78
+ maker: toAddress(params.maker) as any,
79
+ tokenProgram: params.tokenProgram ? toAddress(params.tokenProgram) : undefined,
80
+ systemProgram: params.systemProgram ? toAddress(params.systemProgram) : undefined,
81
+ nonce: params.nonce,
82
+ borrowAmount: params.borrowAmount,
83
+ collateralAmount: params.collateralAmount,
84
+ });
85
+ }
86
+
87
+ /**
88
+ * Builds the borrow transaction instruction set for pool leverage.
89
+ */
90
+ export async function buildBorrowFromPoolTransaction(
91
+ params: BuildBorrowFromPoolParams
92
+ ): Promise<BuiltTransaction> {
93
+ const instruction = await buildBorrowFromPoolInstruction(params);
94
+ return { instructions: [instruction] };
95
+ }
96
+
97
+ export async function buildRepayPoolLoanInstruction(
98
+ params: BuildRepayPoolLoanParams
99
+ ): Promise<Instruction<string>> {
100
+ return getRepayPoolLoanInstructionAsync({
101
+ poolLoan: toAddress(params.poolLoan),
102
+ vault: toAddress(params.vault),
103
+ vaultTokenAccount: toAddress(params.vaultTokenAccount),
104
+ escrowState: toAddress(params.escrowState),
105
+ escrowAuthority: params.escrowAuthority
106
+ ? toAddress(params.escrowAuthority)
107
+ : undefined,
108
+ escrowTokenAccount: toAddress(params.escrowTokenAccount),
109
+ makerTokenAccount: toAddress(params.makerTokenAccount),
110
+ feeWalletTokenAccount: toAddress(params.feeWalletTokenAccount),
111
+ optionPool: toAddress(params.optionPool),
112
+ writerPosition: toAddress(params.writerPosition),
113
+ maker: toAddress(params.maker) as any,
114
+ tokenProgram: params.tokenProgram ? toAddress(params.tokenProgram) : undefined,
115
+ });
116
+ }
117
+
118
+ /**
119
+ * Builds the repay loan instruction set.
120
+ */
121
+ export async function buildRepayPoolLoanTransaction(
122
+ params: BuildRepayPoolLoanParams
123
+ ): Promise<BuiltTransaction> {
124
+ const instruction = await buildRepayPoolLoanInstruction(params);
125
+ return { instructions: [instruction] };
126
+ }
127
+
128
+ /**
129
+ * Repay a pool loan entirely from maker's wallet (no escrow used).
130
+ * Use when standard repay fails with InsufficientEscrowBalance (stuck loan).
131
+ */
132
+ export async function buildRepayPoolLoanFromWalletInstruction(
133
+ params: BuildRepayPoolLoanParams
134
+ ): Promise<Instruction<string>> {
135
+ return getRepayPoolLoanFromWalletInstructionAsync({
136
+ poolLoan: toAddress(params.poolLoan),
137
+ vault: toAddress(params.vault),
138
+ vaultTokenAccount: toAddress(params.vaultTokenAccount),
139
+ escrowState: toAddress(params.escrowState),
140
+ escrowAuthority: params.escrowAuthority
141
+ ? toAddress(params.escrowAuthority)
142
+ : undefined,
143
+ escrowTokenAccount: toAddress(params.escrowTokenAccount),
144
+ makerTokenAccount: toAddress(params.makerTokenAccount),
145
+ feeWalletTokenAccount: toAddress(params.feeWalletTokenAccount),
146
+ optionPool: toAddress(params.optionPool),
147
+ writerPosition: toAddress(params.writerPosition),
148
+ maker: toAddress(params.maker) as any,
149
+ tokenProgram: params.tokenProgram ? toAddress(params.tokenProgram) : undefined,
150
+ });
151
+ }
152
+
153
+ /**
154
+ * Builds the repay-from-wallet transaction (stuck loan recovery).
155
+ */
156
+ export async function buildRepayPoolLoanFromWalletTransaction(
157
+ params: BuildRepayPoolLoanParams
158
+ ): Promise<BuiltTransaction> {
159
+ const instruction = await buildRepayPoolLoanFromWalletInstruction(params);
160
+ return { instructions: [instruction] };
161
+ }
162
+
163
+ export async function buildRepayPoolLoanFromCollateralInstruction(
164
+ params: BuildRepayPoolLoanFromCollateralParams
165
+ ): Promise<Instruction<string>> {
166
+ return getRepayPoolLoanFromCollateralInstructionAsync({
167
+ poolLoan: toAddress(params.poolLoan),
168
+ vault: toAddress(params.vault),
169
+ vaultTokenAccount: toAddress(params.vaultTokenAccount),
170
+ optionAccount: toAddress(params.optionAccount),
171
+ optionPool: toAddress(params.optionPool),
172
+ collateralPool: params.collateralPool ? toAddress(params.collateralPool) : undefined,
173
+ collateralVault: toAddress(params.collateralVault),
174
+ writerPosition: toAddress(params.writerPosition),
175
+ feeWalletTokenAccount: toAddress(params.feeWalletTokenAccount),
176
+ maker: toAddress(params.maker) as any,
177
+ tokenProgram: params.tokenProgram ? toAddress(params.tokenProgram) : undefined,
178
+ });
179
+ }
180
+
181
+ /**
182
+ * Builds the repay-from-collateral instruction set.
183
+ */
184
+ export async function buildRepayPoolLoanFromCollateralTransaction(
185
+ params: BuildRepayPoolLoanFromCollateralParams
186
+ ): Promise<BuiltTransaction> {
187
+ const instruction = await buildRepayPoolLoanFromCollateralInstruction(params);
188
+ return { instructions: [instruction] };
189
+ }