@nosana/kit 2.2.2 → 2.2.4

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.
@@ -2,6 +2,8 @@ import { Address } from '@solana/kit';
2
2
  import type { ProgramDeps } from '../../../types.js';
3
3
  import * as programClient from '@nosana/stake-program';
4
4
  import { ConvertTypesForDb } from '../../../utils/index.js';
5
+ import type { ProgramConfig } from '../../../config/types.js';
6
+ import * as Instructions from './instructions/index.js';
5
7
  export type Stake = ConvertTypesForDb<programClient.StakeAccountArgs> & {
6
8
  address: Address;
7
9
  };
@@ -10,10 +12,22 @@ export type Stake = ConvertTypesForDb<programClient.StakeAccountArgs> & {
10
12
  * @group @nosana/kit
11
13
  */
12
14
  export interface StakeProgram {
15
+ /**
16
+ * Create a stake instruction for creating/initializing a stake account
17
+ */
18
+ stake: Instructions.CreateStake;
19
+ /**
20
+ * Derive the stake account PDA address for a given owner (defaults to wallet address)
21
+ */
22
+ getAddress(owner?: Address): Promise<Address>;
13
23
  /**
14
24
  * Fetch a stake account by address
15
25
  */
16
26
  get(addr: Address): Promise<Stake>;
27
+ /**
28
+ * Fetch a stake account by owner address (defaults to wallet address)
29
+ */
30
+ getByOwner(owner?: Address): Promise<Stake>;
17
31
  /**
18
32
  * Fetch multiple stake accounts by address
19
33
  */
@@ -43,6 +57,5 @@ export interface StakeProgram {
43
57
  * const stake = await stakeProgram.get('stake-address');
44
58
  * ```
45
59
  */
46
- import type { ProgramConfig } from '../../../config/types.js';
47
60
  export declare function createStakeProgram(deps: ProgramDeps, config: ProgramConfig): StakeProgram;
48
61
  //# sourceMappingURL=StakeProgram.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"StakeProgram.d.ts","sourceRoot":"","sources":["../../../../src/services/programs/stake/StakeProgram.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAsD,MAAM,aAAa,CAAC;AAC1F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,aAAa,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAyB,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAGnF,MAAM,MAAM,KAAK,GAAG,iBAAiB,CAAC,aAAa,CAAC,gBAAgB,CAAC,GAAG;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC;AAE7F;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAEnC;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IAEjD;;OAEG;IACH,GAAG,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,GAAG,YAAY,CAuFzF"}
1
+ {"version":3,"file":"StakeProgram.d.ts","sourceRoot":"","sources":["../../../../src/services/programs/stake/StakeProgram.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAsD,MAAM,aAAa,CAAC;AAC1F,OAAO,KAAK,EAAE,WAAW,EAAU,MAAM,mBAAmB,CAAC;AAE7D,OAAO,KAAK,aAAa,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAyB,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAGnF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D,OAAO,KAAK,YAAY,MAAM,yBAAyB,CAAC;AAExD,MAAM,MAAM,KAAK,GAAG,iBAAiB,CAAC,aAAa,CAAC,gBAAgB,CAAC,GAAG;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC;AAE7F;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,KAAK,EAAE,YAAY,CAAC,WAAW,CAAC;IAEhC;;OAEG;IACH,UAAU,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE9C;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAEnC;;OAEG;IACH,UAAU,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAE5C;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IAEjD;;OAEG;IACH,GAAG,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,GAAG,YAAY,CAuHzF"}
@@ -1,7 +1,29 @@
1
1
  import { parseBase64RpcAccount } from '@solana/kit';
2
+ import { NosanaError, ErrorCodes } from '../../../errors/NosanaError.js';
2
3
  import * as programClient from '@nosana/stake-program';
3
4
  import { convertBigIntToNumber } from '../../../utils/index.js';
4
5
  import bs58 from 'bs58';
6
+ import * as Instructions from './instructions/index.js';
7
+ /**
8
+ * Creates a new StakeProgram instance.
9
+ *
10
+ * @param deps - Program dependencies (config, logger, solana service, wallet getter)
11
+ * @returns A StakeProgram instance with methods to interact with the stake program
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * import { createStakeProgram } from '@nosana/kit';
16
+ *
17
+ * const stakeProgram = createStakeProgram({
18
+ * config,
19
+ * logger,
20
+ * solana,
21
+ * getWallet,
22
+ * });
23
+ *
24
+ * const stake = await stakeProgram.get('stake-address');
25
+ * ```
26
+ */
5
27
  export function createStakeProgram(deps, config) {
6
28
  const programId = config.stakeAddress;
7
29
  const client = programClient;
@@ -15,7 +37,34 @@ export function createStakeProgram(deps, config) {
15
37
  ...convertBigIntToNumber(stakeAccountData),
16
38
  };
17
39
  }
40
+ function getRequiredWallet() {
41
+ const wallet = deps.getWallet();
42
+ if (!wallet) {
43
+ throw new NosanaError('Wallet is required for this operation', ErrorCodes.NO_WALLET);
44
+ }
45
+ return wallet;
46
+ }
47
+ function createInstructionsHelper() {
48
+ return {
49
+ deps,
50
+ config,
51
+ client,
52
+ getRequiredWallet,
53
+ getNosATA: deps.nos.getATA,
54
+ };
55
+ }
18
56
  return {
57
+ async stake(params) {
58
+ return Instructions.stake(params, createInstructionsHelper());
59
+ },
60
+ async getAddress(owner) {
61
+ const resolvedOwner = owner ?? getRequiredWallet().address;
62
+ return deps.solana.pda(['stake', config.nosTokenAddress, resolvedOwner], programId);
63
+ },
64
+ async getByOwner(owner) {
65
+ const addr = await this.getAddress(owner);
66
+ return this.get(addr);
67
+ },
19
68
  /**
20
69
  * Fetch a stake account by address
21
70
  */
@@ -1 +1 @@
1
- {"version":3,"file":"StakeProgram.js","sourceRoot":"","sources":["../../../../src/services/programs/stake/StakeProgram.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"StakeProgram.js","sourceRoot":"","sources":["../../../../src/services/programs/stake/StakeProgram.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,qBAAqB,EAAsB,MAAM,aAAa,CAAC;AAE1F,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,KAAK,aAAa,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAqB,MAAM,yBAAyB,CAAC;AACnF,OAAO,IAAI,MAAM,MAAM,CAAC;AAIxB,OAAO,KAAK,YAAY,MAAM,yBAAyB,CAAC;AAwCxD;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,MAAM,UAAU,kBAAkB,CAAC,IAAiB,EAAE,MAAqB;IACzE,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC;IACtC,MAAM,MAAM,GAAG,aAAa,CAAC;IAE7B;;OAEG;IACH,SAAS,qBAAqB,CAAC,YAAiD;QAC9E,MAAM,EAAE,aAAa,EAAE,CAAC,EAAE,GAAG,gBAAgB,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC;QAEpE,OAAO;YACL,OAAO,EAAE,YAAY,CAAC,OAAO;YAC7B,GAAG,qBAAqB,CAAC,gBAAgB,CAAC;SAC3C,CAAC;IACJ,CAAC;IAED,SAAS,iBAAiB;QACxB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,WAAW,CAAC,uCAAuC,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;QACvF,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,SAAS,wBAAwB;QAC/B,OAAO;YACL,IAAI;YACJ,MAAM;YACN,MAAM;YACN,iBAAiB;YACjB,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM;SAC3B,CAAC;IACJ,CAAC;IAED,OAAO;QACL,KAAK,CAAC,KAAK,CAAC,MAAM;YAChB,OAAO,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,wBAAwB,EAAE,CAAC,CAAC;QAChE,CAAC;QAED,KAAK,CAAC,UAAU,CAAC,KAAe;YAC9B,MAAM,aAAa,GAAG,KAAK,IAAI,iBAAiB,EAAE,CAAC,OAAO,CAAC;YAC3D,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,eAAe,EAAE,aAAa,CAAC,EAAE,SAAS,CAAC,CAAC;QACtF,CAAC;QAED,KAAK,CAAC,UAAU,CAAC,KAAe;YAC9B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAC1C,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;QAED;;WAEG;QACH,KAAK,CAAC,GAAG,CAAC,IAAa;YACrB,IAAI,CAAC;gBACH,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBAC3E,MAAM,KAAK,GAAG,qBAAqB,CAAC,YAAY,CAAC,CAAC;gBAClD,OAAO,KAAK,CAAC;YACf,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,GAAG,EAAE,CAAC,CAAC;gBAClD,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC;QAED;;WAEG;QACH,KAAK,CAAC,QAAQ,CAAC,SAAoB;YACjC,IAAI,CAAC;gBACH,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;gBACpF,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,qBAAqB,CAAC,YAAY,CAAC,CAAC,CAAC;gBACxF,OAAO,MAAM,CAAC;YAChB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,GAAG,EAAE,CAAC,CAAC;gBACnD,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC;QAED;;WAEG;QACH,KAAK,CAAC,GAAG;YACP,IAAI,CAAC;gBACH,MAAM,0BAA0B,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG;qBACrD,kBAAkB,CAAC,SAAS,EAAE;oBAC7B,QAAQ,EAAE,QAAQ;oBAClB,OAAO,EAAE;wBACP;4BACE,MAAM,EAAE;gCACN,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;gCACjB,KAAK,EAAE,IAAI,CAAC,MAAM,CAChB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAC1B;gCACvB,QAAQ,EAAE,QAAQ;6BACnB;yBACF;qBACF;iBACF,CAAC;qBACD,IAAI,EAAE,CAAC;gBAEV,MAAM,MAAM,GAAY,0BAA0B;qBAC/C,GAAG,CAAC,CAAC,MAA6C,EAAE,EAAE;oBACrD,IAAI,CAAC;wBACH,MAAM,YAAY,GAAG,aAAa,CAAC,kBAAkB,CACnD,qBAAqB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,OAAgB,CAAC,CAC9D,CAAC;wBACF,OAAO,qBAAqB,CAAC,YAAY,CAAC,CAAC;oBAC7C,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,GAAG,EAAE,CAAC,CAAC;wBACnD,OAAO,IAAI,CAAC;oBACd,CAAC;gBACH,CAAC,CAAC;qBACD,MAAM,CAAC,CAAC,OAAqB,EAAoB,EAAE,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;gBACzE,OAAO,MAAM,CAAC;YAChB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,GAAG,EAAE,CAAC,CAAC;gBACvD,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './stake.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/services/programs/stake/instructions/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './stake.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/services/programs/stake/instructions/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { getStakeInstruction } from '@nosana/stake-program';
2
+ import type { InstructionsHelperParams } from './types.js';
3
+ export type StakeParams = {
4
+ amount: number | bigint;
5
+ /** Unstake period in days */
6
+ days: number;
7
+ };
8
+ export type StakeInstruction = ReturnType<typeof getStakeInstruction>;
9
+ export type CreateStake = (params: StakeParams) => Promise<StakeInstruction>;
10
+ export declare function stake({ amount, days }: StakeParams, { config, deps, client, getRequiredWallet, getNosATA }: InstructionsHelperParams): Promise<StakeInstruction>;
11
+ //# sourceMappingURL=stake.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stake.d.ts","sourceRoot":"","sources":["../../../../../src/services/programs/stake/instructions/stake.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAI3D,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,6BAA6B;IAC7B,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEtE,MAAM,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAE7E,wBAAsB,KAAK,CACzB,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,WAAW,EAC7B,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,iBAAiB,EAAE,SAAS,EAAE,EAAE,wBAAwB,GAC/E,OAAO,CAAC,gBAAgB,CAAC,CA4B3B"}
@@ -0,0 +1,30 @@
1
+ const SECONDS_PER_DAY = 86400;
2
+ export async function stake({ amount, days }, { config, deps, client, getRequiredWallet, getNosATA }) {
3
+ try {
4
+ const wallet = getRequiredWallet();
5
+ const mint = config.nosTokenAddress;
6
+ const programId = config.stakeAddress;
7
+ const duration = days * SECONDS_PER_DAY;
8
+ // Parallelize independent async operations
9
+ const [userAta, vault, stakePda] = await Promise.all([
10
+ getNosATA(wallet.address),
11
+ deps.solana.pda(['vault', mint, wallet.address], programId),
12
+ deps.solana.pda(['stake', mint, wallet.address], programId),
13
+ ]);
14
+ return client.getStakeInstruction({
15
+ mint,
16
+ user: userAta,
17
+ vault,
18
+ stake: stakePda,
19
+ authority: wallet,
20
+ amount,
21
+ duration,
22
+ });
23
+ }
24
+ catch (err) {
25
+ const errorMessage = `Failed to create stake instruction: ${err instanceof Error ? err.message : String(err)}`;
26
+ deps.logger.error(errorMessage);
27
+ throw new Error(errorMessage);
28
+ }
29
+ }
30
+ //# sourceMappingURL=stake.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stake.js","sourceRoot":"","sources":["../../../../../src/services/programs/stake/instructions/stake.ts"],"names":[],"mappings":"AAGA,MAAM,eAAe,GAAG,KAAK,CAAC;AAY9B,MAAM,CAAC,KAAK,UAAU,KAAK,CACzB,EAAE,MAAM,EAAE,IAAI,EAAe,EAC7B,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,iBAAiB,EAAE,SAAS,EAA4B;IAEhF,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,MAAM,CAAC,eAAe,CAAC;QACpC,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC;QACtC,MAAM,QAAQ,GAAG,IAAI,GAAG,eAAe,CAAC;QAExC,2CAA2C;QAC3C,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACnD,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC;YACzB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC;YAC3D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC;SAC5D,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC,mBAAmB,CAAC;YAChC,IAAI;YACJ,IAAI,EAAE,OAAO;YACb,KAAK;YACL,KAAK,EAAE,QAAQ;YACf,SAAS,EAAE,MAAM;YACjB,MAAM;YACN,QAAQ;SACT,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,YAAY,GAAG,uCAAuC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/G,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;IAChC,CAAC;AACH,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { ProgramConfig } from '../../../../config/index.js';
2
+ import type { ProgramDeps, Wallet } from '../../../../types.js';
3
+ import type { TokenService } from '../../../../services/token/index.js';
4
+ import * as programClient from '@nosana/stake-program';
5
+ export type InstructionsHelperParams = {
6
+ deps: ProgramDeps;
7
+ config: ProgramConfig;
8
+ client: typeof programClient;
9
+ getRequiredWallet: () => Wallet;
10
+ getNosATA: TokenService['getATA'];
11
+ };
12
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/services/programs/stake/instructions/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,KAAK,aAAa,MAAM,uBAAuB,CAAC;AAEvD,MAAM,MAAM,wBAAwB,GAAG;IACrC,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,EAAE,OAAO,aAAa,CAAC;IAC7B,iBAAiB,EAAE,MAAM,MAAM,CAAC;IAChC,SAAS,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;CACnC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/services/programs/stake/instructions/types.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nosana/kit",
3
- "version": "2.2.2",
3
+ "version": "2.2.4",
4
4
  "description": "Nosana KIT",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -30,7 +30,7 @@
30
30
  "license": "MIT",
31
31
  "dependencies": {
32
32
  "@nosana/api": "2.2.2",
33
- "@nosana/authorization": "2.2.0",
33
+ "@nosana/authorization": "2.2.4",
34
34
  "@nosana/endpoints": "2.2.2",
35
35
  "@nosana/ipfs": "2.2.0",
36
36
  "@nosana/jobs-program": "2.2.0",
@@ -68,5 +68,5 @@
68
68
  "package.json",
69
69
  "README.md"
70
70
  ],
71
- "gitHead": "91cae2f27f9be714010bdccd4067b03e40adc0e7"
71
+ "gitHead": "6d3b58a9c5b8b8c8228d6ce84ca1ce5f1adcdc9d"
72
72
  }