@nosana/kit 1.0.10 → 2.0.10
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/README.md +539 -152
- package/dist/NosanaClient.d.ts +58 -0
- package/dist/NosanaClient.js +103 -0
- package/dist/NosanaClient.js.map +1 -0
- package/dist/config/defaultConfigs.d.ts +2 -1
- package/dist/config/defaultConfigs.js +4 -4
- package/dist/config/defaultConfigs.js.map +1 -0
- package/dist/config/index.d.ts +1 -0
- package/dist/config/index.js +1 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/types.d.ts +41 -33
- package/dist/config/types.js +14 -13
- package/dist/config/types.js.map +1 -0
- package/dist/config/utils.d.ts +2 -2
- package/dist/config/utils.js +11 -4
- package/dist/config/utils.js.map +1 -0
- package/dist/errors/NosanaError.d.ts +1 -0
- package/dist/errors/NosanaError.js +2 -0
- package/dist/errors/NosanaError.js.map +1 -0
- package/dist/generated_clients/jobs/accounts/index.d.ts +5 -5
- package/dist/generated_clients/jobs/accounts/index.js +6 -5
- package/dist/generated_clients/jobs/accounts/index.js.map +1 -0
- package/dist/generated_clients/jobs/accounts/jobAccount.d.ts +10 -6
- package/dist/generated_clients/jobs/accounts/jobAccount.js +6 -2
- package/dist/generated_clients/jobs/accounts/jobAccount.js.map +1 -0
- package/dist/generated_clients/jobs/accounts/marketAccount.d.ts +6 -2
- package/dist/generated_clients/jobs/accounts/marketAccount.js +6 -2
- package/dist/generated_clients/jobs/accounts/marketAccount.js.map +1 -0
- package/dist/generated_clients/jobs/accounts/runAccount.d.ts +10 -6
- package/dist/generated_clients/jobs/accounts/runAccount.js +6 -2
- package/dist/generated_clients/jobs/accounts/runAccount.js.map +1 -0
- package/dist/generated_clients/jobs/errors/index.d.ts +3 -3
- package/dist/generated_clients/jobs/errors/index.js +4 -3
- package/dist/generated_clients/jobs/errors/index.js.map +1 -0
- package/dist/generated_clients/jobs/errors/nosanaJobs.d.ts +2 -2
- package/dist/generated_clients/jobs/errors/nosanaJobs.js +4 -3
- package/dist/generated_clients/jobs/errors/nosanaJobs.js.map +1 -0
- package/dist/generated_clients/jobs/index.d.ts +7 -7
- package/dist/generated_clients/jobs/index.js +8 -7
- package/dist/generated_clients/jobs/index.js.map +1 -0
- package/dist/generated_clients/jobs/instructions/assign.d.ts +14 -14
- package/dist/generated_clients/jobs/instructions/assign.js +8 -8
- package/dist/generated_clients/jobs/instructions/assign.js.map +1 -0
- package/dist/generated_clients/jobs/instructions/claim.d.ts +13 -13
- package/dist/generated_clients/jobs/instructions/claim.js +8 -8
- package/dist/generated_clients/jobs/instructions/claim.js.map +1 -0
- package/dist/generated_clients/jobs/instructions/clean.d.ts +10 -10
- package/dist/generated_clients/jobs/instructions/clean.js +8 -8
- package/dist/generated_clients/jobs/instructions/clean.js.map +1 -0
- package/dist/generated_clients/jobs/instructions/cleanAdmin.d.ts +11 -11
- package/dist/generated_clients/jobs/instructions/cleanAdmin.js +8 -8
- package/dist/generated_clients/jobs/instructions/cleanAdmin.js.map +1 -0
- package/dist/generated_clients/jobs/instructions/close.d.ts +11 -11
- package/dist/generated_clients/jobs/instructions/close.js +8 -8
- package/dist/generated_clients/jobs/instructions/close.js.map +1 -0
- package/dist/generated_clients/jobs/instructions/closeAdmin.d.ts +11 -11
- package/dist/generated_clients/jobs/instructions/closeAdmin.js +8 -8
- package/dist/generated_clients/jobs/instructions/closeAdmin.js.map +1 -0
- package/dist/generated_clients/jobs/instructions/complete.d.ts +11 -11
- package/dist/generated_clients/jobs/instructions/complete.js +9 -12
- package/dist/generated_clients/jobs/instructions/complete.js.map +1 -0
- package/dist/generated_clients/jobs/instructions/delist.d.ts +11 -11
- package/dist/generated_clients/jobs/instructions/delist.js +8 -8
- package/dist/generated_clients/jobs/instructions/delist.js.map +1 -0
- package/dist/generated_clients/jobs/instructions/end.d.ts +11 -11
- package/dist/generated_clients/jobs/instructions/end.js +8 -8
- package/dist/generated_clients/jobs/instructions/end.js.map +1 -0
- package/dist/generated_clients/jobs/instructions/extend.d.ts +12 -12
- package/dist/generated_clients/jobs/instructions/extend.js +8 -8
- package/dist/generated_clients/jobs/instructions/extend.js.map +1 -0
- package/dist/generated_clients/jobs/instructions/finish.d.ts +23 -20
- package/dist/generated_clients/jobs/instructions/finish.js +15 -12
- package/dist/generated_clients/jobs/instructions/finish.js.map +1 -0
- package/dist/generated_clients/jobs/instructions/index.d.ts +21 -21
- package/dist/generated_clients/jobs/instructions/index.js +22 -21
- package/dist/generated_clients/jobs/instructions/index.js.map +1 -0
- package/dist/generated_clients/jobs/instructions/list.d.ts +14 -14
- package/dist/generated_clients/jobs/instructions/list.js +8 -8
- package/dist/generated_clients/jobs/instructions/list.js.map +1 -0
- package/dist/generated_clients/jobs/instructions/open.d.ts +12 -12
- package/dist/generated_clients/jobs/instructions/open.js +8 -8
- package/dist/generated_clients/jobs/instructions/open.js.map +1 -0
- package/dist/generated_clients/jobs/instructions/quit.d.ts +11 -11
- package/dist/generated_clients/jobs/instructions/quit.js +8 -8
- package/dist/generated_clients/jobs/instructions/quit.js.map +1 -0
- package/dist/generated_clients/jobs/instructions/quitAdmin.d.ts +11 -11
- package/dist/generated_clients/jobs/instructions/quitAdmin.js +8 -8
- package/dist/generated_clients/jobs/instructions/quitAdmin.js.map +1 -0
- package/dist/generated_clients/jobs/instructions/recover.d.ts +11 -11
- package/dist/generated_clients/jobs/instructions/recover.js +8 -8
- package/dist/generated_clients/jobs/instructions/recover.js.map +1 -0
- package/dist/generated_clients/jobs/instructions/stop.d.ts +11 -11
- package/dist/generated_clients/jobs/instructions/stop.js +8 -8
- package/dist/generated_clients/jobs/instructions/stop.js.map +1 -0
- package/dist/generated_clients/jobs/instructions/update.d.ts +11 -11
- package/dist/generated_clients/jobs/instructions/update.js +8 -8
- package/dist/generated_clients/jobs/instructions/update.js.map +1 -0
- package/dist/generated_clients/jobs/instructions/work.d.ts +13 -13
- package/dist/generated_clients/jobs/instructions/work.js +8 -8
- package/dist/generated_clients/jobs/instructions/work.js.map +1 -0
- package/dist/generated_clients/jobs/programs/index.d.ts +3 -3
- package/dist/generated_clients/jobs/programs/index.js +4 -3
- package/dist/generated_clients/jobs/programs/index.js.map +1 -0
- package/dist/generated_clients/jobs/programs/nosanaJobs.d.ts +52 -50
- package/dist/generated_clients/jobs/programs/nosanaJobs.js +30 -31
- package/dist/generated_clients/jobs/programs/nosanaJobs.js.map +1 -0
- package/dist/generated_clients/jobs/shared/index.d.ts +5 -5
- package/dist/generated_clients/jobs/shared/index.js +4 -3
- package/dist/generated_clients/jobs/shared/index.js.map +1 -0
- package/dist/generated_clients/jobs/types/index.d.ts +5 -5
- package/dist/generated_clients/jobs/types/index.js +6 -5
- package/dist/generated_clients/jobs/types/index.js.map +1 -0
- package/dist/generated_clients/jobs/types/jobState.d.ts +12 -11
- package/dist/generated_clients/jobs/types/jobState.js +8 -8
- package/dist/generated_clients/jobs/types/jobState.js.map +1 -0
- package/dist/generated_clients/jobs/types/jobType.d.ts +15 -14
- package/dist/generated_clients/jobs/types/jobType.js +11 -11
- package/dist/generated_clients/jobs/types/jobType.js.map +1 -0
- package/dist/generated_clients/jobs/types/queueType.d.ts +12 -11
- package/dist/generated_clients/jobs/types/queueType.js +8 -8
- package/dist/generated_clients/jobs/types/queueType.js.map +1 -0
- package/dist/generated_clients/merkle_distributor/accounts/claimStatus.d.ts +10 -6
- package/dist/generated_clients/merkle_distributor/accounts/claimStatus.js +6 -2
- package/dist/generated_clients/merkle_distributor/accounts/claimStatus.js.map +1 -0
- package/dist/generated_clients/merkle_distributor/accounts/index.d.ts +4 -4
- package/dist/generated_clients/merkle_distributor/accounts/index.js +5 -4
- package/dist/generated_clients/merkle_distributor/accounts/index.js.map +1 -0
- package/dist/generated_clients/merkle_distributor/accounts/merkleDistributor.d.ts +10 -6
- package/dist/generated_clients/merkle_distributor/accounts/merkleDistributor.js +6 -2
- package/dist/generated_clients/merkle_distributor/accounts/merkleDistributor.js.map +1 -0
- package/dist/generated_clients/merkle_distributor/errors/index.d.ts +3 -3
- package/dist/generated_clients/merkle_distributor/errors/index.js +4 -3
- package/dist/generated_clients/merkle_distributor/errors/index.js.map +1 -0
- package/dist/generated_clients/merkle_distributor/errors/merkleDistributor.d.ts +2 -2
- package/dist/generated_clients/merkle_distributor/errors/merkleDistributor.js +4 -3
- package/dist/generated_clients/merkle_distributor/errors/merkleDistributor.js.map +1 -0
- package/dist/generated_clients/merkle_distributor/index.d.ts +6 -6
- package/dist/generated_clients/merkle_distributor/index.js +7 -6
- package/dist/generated_clients/merkle_distributor/index.js.map +1 -0
- package/dist/generated_clients/merkle_distributor/instructions/claimLocked.d.ts +11 -11
- package/dist/generated_clients/merkle_distributor/instructions/claimLocked.js +8 -8
- package/dist/generated_clients/merkle_distributor/instructions/claimLocked.js.map +1 -0
- package/dist/generated_clients/merkle_distributor/instructions/clawback.d.ts +11 -11
- package/dist/generated_clients/merkle_distributor/instructions/clawback.js +8 -8
- package/dist/generated_clients/merkle_distributor/instructions/clawback.js.map +1 -0
- package/dist/generated_clients/merkle_distributor/instructions/closeClaimStatus.d.ts +11 -11
- package/dist/generated_clients/merkle_distributor/instructions/closeClaimStatus.js +8 -8
- package/dist/generated_clients/merkle_distributor/instructions/closeClaimStatus.js.map +1 -0
- package/dist/generated_clients/merkle_distributor/instructions/closeDistributor.d.ts +11 -11
- package/dist/generated_clients/merkle_distributor/instructions/closeDistributor.js +8 -8
- package/dist/generated_clients/merkle_distributor/instructions/closeDistributor.js.map +1 -0
- package/dist/generated_clients/merkle_distributor/instructions/index.d.ts +11 -11
- package/dist/generated_clients/merkle_distributor/instructions/index.js +12 -11
- package/dist/generated_clients/merkle_distributor/instructions/index.js.map +1 -0
- package/dist/generated_clients/merkle_distributor/instructions/newClaim.d.ts +8 -8
- package/dist/generated_clients/merkle_distributor/instructions/newClaim.js +8 -8
- package/dist/generated_clients/merkle_distributor/instructions/newClaim.js.map +1 -0
- package/dist/generated_clients/merkle_distributor/instructions/newDistributor.d.ts +11 -11
- package/dist/generated_clients/merkle_distributor/instructions/newDistributor.js +8 -8
- package/dist/generated_clients/merkle_distributor/instructions/newDistributor.js.map +1 -0
- package/dist/generated_clients/merkle_distributor/instructions/setAdmin.d.ts +11 -11
- package/dist/generated_clients/merkle_distributor/instructions/setAdmin.js +8 -8
- package/dist/generated_clients/merkle_distributor/instructions/setAdmin.js.map +1 -0
- package/dist/generated_clients/merkle_distributor/instructions/setClawbackReceiver.d.ts +11 -11
- package/dist/generated_clients/merkle_distributor/instructions/setClawbackReceiver.js +8 -8
- package/dist/generated_clients/merkle_distributor/instructions/setClawbackReceiver.js.map +1 -0
- package/dist/generated_clients/merkle_distributor/instructions/setEnableSlot.d.ts +11 -11
- package/dist/generated_clients/merkle_distributor/instructions/setEnableSlot.js +9 -12
- package/dist/generated_clients/merkle_distributor/instructions/setEnableSlot.js.map +1 -0
- package/dist/generated_clients/merkle_distributor/programs/index.d.ts +3 -3
- package/dist/generated_clients/merkle_distributor/programs/index.js +4 -3
- package/dist/generated_clients/merkle_distributor/programs/index.js.map +1 -0
- package/dist/generated_clients/merkle_distributor/programs/merkleDistributor.d.ts +29 -27
- package/dist/generated_clients/merkle_distributor/programs/merkleDistributor.js +18 -19
- package/dist/generated_clients/merkle_distributor/programs/merkleDistributor.js.map +1 -0
- package/dist/generated_clients/merkle_distributor/shared/index.d.ts +5 -5
- package/dist/generated_clients/merkle_distributor/shared/index.js +4 -3
- package/dist/generated_clients/merkle_distributor/shared/index.js.map +1 -0
- package/dist/generated_clients/staking/accounts/index.d.ts +4 -4
- package/dist/generated_clients/staking/accounts/index.js +5 -4
- package/dist/generated_clients/staking/accounts/index.js.map +1 -0
- package/dist/generated_clients/staking/accounts/settingsAccount.d.ts +9 -6
- package/dist/generated_clients/staking/accounts/settingsAccount.js +6 -2
- package/dist/generated_clients/staking/accounts/settingsAccount.js.map +1 -0
- package/dist/generated_clients/staking/accounts/stakeAccount.d.ts +9 -6
- package/dist/generated_clients/staking/accounts/stakeAccount.js +6 -2
- package/dist/generated_clients/staking/accounts/stakeAccount.js.map +1 -0
- package/dist/generated_clients/staking/errors/index.d.ts +3 -3
- package/dist/generated_clients/staking/errors/index.js +4 -3
- package/dist/generated_clients/staking/errors/index.js.map +1 -0
- package/dist/generated_clients/staking/errors/nosanaStaking.d.ts +2 -2
- package/dist/generated_clients/staking/errors/nosanaStaking.js +4 -3
- package/dist/generated_clients/staking/errors/nosanaStaking.js.map +1 -0
- package/dist/generated_clients/staking/index.d.ts +6 -6
- package/dist/generated_clients/staking/index.js +7 -6
- package/dist/generated_clients/staking/index.js.map +1 -0
- package/dist/generated_clients/staking/instructions/close.d.ts +11 -11
- package/dist/generated_clients/staking/instructions/close.js +8 -8
- package/dist/generated_clients/staking/instructions/close.js.map +1 -0
- package/dist/generated_clients/staking/instructions/extend.d.ts +11 -11
- package/dist/generated_clients/staking/instructions/extend.js +9 -12
- package/dist/generated_clients/staking/instructions/extend.js.map +1 -0
- package/dist/generated_clients/staking/instructions/index.d.ts +12 -12
- package/dist/generated_clients/staking/instructions/index.js +13 -12
- package/dist/generated_clients/staking/instructions/index.js.map +1 -0
- package/dist/generated_clients/staking/instructions/init.d.ts +11 -11
- package/dist/generated_clients/staking/instructions/init.js +8 -8
- package/dist/generated_clients/staking/instructions/init.js.map +1 -0
- package/dist/generated_clients/staking/instructions/restake.d.ts +11 -11
- package/dist/generated_clients/staking/instructions/restake.js +8 -8
- package/dist/generated_clients/staking/instructions/restake.js.map +1 -0
- package/dist/generated_clients/staking/instructions/slash.d.ts +11 -11
- package/dist/generated_clients/staking/instructions/slash.js +8 -8
- package/dist/generated_clients/staking/instructions/slash.js.map +1 -0
- package/dist/generated_clients/staking/instructions/stake.d.ts +11 -11
- package/dist/generated_clients/staking/instructions/stake.js +8 -8
- package/dist/generated_clients/staking/instructions/stake.js.map +1 -0
- package/dist/generated_clients/staking/instructions/topup.d.ts +11 -11
- package/dist/generated_clients/staking/instructions/topup.js +8 -8
- package/dist/generated_clients/staking/instructions/topup.js.map +1 -0
- package/dist/generated_clients/staking/instructions/unstake.d.ts +11 -11
- package/dist/generated_clients/staking/instructions/unstake.js +8 -8
- package/dist/generated_clients/staking/instructions/unstake.js.map +1 -0
- package/dist/generated_clients/staking/instructions/updateSettings.d.ts +11 -11
- package/dist/generated_clients/staking/instructions/updateSettings.js +8 -8
- package/dist/generated_clients/staking/instructions/updateSettings.js.map +1 -0
- package/dist/generated_clients/staking/instructions/withdraw.d.ts +11 -11
- package/dist/generated_clients/staking/instructions/withdraw.js +8 -8
- package/dist/generated_clients/staking/instructions/withdraw.js.map +1 -0
- package/dist/generated_clients/staking/programs/index.d.ts +3 -3
- package/dist/generated_clients/staking/programs/index.js +4 -3
- package/dist/generated_clients/staking/programs/index.js.map +1 -0
- package/dist/generated_clients/staking/programs/nosanaStaking.d.ts +33 -31
- package/dist/generated_clients/staking/programs/nosanaStaking.js +20 -21
- package/dist/generated_clients/staking/programs/nosanaStaking.js.map +1 -0
- package/dist/generated_clients/staking/shared/index.d.ts +5 -5
- package/dist/generated_clients/staking/shared/index.js +4 -3
- package/dist/generated_clients/staking/shared/index.js.map +1 -0
- package/dist/index.d.ts +13 -32
- package/dist/index.js +13 -37
- package/dist/index.js.map +1 -0
- package/dist/logger/Logger.d.ts +4 -4
- package/dist/logger/Logger.js +7 -2
- package/dist/logger/Logger.js.map +1 -0
- package/dist/services/SolanaService.d.ts +49 -26
- package/dist/services/SolanaService.js +191 -133
- package/dist/services/SolanaService.js.map +1 -0
- package/dist/services/TokenService.d.ts +41 -0
- package/dist/services/TokenService.js +136 -0
- package/dist/services/TokenService.js.map +1 -0
- package/dist/services/programs/JobsProgram.d.ts +106 -0
- package/dist/services/programs/JobsProgram.js +584 -0
- package/dist/services/programs/JobsProgram.js.map +1 -0
- package/dist/services/programs/MerkleDistributorProgram.d.ts +101 -0
- package/dist/services/programs/MerkleDistributorProgram.js +343 -0
- package/dist/services/programs/MerkleDistributorProgram.js.map +1 -0
- package/dist/services/programs/StakeProgram.d.ts +46 -0
- package/dist/services/programs/StakeProgram.js +87 -0
- package/dist/services/programs/StakeProgram.js.map +1 -0
- package/dist/types.d.ts +17 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/convertBigIntToNumber.d.ts +19 -0
- package/dist/utils/convertBigIntToNumber.js +15 -0
- package/dist/utils/convertBigIntToNumber.js.map +1 -0
- package/dist/utils/getStaticAccounts.d.ts +23 -0
- package/dist/utils/getStaticAccounts.js +39 -0
- package/dist/utils/getStaticAccounts.js.map +1 -0
- package/dist/utils/index.d.ts +3 -20
- package/dist/utils/index.js +5 -16
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/walletToAuthorizationSigner.d.ts +10 -0
- package/dist/utils/walletToAuthorizationSigner.js +42 -0
- package/dist/utils/walletToAuthorizationSigner.js.map +1 -0
- package/package.json +17 -14
- package/dist/ipfs/IPFS.d.ts +0 -50
- package/dist/ipfs/IPFS.js +0 -149
- package/dist/programs/BaseProgram.d.ts +0 -20
- package/dist/programs/BaseProgram.js +0 -31
- package/dist/programs/JobsProgram.d.ts +0 -129
- package/dist/programs/JobsProgram.js +0 -559
- package/dist/programs/MerkleDistributorProgram.d.ts +0 -115
- package/dist/programs/MerkleDistributorProgram.js +0 -337
- package/dist/programs/StakeProgram.d.ts +0 -29
- package/dist/programs/StakeProgram.js +0 -91
- package/dist/services/NosService.d.ts +0 -48
- package/dist/services/NosService.js +0 -139
- package/dist/utils/walletConverter.d.ts +0 -9
- package/dist/utils/walletConverter.js +0 -141
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Address } from '@solana/kit';
|
|
2
|
+
import type { SolanaService } from '../services/SolanaService.js';
|
|
3
|
+
import type { ProgramConfig } from '../config/types.js';
|
|
4
|
+
export type StaticAccounts = {
|
|
5
|
+
rewardsReflection: Address;
|
|
6
|
+
rewardsVault: Address;
|
|
7
|
+
rewardsProgram: Address;
|
|
8
|
+
jobsProgram: Address;
|
|
9
|
+
};
|
|
10
|
+
export type StaticAccountsCache = {
|
|
11
|
+
value?: StaticAccounts;
|
|
12
|
+
promise?: Promise<StaticAccounts>;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Gets the static accounts, initializing them if needed.
|
|
16
|
+
* This function caches the result to avoid redundant PDA lookups.
|
|
17
|
+
*
|
|
18
|
+
* @param programsConfig - Programs configuration
|
|
19
|
+
* @param solana - Solana service for PDA lookups
|
|
20
|
+
* @param cache - Optional cache object to store the result (for memoization)
|
|
21
|
+
* @returns Promise resolving to static accounts
|
|
22
|
+
*/
|
|
23
|
+
export declare function getStaticAccounts(programsConfig: ProgramConfig, solana: SolanaService, cache?: StaticAccountsCache): Promise<StaticAccounts>;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gets the static accounts, initializing them if needed.
|
|
3
|
+
* This function caches the result to avoid redundant PDA lookups.
|
|
4
|
+
*
|
|
5
|
+
* @param programsConfig - Programs configuration
|
|
6
|
+
* @param solana - Solana service for PDA lookups
|
|
7
|
+
* @param cache - Optional cache object to store the result (for memoization)
|
|
8
|
+
* @returns Promise resolving to static accounts
|
|
9
|
+
*/
|
|
10
|
+
export async function getStaticAccounts(programsConfig, solana, cache) {
|
|
11
|
+
// Return cached value if available
|
|
12
|
+
if (cache?.value) {
|
|
13
|
+
return cache.value;
|
|
14
|
+
}
|
|
15
|
+
// If we're already initializing, return the existing promise
|
|
16
|
+
if (cache?.promise) {
|
|
17
|
+
return cache.promise;
|
|
18
|
+
}
|
|
19
|
+
// Start initialization and store the promise
|
|
20
|
+
const promise = (async () => {
|
|
21
|
+
const staticAccounts = {
|
|
22
|
+
rewardsReflection: await solana.pda(['reflection'], programsConfig.rewardsAddress),
|
|
23
|
+
rewardsVault: await solana.pda([programsConfig.nosTokenAddress], programsConfig.rewardsAddress),
|
|
24
|
+
rewardsProgram: programsConfig.rewardsAddress,
|
|
25
|
+
jobsProgram: programsConfig.jobsAddress,
|
|
26
|
+
};
|
|
27
|
+
// Cache the result
|
|
28
|
+
if (cache) {
|
|
29
|
+
cache.value = staticAccounts;
|
|
30
|
+
cache.promise = undefined;
|
|
31
|
+
}
|
|
32
|
+
return staticAccounts;
|
|
33
|
+
})();
|
|
34
|
+
if (cache) {
|
|
35
|
+
cache.promise = promise;
|
|
36
|
+
}
|
|
37
|
+
return promise;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=getStaticAccounts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getStaticAccounts.js","sourceRoot":"","sources":["../../src/utils/getStaticAccounts.ts"],"names":[],"mappings":"AAgBA;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,cAA6B,EAC7B,MAAqB,EACrB,KAA2B;IAE3B,mCAAmC;IACnC,IAAI,KAAK,EAAE,KAAK,EAAE,CAAC;QACjB,OAAO,KAAK,CAAC,KAAK,CAAC;IACrB,CAAC;IAED,6DAA6D;IAC7D,IAAI,KAAK,EAAE,OAAO,EAAE,CAAC;QACnB,OAAO,KAAK,CAAC,OAAO,CAAC;IACvB,CAAC;IAED,6CAA6C;IAC7C,MAAM,OAAO,GAAG,CAAC,KAAK,IAAI,EAAE;QAC1B,MAAM,cAAc,GAAmB;YACrC,iBAAiB,EAAE,MAAM,MAAM,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,EAAE,cAAc,CAAC,cAAc,CAAC;YAClF,YAAY,EAAE,MAAM,MAAM,CAAC,GAAG,CAC5B,CAAC,cAAc,CAAC,eAAe,CAAC,EAChC,cAAc,CAAC,cAAc,CAC9B;YACD,cAAc,EAAE,cAAc,CAAC,cAAc;YAC7C,WAAW,EAAE,cAAc,CAAC,WAAW;SACxC,CAAC;QAEF,mBAAmB;QACnB,IAAI,KAAK,EAAE,CAAC;YACV,KAAK,CAAC,KAAK,GAAG,cAAc,CAAC;YAC7B,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC;QAC5B,CAAC;QAED,OAAO,cAAc,CAAC;IACxB,CAAC,CAAC,EAAE,CAAC;IAEL,IAAI,KAAK,EAAE,CAAC;QACV,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -1,20 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
*
|
|
4
|
-
*/
|
|
5
|
-
export type ConvertBigIntToNumber<T> = {
|
|
6
|
-
[K in keyof T]: T[K] extends bigint ? number : T[K];
|
|
7
|
-
};
|
|
8
|
-
/**
|
|
9
|
-
* Type helper to convert bigint to number and ReadonlyUint8Array to string
|
|
10
|
-
*/
|
|
11
|
-
export type ConvertTypesForDb<T> = {
|
|
12
|
-
[K in keyof T]: T[K] extends bigint ? number : T[K] extends ReadonlyUint8Array ? string | null : T[K];
|
|
13
|
-
};
|
|
14
|
-
/**
|
|
15
|
-
* Helper function to convert bigint values to numbers in an object
|
|
16
|
-
* @param obj Object that may contain bigint values
|
|
17
|
-
* @returns Object with all bigint values converted to numbers
|
|
18
|
-
*/
|
|
19
|
-
export declare function convertBigIntToNumber<T extends Record<string, unknown>>(obj: T): ConvertBigIntToNumber<T>;
|
|
20
|
-
export * from './walletConverter.js';
|
|
1
|
+
export * from './convertBigIntToNumber.js';
|
|
2
|
+
export * from './getStaticAccounts.js';
|
|
3
|
+
export * from './walletToAuthorizationSigner.js';
|
package/dist/utils/index.js
CHANGED
|
@@ -1,16 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
|
|
6
|
-
export function convertBigIntToNumber(obj) {
|
|
7
|
-
const result = { ...obj };
|
|
8
|
-
for (const [key, value] of Object.entries(result)) {
|
|
9
|
-
if (typeof value === 'bigint') {
|
|
10
|
-
result[key] = Number(value);
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
return result;
|
|
14
|
-
}
|
|
15
|
-
// Export wallet conversion utilities
|
|
16
|
-
export * from './walletConverter.js';
|
|
1
|
+
// Barrel export file - exports all utility functions and types
|
|
2
|
+
export * from './convertBigIntToNumber.js';
|
|
3
|
+
export * from './getStaticAccounts.js';
|
|
4
|
+
export * from './walletToAuthorizationSigner.js';
|
|
5
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,kCAAkC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type MessageSigner } from '@solana/kit';
|
|
2
|
+
import { SignMessageFn } from '@nosana/authorization';
|
|
3
|
+
/**
|
|
4
|
+
* Convert a MessageSigner to a SignMessageFn for use with createNosanaAuthorization.
|
|
5
|
+
* MessageSigner always supports message signing (either via modifyAndSignMessages or signMessages).
|
|
6
|
+
*
|
|
7
|
+
* @param signer - The message signer to convert
|
|
8
|
+
* @returns A SignMessageFn that can be used with createNosanaAuthorization
|
|
9
|
+
*/
|
|
10
|
+
export declare function walletToAuthorizationSigner(signer: MessageSigner): SignMessageFn;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { NosanaError, ErrorCodes } from '../errors/NosanaError.js';
|
|
2
|
+
/**
|
|
3
|
+
* Extract signature from a signatures dictionary.
|
|
4
|
+
*/
|
|
5
|
+
function extractSignature(signatures, signerAddress, errorContext) {
|
|
6
|
+
if (!signatures) {
|
|
7
|
+
throw new NosanaError(errorContext, ErrorCodes.AUTH_ERROR);
|
|
8
|
+
}
|
|
9
|
+
const signature = signatures[signerAddress];
|
|
10
|
+
if (!signature) {
|
|
11
|
+
throw new NosanaError('Failed to get signature from signer', ErrorCodes.AUTH_ERROR);
|
|
12
|
+
}
|
|
13
|
+
return signature instanceof Uint8Array ? signature : new Uint8Array(signature);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Convert a MessageSigner to a SignMessageFn for use with createNosanaAuthorization.
|
|
17
|
+
* MessageSigner always supports message signing (either via modifyAndSignMessages or signMessages).
|
|
18
|
+
*
|
|
19
|
+
* @param signer - The message signer to convert
|
|
20
|
+
* @returns A SignMessageFn that can be used with createNosanaAuthorization
|
|
21
|
+
*/
|
|
22
|
+
export function walletToAuthorizationSigner(signer) {
|
|
23
|
+
const signerAddress = signer.address;
|
|
24
|
+
return async (message) => {
|
|
25
|
+
const messageToSign = { content: message, signatures: {} };
|
|
26
|
+
// Try modifyAndSignMessages first (MessageModifyingSigner)
|
|
27
|
+
if ('modifyAndSignMessages' in signer && typeof signer.modifyAndSignMessages === 'function') {
|
|
28
|
+
const signedMessages = await signer.modifyAndSignMessages([messageToSign]);
|
|
29
|
+
const signedMessage = signedMessages[0];
|
|
30
|
+
return extractSignature(signedMessage?.signatures, signerAddress, 'Failed to get signed message from signer');
|
|
31
|
+
}
|
|
32
|
+
// Fallback to signMessages (MessagePartialSigner)
|
|
33
|
+
if ('signMessages' in signer && typeof signer.signMessages === 'function') {
|
|
34
|
+
const signatures = await signer.signMessages([messageToSign]);
|
|
35
|
+
const signatureDict = signatures[0];
|
|
36
|
+
return extractSignature(signatureDict, signerAddress, 'Failed to get signatures from signer');
|
|
37
|
+
}
|
|
38
|
+
// This should never happen since MessageSigner always has one of these methods
|
|
39
|
+
throw new NosanaError('MessageSigner does not support message signing', ErrorCodes.AUTH_ERROR);
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=walletToAuthorizationSigner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"walletToAuthorizationSigner.js","sourceRoot":"","sources":["../../src/utils/walletToAuthorizationSigner.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAGnE;;GAEG;AACH,SAAS,gBAAgB,CACvB,UAAkD,EAClD,aAAqB,EACrB,YAAoB;IAEpB,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,WAAW,CAAC,YAAY,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,SAAS,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;IAC5C,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,WAAW,CAAC,qCAAqC,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;IACtF,CAAC;IAED,OAAO,SAAS,YAAY,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC;AACjF,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,2BAA2B,CAAC,MAAqB;IAC/D,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC;IAErC,OAAO,KAAK,EAAE,OAAmB,EAAuB,EAAE;QACxD,MAAM,aAAa,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;QAE3D,2DAA2D;QAC3D,IAAI,uBAAuB,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,qBAAqB,KAAK,UAAU,EAAE,CAAC;YAC5F,MAAM,cAAc,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;YAC3E,MAAM,aAAa,GAAG,cAAc,CAAC,CAAC,CAKzB,CAAC;YACd,OAAO,gBAAgB,CACrB,aAAa,EAAE,UAAU,EACzB,aAAa,EACb,0CAA0C,CAC3C,CAAC;QACJ,CAAC;QAED,kDAAkD;QAClD,IAAI,cAAc,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,YAAY,KAAK,UAAU,EAAE,CAAC;YAC1E,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;YAC9D,MAAM,aAAa,GAAG,UAAU,CAAC,CAAC,CAAyD,CAAC;YAC5F,OAAO,gBAAgB,CAAC,aAAa,EAAE,aAAa,EAAE,sCAAsC,CAAC,CAAC;QAChG,CAAC;QAED,+EAA+E;QAC/E,MAAM,IAAI,WAAW,CAAC,gDAAgD,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;IACjG,CAAC,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nosana/kit",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.10",
|
|
4
4
|
"description": "Nosana KIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -27,27 +27,30 @@
|
|
|
27
27
|
"author": "Nosana",
|
|
28
28
|
"license": "MIT",
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@
|
|
31
|
-
"@
|
|
32
|
-
"
|
|
33
|
-
"
|
|
34
|
-
"
|
|
35
|
-
"
|
|
36
|
-
"
|
|
30
|
+
"@nosana/api": "^0.1.3",
|
|
31
|
+
"@nosana/authorization": "^0.1.1",
|
|
32
|
+
"@nosana/ipfs": "^0.1.1",
|
|
33
|
+
"@nosana/types": "^0.1.3",
|
|
34
|
+
"@solana-program/compute-budget": "0.11.0",
|
|
35
|
+
"@solana-program/system": "0.10.0",
|
|
36
|
+
"@solana-program/token": "0.8.0",
|
|
37
|
+
"@solana/kit": "5.0.0",
|
|
38
|
+
"bs58": "6.0.0"
|
|
37
39
|
},
|
|
38
40
|
"devDependencies": {
|
|
39
|
-
"@codama/nodes-from-anchor": "^1.
|
|
40
|
-
"@codama/renderers-js": "^1.
|
|
41
|
+
"@codama/nodes-from-anchor": "^1.3.1",
|
|
42
|
+
"@codama/renderers-js": "^1.5.0",
|
|
41
43
|
"@types/node": "^20.11.24",
|
|
42
44
|
"@typescript-eslint/eslint-plugin": "^7.1.0",
|
|
43
45
|
"@typescript-eslint/parser": "^7.1.0",
|
|
44
|
-
"@vitest/coverage-v8": "^
|
|
45
|
-
"codama": "^1.
|
|
46
|
+
"@vitest/coverage-v8": "^4.0.3",
|
|
47
|
+
"codama": "^1.4.1",
|
|
46
48
|
"eslint": "^8.57.0",
|
|
49
|
+
"eslint-plugin-import": "^2.32.0",
|
|
47
50
|
"prettier": "^3.2.5",
|
|
48
51
|
"ts-node": "^10.9.2",
|
|
49
52
|
"typescript": "^5.3.3",
|
|
50
|
-
"vitest": "^
|
|
53
|
+
"vitest": "^4.0.3"
|
|
51
54
|
},
|
|
52
55
|
"engines": {
|
|
53
56
|
"node": ">=20.18.0"
|
|
@@ -57,4 +60,4 @@
|
|
|
57
60
|
"package.json",
|
|
58
61
|
"README.md"
|
|
59
62
|
]
|
|
60
|
-
}
|
|
63
|
+
}
|
package/dist/ipfs/IPFS.d.ts
DELETED
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import { AxiosRequestConfig } from 'axios';
|
|
2
|
-
import { ReadonlyUint8Array } from 'gill';
|
|
3
|
-
import type { IpfsConfig } from '../config/types.js';
|
|
4
|
-
/**
|
|
5
|
-
* Class to interact with Pinata Cloud
|
|
6
|
-
* https://www.pinata.cloud/
|
|
7
|
-
*/
|
|
8
|
-
export declare class IPFS {
|
|
9
|
-
private api;
|
|
10
|
-
config: IpfsConfig;
|
|
11
|
-
constructor(config: IpfsConfig);
|
|
12
|
-
/**
|
|
13
|
-
* Convert the ipfs bytes from a solana job to a CID
|
|
14
|
-
* It prepends the 0x1220 (18,32) to make it 34 bytes and Base58 encodes it.
|
|
15
|
-
* This result is IPFS addressable.
|
|
16
|
-
*/
|
|
17
|
-
static solHashToIpfsHash(hashArray: ReadonlyUint8Array | Array<number>): string | null;
|
|
18
|
-
/**
|
|
19
|
-
* Converts IPFS hash to byte array needed to submit results
|
|
20
|
-
* @param hash IPFS hash
|
|
21
|
-
* @returns Array<number>
|
|
22
|
-
*/
|
|
23
|
-
static IpfsHashToByteArray(hash: string): Array<number>;
|
|
24
|
-
/**
|
|
25
|
-
* Retrieve data from IPFS using the configured gateway
|
|
26
|
-
* @param hash IPFS hash string or byte array
|
|
27
|
-
* @param options Additional axios request options
|
|
28
|
-
* @returns The retrieved data
|
|
29
|
-
*/
|
|
30
|
-
retrieve(hash: string | Array<number>, options?: AxiosRequestConfig): Promise<any>;
|
|
31
|
-
/**
|
|
32
|
-
* Function to pin data into Pinata Cloud
|
|
33
|
-
* @param data Object to pin into IPFS as JSON
|
|
34
|
-
* @returns The IPFS hash of the pinned data
|
|
35
|
-
*/
|
|
36
|
-
pin(data: object): Promise<string>;
|
|
37
|
-
/**
|
|
38
|
-
* Function to pin a file into Pinata Cloud
|
|
39
|
-
* @param filePath Path to the file to pin
|
|
40
|
-
* @returns The IPFS hash of the pinned file
|
|
41
|
-
*/
|
|
42
|
-
pinFile(filePath: string): Promise<string>;
|
|
43
|
-
/**
|
|
44
|
-
* Function to pin a file from buffer/blob into Pinata Cloud
|
|
45
|
-
* @param fileBuffer Buffer or Blob containing the file data
|
|
46
|
-
* @param fileName Name of the file
|
|
47
|
-
* @returns The IPFS hash of the pinned file
|
|
48
|
-
*/
|
|
49
|
-
pinFileFromBuffer(fileBuffer: Buffer | Blob, fileName: string): Promise<string>;
|
|
50
|
-
}
|
package/dist/ipfs/IPFS.js
DELETED
|
@@ -1,149 +0,0 @@
|
|
|
1
|
-
import bs58 from 'bs58';
|
|
2
|
-
import axios, { AxiosHeaders } from 'axios';
|
|
3
|
-
// Import form-data dynamically for Node.js environments
|
|
4
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
5
|
-
let FormData;
|
|
6
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
7
|
-
let fs;
|
|
8
|
-
// Dynamically import Node.js-specific modules
|
|
9
|
-
const loadNodeModules = async () => {
|
|
10
|
-
if (typeof window === 'undefined') {
|
|
11
|
-
try {
|
|
12
|
-
const formDataModule = await import('form-data');
|
|
13
|
-
FormData = formDataModule.default;
|
|
14
|
-
fs = await import('fs');
|
|
15
|
-
}
|
|
16
|
-
catch (error) {
|
|
17
|
-
console.warn('Node.js modules not available for file operations');
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
else {
|
|
21
|
-
// Use browser FormData
|
|
22
|
-
FormData = window.FormData;
|
|
23
|
-
}
|
|
24
|
-
};
|
|
25
|
-
/**
|
|
26
|
-
* Class to interact with Pinata Cloud
|
|
27
|
-
* https://www.pinata.cloud/
|
|
28
|
-
*/
|
|
29
|
-
export class IPFS {
|
|
30
|
-
constructor(config) {
|
|
31
|
-
this.config = config;
|
|
32
|
-
const headers = new AxiosHeaders();
|
|
33
|
-
if (this.config.jwt) {
|
|
34
|
-
headers.set('Authorization', `Bearer ${this.config.jwt}`);
|
|
35
|
-
}
|
|
36
|
-
this.api = axios.create({
|
|
37
|
-
baseURL: this.config.api,
|
|
38
|
-
headers,
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Convert the ipfs bytes from a solana job to a CID
|
|
43
|
-
* It prepends the 0x1220 (18,32) to make it 34 bytes and Base58 encodes it.
|
|
44
|
-
* This result is IPFS addressable.
|
|
45
|
-
*/
|
|
46
|
-
static solHashToIpfsHash(hashArray) {
|
|
47
|
-
let finalArray;
|
|
48
|
-
const inputArray = Array.isArray(hashArray) ? hashArray : Array.from(hashArray);
|
|
49
|
-
if (inputArray.length === 32) {
|
|
50
|
-
// Create a new array with the prepended bytes [18, 32] + original array
|
|
51
|
-
finalArray = new Uint8Array(34);
|
|
52
|
-
finalArray[0] = 18;
|
|
53
|
-
finalArray[1] = 32;
|
|
54
|
-
finalArray.set(inputArray, 2);
|
|
55
|
-
}
|
|
56
|
-
else {
|
|
57
|
-
// Use the array as-is if it's not 32 bytes
|
|
58
|
-
finalArray = new Uint8Array(inputArray);
|
|
59
|
-
}
|
|
60
|
-
const hash = bs58.encode(Buffer.from(finalArray));
|
|
61
|
-
if (hash === 'QmNLei78zWmzUdbeRB3CiUfAizWUrbeeZh5K1rhAQKCh51') {
|
|
62
|
-
return null;
|
|
63
|
-
}
|
|
64
|
-
return hash;
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Converts IPFS hash to byte array needed to submit results
|
|
68
|
-
* @param hash IPFS hash
|
|
69
|
-
* @returns Array<number>
|
|
70
|
-
*/
|
|
71
|
-
static IpfsHashToByteArray(hash) {
|
|
72
|
-
if (hash.length === 34) {
|
|
73
|
-
return [...bs58.decode(hash).subarray(2)];
|
|
74
|
-
}
|
|
75
|
-
else {
|
|
76
|
-
return [...bs58.decode(hash)];
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* Retrieve data from IPFS using the configured gateway
|
|
81
|
-
* @param hash IPFS hash string or byte array
|
|
82
|
-
* @param options Additional axios request options
|
|
83
|
-
* @returns The retrieved data
|
|
84
|
-
*/
|
|
85
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
86
|
-
async retrieve(hash, options = {}) {
|
|
87
|
-
if (typeof hash !== 'string') {
|
|
88
|
-
const convertedHash = IPFS.solHashToIpfsHash(hash);
|
|
89
|
-
if (!convertedHash) {
|
|
90
|
-
throw new Error('Invalid hash provided');
|
|
91
|
-
}
|
|
92
|
-
hash = convertedHash;
|
|
93
|
-
}
|
|
94
|
-
const response = await axios.get(this.config.gateway + hash, options);
|
|
95
|
-
return response.data;
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Function to pin data into Pinata Cloud
|
|
99
|
-
* @param data Object to pin into IPFS as JSON
|
|
100
|
-
* @returns The IPFS hash of the pinned data
|
|
101
|
-
*/
|
|
102
|
-
async pin(data) {
|
|
103
|
-
const response = await this.api.post('/pinning/pinJSONToIPFS', data);
|
|
104
|
-
return response.data.IpfsHash;
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* Function to pin a file into Pinata Cloud
|
|
108
|
-
* @param filePath Path to the file to pin
|
|
109
|
-
* @returns The IPFS hash of the pinned file
|
|
110
|
-
*/
|
|
111
|
-
async pinFile(filePath) {
|
|
112
|
-
// Ensure Node.js modules are loaded
|
|
113
|
-
await loadNodeModules();
|
|
114
|
-
if (!FormData || !fs) {
|
|
115
|
-
throw new Error('File operations are not supported in this environment');
|
|
116
|
-
}
|
|
117
|
-
const data = new FormData();
|
|
118
|
-
data.append('file', fs.createReadStream(filePath));
|
|
119
|
-
const response = await this.api.post('/pinning/pinFileToIPFS', data, {
|
|
120
|
-
headers: {
|
|
121
|
-
'Content-Type': `multipart/form-data; boundary=${data.getBoundary()}`,
|
|
122
|
-
Authorization: `Bearer ${this.config.jwt}`,
|
|
123
|
-
},
|
|
124
|
-
});
|
|
125
|
-
return response.data.IpfsHash;
|
|
126
|
-
}
|
|
127
|
-
/**
|
|
128
|
-
* Function to pin a file from buffer/blob into Pinata Cloud
|
|
129
|
-
* @param fileBuffer Buffer or Blob containing the file data
|
|
130
|
-
* @param fileName Name of the file
|
|
131
|
-
* @returns The IPFS hash of the pinned file
|
|
132
|
-
*/
|
|
133
|
-
async pinFileFromBuffer(fileBuffer, fileName) {
|
|
134
|
-
// Ensure FormData is available
|
|
135
|
-
await loadNodeModules();
|
|
136
|
-
if (!FormData) {
|
|
137
|
-
throw new Error('FormData is not available in this environment');
|
|
138
|
-
}
|
|
139
|
-
const data = new FormData();
|
|
140
|
-
data.append('file', fileBuffer, fileName);
|
|
141
|
-
const response = await this.api.post('/pinning/pinFileToIPFS', data, {
|
|
142
|
-
headers: {
|
|
143
|
-
'Content-Type': `multipart/form-data${data.getBoundary ? `; boundary=${data.getBoundary()}` : ''}`,
|
|
144
|
-
Authorization: `Bearer ${this.config.jwt}`,
|
|
145
|
-
},
|
|
146
|
-
});
|
|
147
|
-
return response.data.IpfsHash;
|
|
148
|
-
}
|
|
149
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { Address } from 'gill';
|
|
2
|
-
import { NosanaClient } from '../index.js';
|
|
3
|
-
export type staticAccounts = {
|
|
4
|
-
rewardsReflection: Address;
|
|
5
|
-
rewardsVault: Address;
|
|
6
|
-
rewardsProgram: Address;
|
|
7
|
-
jobsProgram: Address;
|
|
8
|
-
};
|
|
9
|
-
export declare abstract class BaseProgram {
|
|
10
|
-
private _staticAccounts;
|
|
11
|
-
private _initializingAccounts;
|
|
12
|
-
/**
|
|
13
|
-
* Gets the static accounts, initializing them if needed.
|
|
14
|
-
*/
|
|
15
|
-
getStaticAccounts(): Promise<staticAccounts>;
|
|
16
|
-
private initializeStaticAccounts;
|
|
17
|
-
protected readonly sdk: NosanaClient;
|
|
18
|
-
constructor(sdk: NosanaClient);
|
|
19
|
-
protected abstract getProgramId(): Address;
|
|
20
|
-
}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
export class BaseProgram {
|
|
2
|
-
/**
|
|
3
|
-
* Gets the static accounts, initializing them if needed.
|
|
4
|
-
*/
|
|
5
|
-
async getStaticAccounts() {
|
|
6
|
-
if (this._staticAccounts) {
|
|
7
|
-
return this._staticAccounts;
|
|
8
|
-
}
|
|
9
|
-
// If we're already initializing, return the existing promise
|
|
10
|
-
if (this._initializingAccounts) {
|
|
11
|
-
return this._initializingAccounts;
|
|
12
|
-
}
|
|
13
|
-
// Start initialization and store the promise
|
|
14
|
-
this._initializingAccounts = this.initializeStaticAccounts();
|
|
15
|
-
// Wait for initialization to complete
|
|
16
|
-
this._staticAccounts = await this._initializingAccounts;
|
|
17
|
-
this._initializingAccounts = undefined;
|
|
18
|
-
return this._staticAccounts;
|
|
19
|
-
}
|
|
20
|
-
async initializeStaticAccounts() {
|
|
21
|
-
return {
|
|
22
|
-
rewardsReflection: await this.sdk.solana.pda(['reflection'], this.sdk.config.programs.rewardsAddress),
|
|
23
|
-
rewardsVault: await this.sdk.solana.pda([this.sdk.config.programs.nosTokenAddress], this.sdk.config.programs.rewardsAddress),
|
|
24
|
-
rewardsProgram: this.sdk.config.programs.rewardsAddress,
|
|
25
|
-
jobsProgram: this.sdk.config.programs.jobsAddress,
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
constructor(sdk) {
|
|
29
|
-
this.sdk = sdk;
|
|
30
|
-
}
|
|
31
|
-
}
|
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
import { BaseProgram } from './BaseProgram.js';
|
|
2
|
-
import { Address, Account } from 'gill';
|
|
3
|
-
import { NosanaClient } from '../index.js';
|
|
4
|
-
import * as programClient from '../generated_clients/jobs/index.js';
|
|
5
|
-
import { ConvertTypesForDb } from '../utils/index.js';
|
|
6
|
-
export declare enum JobState {
|
|
7
|
-
QUEUED = 0,
|
|
8
|
-
RUNNING = 1,
|
|
9
|
-
COMPLETED = 2,
|
|
10
|
-
STOPPED = 3
|
|
11
|
-
}
|
|
12
|
-
export declare enum MarketQueueType {
|
|
13
|
-
JOB_QUEUE = 0,
|
|
14
|
-
NODE_QUEUE = 1
|
|
15
|
-
}
|
|
16
|
-
export type Job = Omit<ConvertTypesForDb<programClient.JobAccountArgs>, 'state'> & {
|
|
17
|
-
address: Address;
|
|
18
|
-
state: JobState;
|
|
19
|
-
};
|
|
20
|
-
export type Market = Omit<ConvertTypesForDb<programClient.MarketAccountArgs>, 'queueType'> & {
|
|
21
|
-
address: Address;
|
|
22
|
-
queueType: MarketQueueType;
|
|
23
|
-
};
|
|
24
|
-
export type Run = ConvertTypesForDb<programClient.RunAccountArgs> & {
|
|
25
|
-
address: Address;
|
|
26
|
-
};
|
|
27
|
-
export declare class JobsProgram extends BaseProgram {
|
|
28
|
-
readonly client: typeof programClient;
|
|
29
|
-
constructor(sdk: NosanaClient);
|
|
30
|
-
protected getProgramId(): Address;
|
|
31
|
-
/**
|
|
32
|
-
* Fetch a job account by address
|
|
33
|
-
*/
|
|
34
|
-
get(addr: Address, checkRun?: boolean): Promise<Job>;
|
|
35
|
-
/**
|
|
36
|
-
* Fetch a run account by address
|
|
37
|
-
*/
|
|
38
|
-
run(addr: Address): Promise<Run>;
|
|
39
|
-
/**
|
|
40
|
-
* Fetch a run account by address
|
|
41
|
-
*/
|
|
42
|
-
market(addr: Address): Promise<Market>;
|
|
43
|
-
/**
|
|
44
|
-
* Fetch multiple job accounts by address
|
|
45
|
-
*/
|
|
46
|
-
multiple(addresses: Address[], checkRuns?: boolean): Promise<Job[]>;
|
|
47
|
-
/**
|
|
48
|
-
* Fetch all job accounts
|
|
49
|
-
*/
|
|
50
|
-
all(filters?: {
|
|
51
|
-
state?: JobState;
|
|
52
|
-
market?: Address;
|
|
53
|
-
node?: Address;
|
|
54
|
-
project?: Address;
|
|
55
|
-
}, checkRuns?: boolean): Promise<Job[]>;
|
|
56
|
-
/**
|
|
57
|
-
* Fetch all run accounts
|
|
58
|
-
*/
|
|
59
|
-
runs(filters?: {
|
|
60
|
-
node?: Address;
|
|
61
|
-
job?: Address;
|
|
62
|
-
}): Promise<Run[]>;
|
|
63
|
-
/**
|
|
64
|
-
* Fetch all market accounts
|
|
65
|
-
*/
|
|
66
|
-
markets(): Promise<Market[]>;
|
|
67
|
-
/**
|
|
68
|
-
* Post a new job to the marketplace
|
|
69
|
-
* @param params Parameters for listing a job
|
|
70
|
-
* @returns The transaction signature
|
|
71
|
-
*/
|
|
72
|
-
post(params: {
|
|
73
|
-
market: Address;
|
|
74
|
-
timeout: number | bigint;
|
|
75
|
-
ipfsHash: string;
|
|
76
|
-
node?: Address;
|
|
77
|
-
}): Promise<ReturnType<typeof this.client.getListInstruction>>;
|
|
78
|
-
/**
|
|
79
|
-
* Monitor program account updates using callback functions
|
|
80
|
-
* Uses WebSocket subscriptions with automatic restart on failure
|
|
81
|
-
*
|
|
82
|
-
* @example
|
|
83
|
-
* ```typescript
|
|
84
|
-
* // Example: Monitor job accounts and save to file
|
|
85
|
-
* const stopMonitoring = await jobsProgram.monitor({
|
|
86
|
-
* onJobAccount: async (jobAccount) => {
|
|
87
|
-
* console.log('Job updated:', jobAccount.address.toString());
|
|
88
|
-
* // Save to database, file, or process as needed
|
|
89
|
-
* },
|
|
90
|
-
* onRunAccount: async (runAccount) => {
|
|
91
|
-
* console.log('Run updated:', runAccount.address.toString());
|
|
92
|
-
* },
|
|
93
|
-
* onError: async (error, accountType) => {
|
|
94
|
-
* console.error('Error processing account:', error, accountType);
|
|
95
|
-
* }
|
|
96
|
-
* });
|
|
97
|
-
*
|
|
98
|
-
* // Stop monitoring when done
|
|
99
|
-
* stopMonitoring();
|
|
100
|
-
* ```
|
|
101
|
-
*
|
|
102
|
-
* @param options Configuration options for monitoring
|
|
103
|
-
* @returns A function to stop monitoring
|
|
104
|
-
*/
|
|
105
|
-
monitor(options?: {
|
|
106
|
-
onJobAccount?: (jobAccount: Job) => Promise<void> | void;
|
|
107
|
-
onMarketAccount?: (marketAccount: Market) => Promise<void> | void;
|
|
108
|
-
onRunAccount?: (runAccount: Run) => Promise<void> | void;
|
|
109
|
-
onError?: (error: Error, accountType?: string) => Promise<void> | void;
|
|
110
|
-
}): Promise<() => void>;
|
|
111
|
-
/**
|
|
112
|
-
* Set up WebSocket subscription for program notifications
|
|
113
|
-
*/
|
|
114
|
-
private setupSubscription;
|
|
115
|
-
/**
|
|
116
|
-
* Process subscription notifications
|
|
117
|
-
*/
|
|
118
|
-
private processSubscriptionNotifications;
|
|
119
|
-
transformJobAccount(jobAccount: Account<programClient.JobAccount>): Job;
|
|
120
|
-
transformRunAccount(runAccount: Account<programClient.RunAccount>): Run;
|
|
121
|
-
transformMarketAccount(marketAccount: Account<programClient.MarketAccount>): Market;
|
|
122
|
-
/**
|
|
123
|
-
* Handle account update using callback functions
|
|
124
|
-
*/
|
|
125
|
-
private handleAccountUpdate;
|
|
126
|
-
private handleJobAccount;
|
|
127
|
-
private handleMarketAccount;
|
|
128
|
-
private handleRunAccount;
|
|
129
|
-
}
|