@jpool/bond-sdk 0.9.0-next.8 → 0.9.0-next.9
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.
- package/dist/index.d.mts +5 -29
- package/dist/index.d.ts +5 -29
- package/dist/index.js +144 -103
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +145 -105
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -1227,17 +1227,6 @@ type Jbond = {
|
|
|
1227
1227
|
];
|
|
1228
1228
|
"type": "u64";
|
|
1229
1229
|
},
|
|
1230
|
-
{
|
|
1231
|
-
"name": "status";
|
|
1232
|
-
"docs": [
|
|
1233
|
-
"Current status of the bond"
|
|
1234
|
-
];
|
|
1235
|
-
"type": {
|
|
1236
|
-
"defined": {
|
|
1237
|
-
"name": "bondStatus";
|
|
1238
|
-
};
|
|
1239
|
-
};
|
|
1240
|
-
},
|
|
1241
1230
|
{
|
|
1242
1231
|
"name": "sessionStartTs";
|
|
1243
1232
|
"docs": [
|
|
@@ -1262,23 +1251,6 @@ type Jbond = {
|
|
|
1262
1251
|
];
|
|
1263
1252
|
};
|
|
1264
1253
|
},
|
|
1265
|
-
{
|
|
1266
|
-
"name": "bondStatus";
|
|
1267
|
-
"type": {
|
|
1268
|
-
"kind": "enum";
|
|
1269
|
-
"variants": [
|
|
1270
|
-
{
|
|
1271
|
-
"name": "active";
|
|
1272
|
-
},
|
|
1273
|
-
{
|
|
1274
|
-
"name": "inactive";
|
|
1275
|
-
},
|
|
1276
|
-
{
|
|
1277
|
-
"name": "pending";
|
|
1278
|
-
}
|
|
1279
|
-
];
|
|
1280
|
-
};
|
|
1281
|
-
},
|
|
1282
1254
|
{
|
|
1283
1255
|
"name": "bondType";
|
|
1284
1256
|
"docs": [
|
|
@@ -1823,8 +1795,12 @@ declare class JBondClient {
|
|
|
1823
1795
|
/**
|
|
1824
1796
|
* Get all bond states with total collected collateral
|
|
1825
1797
|
*/
|
|
1826
|
-
getAllBondStates(
|
|
1798
|
+
getAllBondStates(bondType: BondType): Promise<Array<[BondState, BondStateStats]>>;
|
|
1799
|
+
/**
|
|
1800
|
+
* Get session status for bond state
|
|
1801
|
+
*/
|
|
1827
1802
|
private getBondStateSessionStatus;
|
|
1803
|
+
/** Get all validator bonds for a given bond state */
|
|
1828
1804
|
private getValidatorBondsByState;
|
|
1829
1805
|
/**
|
|
1830
1806
|
* Fetch validator bond data or null if not found
|
package/dist/index.d.ts
CHANGED
|
@@ -1227,17 +1227,6 @@ type Jbond = {
|
|
|
1227
1227
|
];
|
|
1228
1228
|
"type": "u64";
|
|
1229
1229
|
},
|
|
1230
|
-
{
|
|
1231
|
-
"name": "status";
|
|
1232
|
-
"docs": [
|
|
1233
|
-
"Current status of the bond"
|
|
1234
|
-
];
|
|
1235
|
-
"type": {
|
|
1236
|
-
"defined": {
|
|
1237
|
-
"name": "bondStatus";
|
|
1238
|
-
};
|
|
1239
|
-
};
|
|
1240
|
-
},
|
|
1241
1230
|
{
|
|
1242
1231
|
"name": "sessionStartTs";
|
|
1243
1232
|
"docs": [
|
|
@@ -1262,23 +1251,6 @@ type Jbond = {
|
|
|
1262
1251
|
];
|
|
1263
1252
|
};
|
|
1264
1253
|
},
|
|
1265
|
-
{
|
|
1266
|
-
"name": "bondStatus";
|
|
1267
|
-
"type": {
|
|
1268
|
-
"kind": "enum";
|
|
1269
|
-
"variants": [
|
|
1270
|
-
{
|
|
1271
|
-
"name": "active";
|
|
1272
|
-
},
|
|
1273
|
-
{
|
|
1274
|
-
"name": "inactive";
|
|
1275
|
-
},
|
|
1276
|
-
{
|
|
1277
|
-
"name": "pending";
|
|
1278
|
-
}
|
|
1279
|
-
];
|
|
1280
|
-
};
|
|
1281
|
-
},
|
|
1282
1254
|
{
|
|
1283
1255
|
"name": "bondType";
|
|
1284
1256
|
"docs": [
|
|
@@ -1823,8 +1795,12 @@ declare class JBondClient {
|
|
|
1823
1795
|
/**
|
|
1824
1796
|
* Get all bond states with total collected collateral
|
|
1825
1797
|
*/
|
|
1826
|
-
getAllBondStates(
|
|
1798
|
+
getAllBondStates(bondType: BondType): Promise<Array<[BondState, BondStateStats]>>;
|
|
1799
|
+
/**
|
|
1800
|
+
* Get session status for bond state
|
|
1801
|
+
*/
|
|
1827
1802
|
private getBondStateSessionStatus;
|
|
1803
|
+
/** Get all validator bonds for a given bond state */
|
|
1828
1804
|
private getValidatorBondsByState;
|
|
1829
1805
|
/**
|
|
1830
1806
|
* Fetch validator bond data or null if not found
|
package/dist/index.js
CHANGED
|
@@ -4615,6 +4615,40 @@ var SessionStatus = /* @__PURE__ */ ((SessionStatus2) => {
|
|
|
4615
4615
|
// src/utils/index.ts
|
|
4616
4616
|
init_cjs_shims();
|
|
4617
4617
|
|
|
4618
|
+
// src/utils/enum-utils.ts
|
|
4619
|
+
init_cjs_shims();
|
|
4620
|
+
function getVariant(v) {
|
|
4621
|
+
const key = Object.keys(v)[0];
|
|
4622
|
+
return [key, v[key]];
|
|
4623
|
+
}
|
|
4624
|
+
function variantArgs(payload) {
|
|
4625
|
+
if (Array.isArray(payload)) {
|
|
4626
|
+
return payload;
|
|
4627
|
+
}
|
|
4628
|
+
if (payload && typeof payload === "object") {
|
|
4629
|
+
const numericKeys = Object.keys(payload).filter((k) => String(+k) === k);
|
|
4630
|
+
if (numericKeys.length) {
|
|
4631
|
+
return numericKeys.sort((a, b) => +a - +b).map((k) => payload[k]);
|
|
4632
|
+
}
|
|
4633
|
+
return [payload];
|
|
4634
|
+
}
|
|
4635
|
+
return [payload];
|
|
4636
|
+
}
|
|
4637
|
+
function matchVariant(v, handlers) {
|
|
4638
|
+
const [k, data] = getVariant(v);
|
|
4639
|
+
const h = handlers[k];
|
|
4640
|
+
if (!h) {
|
|
4641
|
+
throw new Error(`Unhandled variant: ${k}`);
|
|
4642
|
+
}
|
|
4643
|
+
return h(...variantArgs(data));
|
|
4644
|
+
}
|
|
4645
|
+
function variantKey(v) {
|
|
4646
|
+
return Object.keys(v)[0];
|
|
4647
|
+
}
|
|
4648
|
+
function sameVariant(a, b) {
|
|
4649
|
+
return variantKey(a) === variantKey(b);
|
|
4650
|
+
}
|
|
4651
|
+
|
|
4618
4652
|
// src/utils/wallet.ts
|
|
4619
4653
|
init_cjs_shims();
|
|
4620
4654
|
function isVersionedTransaction(tx) {
|
|
@@ -6000,17 +6034,6 @@ var jbond_default = {
|
|
|
6000
6034
|
],
|
|
6001
6035
|
type: "u64"
|
|
6002
6036
|
},
|
|
6003
|
-
{
|
|
6004
|
-
name: "status",
|
|
6005
|
-
docs: [
|
|
6006
|
-
"Current status of the bond"
|
|
6007
|
-
],
|
|
6008
|
-
type: {
|
|
6009
|
-
defined: {
|
|
6010
|
-
name: "BondStatus"
|
|
6011
|
-
}
|
|
6012
|
-
}
|
|
6013
|
-
},
|
|
6014
6037
|
{
|
|
6015
6038
|
name: "session_start_ts",
|
|
6016
6039
|
docs: [
|
|
@@ -6035,23 +6058,6 @@ var jbond_default = {
|
|
|
6035
6058
|
]
|
|
6036
6059
|
}
|
|
6037
6060
|
},
|
|
6038
|
-
{
|
|
6039
|
-
name: "BondStatus",
|
|
6040
|
-
type: {
|
|
6041
|
-
kind: "enum",
|
|
6042
|
-
variants: [
|
|
6043
|
-
{
|
|
6044
|
-
name: "Active"
|
|
6045
|
-
},
|
|
6046
|
-
{
|
|
6047
|
-
name: "Inactive"
|
|
6048
|
-
},
|
|
6049
|
-
{
|
|
6050
|
-
name: "Pending"
|
|
6051
|
-
}
|
|
6052
|
-
]
|
|
6053
|
-
}
|
|
6054
|
-
},
|
|
6055
6061
|
{
|
|
6056
6062
|
name: "BondType",
|
|
6057
6063
|
docs: [
|
|
@@ -6413,13 +6419,8 @@ var JBondClient = class _JBondClient {
|
|
|
6413
6419
|
return this;
|
|
6414
6420
|
}
|
|
6415
6421
|
getBondTypeSeed(bondType) {
|
|
6416
|
-
|
|
6417
|
-
|
|
6418
|
-
}
|
|
6419
|
-
if ("crowdfunding" in bondType) {
|
|
6420
|
-
return "crowdfunding" /* CrowdFundingBond */;
|
|
6421
|
-
}
|
|
6422
|
-
throw new Error(`Unknown bond type: ${JSON.stringify(bondType)}`);
|
|
6422
|
+
const [k] = getVariant(bondType);
|
|
6423
|
+
return bondTypeToSeed[k];
|
|
6423
6424
|
}
|
|
6424
6425
|
/**
|
|
6425
6426
|
* Program Derived Addresses (PDAs)
|
|
@@ -6574,13 +6575,16 @@ var JBondClient = class _JBondClient {
|
|
|
6574
6575
|
reserveTokenAccount: null,
|
|
6575
6576
|
mint: null
|
|
6576
6577
|
};
|
|
6577
|
-
|
|
6578
|
-
|
|
6579
|
-
|
|
6580
|
-
|
|
6581
|
-
|
|
6582
|
-
|
|
6583
|
-
|
|
6578
|
+
matchVariant(props.collateralType, {
|
|
6579
|
+
native: () => {
|
|
6580
|
+
},
|
|
6581
|
+
token: (mint) => {
|
|
6582
|
+
accounts.reserveTokenAccount = splToken.getAssociatedTokenAddressSync(mint, props.reserve);
|
|
6583
|
+
accounts.mint = mint;
|
|
6584
|
+
},
|
|
6585
|
+
stakeAccount: () => {
|
|
6586
|
+
}
|
|
6587
|
+
});
|
|
6584
6588
|
return this.program.methods.bondInitialize({
|
|
6585
6589
|
name: props.name,
|
|
6586
6590
|
bondType: props.bondType,
|
|
@@ -6609,7 +6613,7 @@ var JBondClient = class _JBondClient {
|
|
|
6609
6613
|
throw new Error("Missing creator");
|
|
6610
6614
|
}
|
|
6611
6615
|
const collateralType = (await this.getBondState(bondType, name)).collateralType;
|
|
6612
|
-
const
|
|
6616
|
+
const accounts = {
|
|
6613
6617
|
bondState,
|
|
6614
6618
|
validatorBond,
|
|
6615
6619
|
identity,
|
|
@@ -6621,12 +6625,18 @@ var JBondClient = class _JBondClient {
|
|
|
6621
6625
|
bondTokenAccount: null,
|
|
6622
6626
|
mint: null
|
|
6623
6627
|
};
|
|
6624
|
-
|
|
6625
|
-
|
|
6626
|
-
|
|
6627
|
-
|
|
6628
|
-
|
|
6629
|
-
|
|
6628
|
+
matchVariant(collateralType, {
|
|
6629
|
+
native: () => {
|
|
6630
|
+
},
|
|
6631
|
+
token: (mint) => {
|
|
6632
|
+
accounts.bondTokenAccount = splToken.getAssociatedTokenAddressSync(mint, validatorBond, true);
|
|
6633
|
+
Object.assign(accounts, { mint, bondTokenAccount: accounts.bondTokenAccount });
|
|
6634
|
+
},
|
|
6635
|
+
stakeAccount: () => {
|
|
6636
|
+
throw new Error("Stake account collateral type is not currently supported");
|
|
6637
|
+
}
|
|
6638
|
+
});
|
|
6639
|
+
return this.program.methods.bondRegister(bondType, name).accountsPartial(accounts).instruction();
|
|
6630
6640
|
}
|
|
6631
6641
|
async buildTopUpIXs(props) {
|
|
6632
6642
|
const { bondType, voteAccount, collateral, name } = props;
|
|
@@ -6659,19 +6669,23 @@ var JBondClient = class _JBondClient {
|
|
|
6659
6669
|
associatedTokenProgram: null,
|
|
6660
6670
|
stakeProgram: null
|
|
6661
6671
|
};
|
|
6662
|
-
|
|
6663
|
-
|
|
6664
|
-
|
|
6665
|
-
|
|
6666
|
-
|
|
6667
|
-
|
|
6668
|
-
|
|
6669
|
-
|
|
6670
|
-
|
|
6671
|
-
|
|
6672
|
-
|
|
6673
|
-
|
|
6674
|
-
|
|
6672
|
+
matchVariant(collateralType, {
|
|
6673
|
+
native: () => {
|
|
6674
|
+
},
|
|
6675
|
+
token: (mint) => {
|
|
6676
|
+
accounts.payerTokenAccount = splToken.getAssociatedTokenAddressSync(mint, payer);
|
|
6677
|
+
accounts.bondTokenAccount = splToken.getAssociatedTokenAddressSync(mint, validatorBond, true);
|
|
6678
|
+
accounts.tokenProgram = splToken.TOKEN_PROGRAM_ID;
|
|
6679
|
+
accounts.associatedTokenProgram = splToken.ASSOCIATED_TOKEN_PROGRAM_ID;
|
|
6680
|
+
},
|
|
6681
|
+
stakeAccount: () => {
|
|
6682
|
+
if (!collateral.stakeAccount) {
|
|
6683
|
+
throw new Error("Missing stakeAccount for stake collateral");
|
|
6684
|
+
}
|
|
6685
|
+
accounts.stakeAccount = collateral.stakeAccount;
|
|
6686
|
+
accounts.stakeProgram = web3_js.StakeProgram.programId;
|
|
6687
|
+
}
|
|
6688
|
+
});
|
|
6675
6689
|
instructions.push(
|
|
6676
6690
|
await this.program.methods.bondTopUp(this.lamports(collateral.amount)).accountsPartial(accounts).instruction()
|
|
6677
6691
|
);
|
|
@@ -6699,18 +6713,22 @@ var JBondClient = class _JBondClient {
|
|
|
6699
6713
|
tokenProgram: null,
|
|
6700
6714
|
stakeProgram: null
|
|
6701
6715
|
};
|
|
6702
|
-
|
|
6703
|
-
|
|
6704
|
-
|
|
6705
|
-
|
|
6706
|
-
|
|
6707
|
-
|
|
6708
|
-
|
|
6709
|
-
|
|
6710
|
-
|
|
6711
|
-
|
|
6712
|
-
|
|
6713
|
-
|
|
6716
|
+
matchVariant(collateralType, {
|
|
6717
|
+
native: () => {
|
|
6718
|
+
},
|
|
6719
|
+
token: (mint) => {
|
|
6720
|
+
accounts.destinationTokenAccount = splToken.getAssociatedTokenAddressSync(mint, destination, true);
|
|
6721
|
+
accounts.bondTokenAccount = splToken.getAssociatedTokenAddressSync(mint, validatorBond, true);
|
|
6722
|
+
accounts.tokenProgram = splToken.TOKEN_PROGRAM_ID;
|
|
6723
|
+
},
|
|
6724
|
+
stakeAccount: () => {
|
|
6725
|
+
if (!withdraw.stakeAccount) {
|
|
6726
|
+
throw new Error("Missing stakeAccount for stake collateral");
|
|
6727
|
+
}
|
|
6728
|
+
accounts.stakeAccount = withdraw.stakeAccount;
|
|
6729
|
+
accounts.stakeProgram = web3_js.StakeProgram.programId;
|
|
6730
|
+
}
|
|
6731
|
+
});
|
|
6714
6732
|
return this.program.methods.bondWithdraw(this.lamports(withdraw.amount)).accountsPartial(accounts).instruction();
|
|
6715
6733
|
}
|
|
6716
6734
|
async buildClaimIx(props) {
|
|
@@ -6735,19 +6753,23 @@ var JBondClient = class _JBondClient {
|
|
|
6735
6753
|
tokenProgram: null,
|
|
6736
6754
|
stakeProgram: null
|
|
6737
6755
|
};
|
|
6738
|
-
|
|
6739
|
-
|
|
6740
|
-
|
|
6741
|
-
|
|
6742
|
-
|
|
6743
|
-
|
|
6744
|
-
|
|
6745
|
-
|
|
6746
|
-
|
|
6747
|
-
|
|
6748
|
-
|
|
6749
|
-
|
|
6750
|
-
|
|
6756
|
+
matchVariant(collateralType, {
|
|
6757
|
+
native: () => {
|
|
6758
|
+
},
|
|
6759
|
+
token: (mint) => {
|
|
6760
|
+
accounts.destinationTokenAccount = splToken.getAssociatedTokenAddressSync(mint, reserve, true);
|
|
6761
|
+
accounts.bondTokenAccount = splToken.getAssociatedTokenAddressSync(mint, validatorBond, true);
|
|
6762
|
+
accounts.reserveTokenAccount = splToken.getAssociatedTokenAddressSync(mint, reserve, true);
|
|
6763
|
+
accounts.tokenProgram = splToken.TOKEN_PROGRAM_ID;
|
|
6764
|
+
},
|
|
6765
|
+
stakeAccount: () => {
|
|
6766
|
+
if (!claim.stakeAccount) {
|
|
6767
|
+
throw new Error("Missing stakeAccount for stake collateral");
|
|
6768
|
+
}
|
|
6769
|
+
accounts.stakeAccount = claim.stakeAccount;
|
|
6770
|
+
accounts.stakeProgram = web3_js.StakeProgram.programId;
|
|
6771
|
+
}
|
|
6772
|
+
});
|
|
6751
6773
|
return this.program.methods.bondClaim(this.lamports(props.claim.amount)).accountsPartial(
|
|
6752
6774
|
accounts
|
|
6753
6775
|
).instruction();
|
|
@@ -6784,11 +6806,11 @@ var JBondClient = class _JBondClient {
|
|
|
6784
6806
|
/**
|
|
6785
6807
|
* Get all bond states with total collected collateral
|
|
6786
6808
|
*/
|
|
6787
|
-
async getAllBondStates(
|
|
6809
|
+
async getAllBondStates(bondType) {
|
|
6788
6810
|
const bondStates = [];
|
|
6789
6811
|
const bondStateAccounts = await this.program.account.bondState.all();
|
|
6790
6812
|
for (const { account: state } of bondStateAccounts) {
|
|
6791
|
-
if (!(
|
|
6813
|
+
if (!sameVariant(state.bondType, bondType)) {
|
|
6792
6814
|
continue;
|
|
6793
6815
|
}
|
|
6794
6816
|
const validatorBonds = await this.getValidatorBondsByState(state.bondType, state.name);
|
|
@@ -6805,6 +6827,9 @@ var JBondClient = class _JBondClient {
|
|
|
6805
6827
|
}
|
|
6806
6828
|
return bondStates;
|
|
6807
6829
|
}
|
|
6830
|
+
/**
|
|
6831
|
+
* Get session status for bond state
|
|
6832
|
+
*/
|
|
6808
6833
|
async getBondStateSessionStatus(bondState) {
|
|
6809
6834
|
const now = Math.floor(Date.now() / 1e3);
|
|
6810
6835
|
if (bondState.sessionFinishTs.toNumber() > now) {
|
|
@@ -6813,6 +6838,7 @@ var JBondClient = class _JBondClient {
|
|
|
6813
6838
|
return 1 /* Finished */;
|
|
6814
6839
|
}
|
|
6815
6840
|
}
|
|
6841
|
+
/** Get all validator bonds for a given bond state */
|
|
6816
6842
|
async getValidatorBondsByState(bondType, bondName) {
|
|
6817
6843
|
const validatorBonds = [];
|
|
6818
6844
|
const bondStatePda = this.pda.bondState(bondType, bondName)[0];
|
|
@@ -6861,20 +6887,35 @@ var JBondClient = class _JBondClient {
|
|
|
6861
6887
|
const [address] = this.pda.validatorBond(bondType, bondName, new web3_js.PublicKey(vote));
|
|
6862
6888
|
const bondStateData = await this.getBondState(bondType, bondName);
|
|
6863
6889
|
const bondStateCollateralType = bondStateData.collateralType;
|
|
6864
|
-
|
|
6865
|
-
|
|
6866
|
-
|
|
6867
|
-
|
|
6868
|
-
|
|
6869
|
-
|
|
6870
|
-
|
|
6871
|
-
|
|
6872
|
-
|
|
6873
|
-
|
|
6874
|
-
|
|
6875
|
-
|
|
6876
|
-
|
|
6877
|
-
|
|
6890
|
+
return await matchVariant(bondStateCollateralType, {
|
|
6891
|
+
native: async () => {
|
|
6892
|
+
const accountInfo = await this.connection.getAccountInfo(address).catch(() => null);
|
|
6893
|
+
if (!accountInfo) {
|
|
6894
|
+
return 0;
|
|
6895
|
+
}
|
|
6896
|
+
const { data, lamports } = accountInfo;
|
|
6897
|
+
const rentExempt = await this.connection.getMinimumBalanceForRentExemption(data.length);
|
|
6898
|
+
return Math.max(0, lamports - rentExempt);
|
|
6899
|
+
},
|
|
6900
|
+
token: async (mint) => {
|
|
6901
|
+
const tokenAccount = splToken.getAssociatedTokenAddressSync(mint, address, true);
|
|
6902
|
+
try {
|
|
6903
|
+
const balance = await this.connection.getTokenAccountBalance(tokenAccount);
|
|
6904
|
+
return Number(balance.value.uiAmount ?? 0);
|
|
6905
|
+
} catch {
|
|
6906
|
+
return 0;
|
|
6907
|
+
}
|
|
6908
|
+
},
|
|
6909
|
+
stakeAccount: async () => {
|
|
6910
|
+
const accountInfo = await this.connection.getAccountInfo(address).catch(() => null);
|
|
6911
|
+
if (!accountInfo) {
|
|
6912
|
+
return 0;
|
|
6913
|
+
}
|
|
6914
|
+
const { data, lamports } = accountInfo;
|
|
6915
|
+
const rentExempt = await this.connection.getMinimumBalanceForRentExemption(data.length);
|
|
6916
|
+
return Math.max(0, lamports - rentExempt);
|
|
6917
|
+
}
|
|
6918
|
+
});
|
|
6878
6919
|
}
|
|
6879
6920
|
/**
|
|
6880
6921
|
* Load stake pool account and cache it if not already cached
|