@nosana/kit 2.20.1 → 2.23.0
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 +79 -8
- package/dist/config/defaultConfigs.d.ts.map +1 -1
- package/dist/config/defaultConfigs.js +2 -0
- package/dist/config/defaultConfigs.js.map +1 -1
- package/dist/config/types.d.ts +9 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/index.d.ts +24 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -2
- package/dist/index.js.map +1 -1
- package/dist/services/programs/jobs/JobsProgram.d.ts +18 -0
- package/dist/services/programs/jobs/JobsProgram.d.ts.map +1 -1
- package/dist/services/programs/jobs/JobsProgram.js +27 -0
- package/dist/services/programs/jobs/JobsProgram.js.map +1 -1
- package/dist/services/programs/jobs/computeUnits.generated.d.ts +2 -0
- package/dist/services/programs/jobs/computeUnits.generated.d.ts.map +1 -1
- package/dist/services/programs/jobs/computeUnits.generated.js +2 -0
- package/dist/services/programs/jobs/computeUnits.generated.js.map +1 -1
- package/dist/services/programs/jobs/decode.d.ts.map +1 -1
- package/dist/services/programs/jobs/decode.js +6 -1
- package/dist/services/programs/jobs/decode.js.map +1 -1
- package/dist/services/programs/jobs/discriminators.d.ts.map +1 -1
- package/dist/services/programs/jobs/discriminators.js +3 -1
- package/dist/services/programs/jobs/discriminators.js.map +1 -1
- package/dist/services/programs/jobs/instructions/assign.d.ts.map +1 -1
- package/dist/services/programs/jobs/instructions/assign.js +7 -1
- package/dist/services/programs/jobs/instructions/assign.js.map +1 -1
- package/dist/services/programs/jobs/instructions/close.d.ts.map +1 -1
- package/dist/services/programs/jobs/instructions/close.js +8 -3
- package/dist/services/programs/jobs/instructions/close.js.map +1 -1
- package/dist/services/programs/jobs/instructions/closeSettings.d.ts +10 -0
- package/dist/services/programs/jobs/instructions/closeSettings.d.ts.map +1 -0
- package/dist/services/programs/jobs/instructions/closeSettings.js +22 -0
- package/dist/services/programs/jobs/instructions/closeSettings.js.map +1 -0
- package/dist/services/programs/jobs/instructions/index.d.ts +3 -0
- package/dist/services/programs/jobs/instructions/index.d.ts.map +1 -1
- package/dist/services/programs/jobs/instructions/index.js +3 -0
- package/dist/services/programs/jobs/instructions/index.js.map +1 -1
- package/dist/services/programs/jobs/instructions/list.d.ts.map +1 -1
- package/dist/services/programs/jobs/instructions/list.js +7 -1
- package/dist/services/programs/jobs/instructions/list.js.map +1 -1
- package/dist/services/programs/jobs/instructions/projectAccess.d.ts +25 -0
- package/dist/services/programs/jobs/instructions/projectAccess.d.ts.map +1 -0
- package/dist/services/programs/jobs/instructions/projectAccess.js +37 -0
- package/dist/services/programs/jobs/instructions/projectAccess.js.map +1 -0
- package/dist/services/programs/jobs/instructions/setSettings.d.ts +12 -0
- package/dist/services/programs/jobs/instructions/setSettings.d.ts.map +1 -0
- package/dist/services/programs/jobs/instructions/setSettings.js +23 -0
- package/dist/services/programs/jobs/instructions/setSettings.js.map +1 -0
- package/dist/services/programs/stake/StakeProgram.d.ts +8 -0
- package/dist/services/programs/stake/StakeProgram.d.ts.map +1 -1
- package/dist/services/programs/stake/StakeProgram.js +3 -0
- package/dist/services/programs/stake/StakeProgram.js.map +1 -1
- package/dist/services/programs/stake/instructions/index.d.ts +1 -0
- package/dist/services/programs/stake/instructions/index.d.ts.map +1 -1
- package/dist/services/programs/stake/instructions/index.js +1 -0
- package/dist/services/programs/stake/instructions/index.js.map +1 -1
- package/dist/services/programs/stake/instructions/topup.d.ts +22 -0
- package/dist/services/programs/stake/instructions/topup.d.ts.map +1 -0
- package/dist/services/programs/stake/instructions/topup.js +52 -0
- package/dist/services/programs/stake/instructions/topup.js.map +1 -0
- package/dist/services/solana/SolanaService.d.ts +16 -0
- package/dist/services/solana/SolanaService.d.ts.map +1 -1
- package/dist/services/solana/SolanaService.js +48 -1
- package/dist/services/solana/SolanaService.js.map +1 -1
- package/dist/services/solana/nftMetadata.d.ts +43 -0
- package/dist/services/solana/nftMetadata.d.ts.map +1 -0
- package/dist/services/solana/nftMetadata.js +60 -0
- package/dist/services/solana/nftMetadata.js.map +1 -0
- package/package.json +9 -7
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { parseAssignInstruction, parseCloseInstruction, parseCompleteInstruction, parseDelistInstruction, parseEndInstruction, parseExtendInstruction, parseFinishInstruction, parseListInstruction, parseOpenInstruction, parseQuitInstruction, parseStopInstruction, parseWorkInstruction, } from '@nosana/jobs-program';
|
|
1
|
+
import { parseAssignInstruction, parseCloseInstruction, parseCloseSettingsInstruction, parseCompleteInstruction, parseDelistInstruction, parseEndInstruction, parseExtendInstruction, parseFinishInstruction, parseListInstruction, parseOpenInstruction, parseQuitInstruction, parseSetSettingsInstruction, parseStopInstruction, parseWorkInstruction, } from '@nosana/jobs-program';
|
|
2
2
|
import { getJobsInstructionName } from './discriminators.js';
|
|
3
3
|
// name -> generated parser. The casts bridge each parser's specific generic
|
|
4
4
|
// signature to a uniform one; we only ever call the parser matched by name.
|
|
@@ -14,6 +14,8 @@ const PARSERS = {
|
|
|
14
14
|
extend: parseExtendInstruction,
|
|
15
15
|
delist: parseDelistInstruction,
|
|
16
16
|
close: parseCloseInstruction,
|
|
17
|
+
setSettings: parseSetSettingsInstruction,
|
|
18
|
+
closeSettings: parseCloseSettingsInstruction,
|
|
17
19
|
end: parseEndInstruction,
|
|
18
20
|
};
|
|
19
21
|
/**
|
|
@@ -37,6 +39,9 @@ export function decodeJobsInstruction(instruction) {
|
|
|
37
39
|
const parsed = PARSERS[name](instruction);
|
|
38
40
|
const accounts = {};
|
|
39
41
|
for (const [role, meta] of Object.entries(parsed.accounts)) {
|
|
42
|
+
// an optional account that was not passed is encoded as the program id
|
|
43
|
+
if (!meta || meta.address === instruction.programAddress)
|
|
44
|
+
continue;
|
|
40
45
|
accounts[role] = meta.address;
|
|
41
46
|
}
|
|
42
47
|
return { name, accounts, data: parsed.data };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decode.js","sourceRoot":"","sources":["../../../../src/services/programs/jobs/decode.ts"],"names":[],"mappings":"AACA,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,wBAAwB,EACxB,sBAAsB,EACtB,mBAAmB,EACnB,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAsB7D,4EAA4E;AAC5E,4EAA4E;AAC5E,MAAM,OAAO,GAAmD;IAC9D,IAAI,EAAE,oBAAoD;IAC1D,IAAI,EAAE,oBAAoD;IAC1D,MAAM,EAAE,sBAAsD;IAC9D,IAAI,EAAE,oBAAoD;IAC1D,QAAQ,EAAE,wBAAwD;IAClE,MAAM,EAAE,sBAAsD;IAC9D,IAAI,EAAE,oBAAoD;IAC1D,IAAI,EAAE,oBAAoD;IAC1D,MAAM,EAAE,sBAAsD;IAC9D,MAAM,EAAE,sBAAsD;IAC9D,KAAK,EAAE,qBAAqD;IAC5D,GAAG,EAAE,mBAAmD;CACzD,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,qBAAqB,CACnC,WAAwB;IAExB,MAAM,IAAI,GAAG,sBAAsB,CAAC,WAAW,CAAC,CAAC;IACjD,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC;QAC1C,MAAM,QAAQ,GAA4B,EAAE,CAAC;QAC7C,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3D,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;QAChC,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"decode.js","sourceRoot":"","sources":["../../../../src/services/programs/jobs/decode.ts"],"names":[],"mappings":"AACA,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,6BAA6B,EAC7B,wBAAwB,EACxB,sBAAsB,EACtB,mBAAmB,EACnB,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,2BAA2B,EAC3B,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAsB7D,4EAA4E;AAC5E,4EAA4E;AAC5E,MAAM,OAAO,GAAmD;IAC9D,IAAI,EAAE,oBAAoD;IAC1D,IAAI,EAAE,oBAAoD;IAC1D,MAAM,EAAE,sBAAsD;IAC9D,IAAI,EAAE,oBAAoD;IAC1D,QAAQ,EAAE,wBAAwD;IAClE,MAAM,EAAE,sBAAsD;IAC9D,IAAI,EAAE,oBAAoD;IAC1D,IAAI,EAAE,oBAAoD;IAC1D,MAAM,EAAE,sBAAsD;IAC9D,MAAM,EAAE,sBAAsD;IAC9D,KAAK,EAAE,qBAAqD;IAC5D,WAAW,EAAE,2BAA2D;IACxE,aAAa,EAAE,6BAA6D;IAC5E,GAAG,EAAE,mBAAmD;CACzD,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,qBAAqB,CACnC,WAAwB;IAExB,MAAM,IAAI,GAAG,sBAAsB,CAAC,WAAW,CAAC,CAAC;IACjD,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC;QAC1C,MAAM,QAAQ,GAA4B,EAAE,CAAC;QAC7C,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3D,uEAAuE;YACvE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,WAAW,CAAC,cAAc;gBAAE,SAAS;YACnE,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;QAChC,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discriminators.d.ts","sourceRoot":"","sources":["../../../../src/services/programs/jobs/discriminators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,WAAW,EAAE,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"discriminators.d.ts","sourceRoot":"","sources":["../../../../src/services/programs/jobs/discriminators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,WAAW,EAAE,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAiB1F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAEvE,oFAAoF;AACpF,eAAO,MAAM,oBAAoB,IAAI,CAAC;AAEtC,uEAAuE;AACvE,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,mBAAmB,EAAE,kBAAkB,CAe1E,CAAC;AAIF,+EAA+E;AAC/E,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,kBAAkB,GAAG,MAAM,CAElE;AAUD;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,WAAW,GAAG,mBAAmB,GAAG,SAAS,CAIhG"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { getBase16Decoder } from '@solana/kit';
|
|
2
|
-
import { ASSIGN_DISCRIMINATOR, CLOSE_DISCRIMINATOR, COMPLETE_DISCRIMINATOR, DELIST_DISCRIMINATOR, END_DISCRIMINATOR, EXTEND_DISCRIMINATOR, FINISH_DISCRIMINATOR, LIST_DISCRIMINATOR, OPEN_DISCRIMINATOR, QUIT_DISCRIMINATOR, STOP_DISCRIMINATOR, WORK_DISCRIMINATOR, } from '@nosana/jobs-program';
|
|
2
|
+
import { ASSIGN_DISCRIMINATOR, CLOSE_DISCRIMINATOR, CLOSE_SETTINGS_DISCRIMINATOR, COMPLETE_DISCRIMINATOR, DELIST_DISCRIMINATOR, END_DISCRIMINATOR, EXTEND_DISCRIMINATOR, FINISH_DISCRIMINATOR, LIST_DISCRIMINATOR, OPEN_DISCRIMINATOR, QUIT_DISCRIMINATOR, SET_SETTINGS_DISCRIMINATOR, STOP_DISCRIMINATOR, WORK_DISCRIMINATOR, } from '@nosana/jobs-program';
|
|
3
3
|
/** The number of leading bytes that make up an Anchor instruction discriminator. */
|
|
4
4
|
export const DISCRIMINATOR_LENGTH = 8;
|
|
5
5
|
/** The 8-byte Anchor discriminator for each named jobs instruction. */
|
|
@@ -15,6 +15,8 @@ export const DISCRIMINATORS = {
|
|
|
15
15
|
extend: EXTEND_DISCRIMINATOR,
|
|
16
16
|
delist: DELIST_DISCRIMINATOR,
|
|
17
17
|
close: CLOSE_DISCRIMINATOR,
|
|
18
|
+
setSettings: SET_SETTINGS_DISCRIMINATOR,
|
|
19
|
+
closeSettings: CLOSE_SETTINGS_DISCRIMINATOR,
|
|
18
20
|
end: END_DISCRIMINATOR,
|
|
19
21
|
};
|
|
20
22
|
const base16 = getBase16Decoder();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discriminators.js","sourceRoot":"","sources":["../../../../src/services/programs/jobs/discriminators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAA6C,MAAM,aAAa,CAAC;AAC1F,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAG9B,oFAAoF;AACpF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAEtC,uEAAuE;AACvE,MAAM,CAAC,MAAM,cAAc,GAAoD;IAC7E,IAAI,EAAE,kBAAkB;IACxB,IAAI,EAAE,kBAAkB;IACxB,MAAM,EAAE,oBAAoB;IAC5B,IAAI,EAAE,kBAAkB;IACxB,QAAQ,EAAE,sBAAsB;IAChC,MAAM,EAAE,oBAAoB;IAC5B,IAAI,EAAE,kBAAkB;IACxB,IAAI,EAAE,kBAAkB;IACxB,MAAM,EAAE,oBAAoB;IAC5B,MAAM,EAAE,oBAAoB;IAC5B,KAAK,EAAE,mBAAmB;IAC1B,GAAG,EAAE,iBAAiB;CACvB,CAAC;AAEF,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;AAElC,+EAA+E;AAC/E,MAAM,UAAU,gBAAgB,CAAC,KAAyB;IACxD,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED,2EAA2E;AAC3E,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAClC,MAAM,CAAC,IAAI,CAAC,cAAc,CAA2B,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;IACnE,gBAAgB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI;CACL,CAAC,CACH,CAAC;AAEF;;;;;;;;;;GAUG;AACH,MAAM,UAAU,sBAAsB,CAAC,WAAwB;IAC7D,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC;IAC9B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,oBAAoB;QAAE,OAAO,SAAS,CAAC;IAClE,OAAO,qBAAqB,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3D,CAAC"}
|
|
1
|
+
{"version":3,"file":"discriminators.js","sourceRoot":"","sources":["../../../../src/services/programs/jobs/discriminators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAA6C,MAAM,aAAa,CAAC;AAC1F,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,4BAA4B,EAC5B,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,0BAA0B,EAC1B,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAG9B,oFAAoF;AACpF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAEtC,uEAAuE;AACvE,MAAM,CAAC,MAAM,cAAc,GAAoD;IAC7E,IAAI,EAAE,kBAAkB;IACxB,IAAI,EAAE,kBAAkB;IACxB,MAAM,EAAE,oBAAoB;IAC5B,IAAI,EAAE,kBAAkB;IACxB,QAAQ,EAAE,sBAAsB;IAChC,MAAM,EAAE,oBAAoB;IAC5B,IAAI,EAAE,kBAAkB;IACxB,IAAI,EAAE,kBAAkB;IACxB,MAAM,EAAE,oBAAoB;IAC5B,MAAM,EAAE,oBAAoB;IAC5B,KAAK,EAAE,mBAAmB;IAC1B,WAAW,EAAE,0BAA0B;IACvC,aAAa,EAAE,4BAA4B;IAC3C,GAAG,EAAE,iBAAiB;CACvB,CAAC;AAEF,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;AAElC,+EAA+E;AAC/E,MAAM,UAAU,gBAAgB,CAAC,KAAyB;IACxD,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED,2EAA2E;AAC3E,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAClC,MAAM,CAAC,IAAI,CAAC,cAAc,CAA2B,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;IACnE,gBAAgB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI;CACL,CAAC,CACH,CAAC;AAEF;;;;;;;;;;GAUG;AACH,MAAM,UAAU,sBAAsB,CAAC,WAAwB;IAC7D,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC;IAC9B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,oBAAoB;QAAE,OAAO,SAAS,CAAC;IAClE,OAAO,qBAAqB,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assign.d.ts","sourceRoot":"","sources":["../../../../../src/services/programs/jobs/instructions/assign.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,iBAAiB,EAAyB,MAAM,aAAa,CAAC;AAC1F,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"assign.d.ts","sourceRoot":"","sources":["../../../../../src/services/programs/jobs/instructions/assign.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,iBAAiB,EAAyB,MAAM,aAAa,CAAC;AAC1F,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAG3D,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,iBAAiB,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAExE,MAAM,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAE1E,wBAAsB,MAAM,CAC1B,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,YAAY,EACxD,EACE,MAAM,EACN,IAAI,EACJ,MAAM,EACN,iBAAiB,EACjB,iBAAiB,EACjB,SAAS,GACV,EAAE,wBAAwB,GAC1B,OAAO,CAAC,iBAAiB,CAAC,CA+C5B"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ipfsHashToSolBytesArray } from '@nosana/ipfs';
|
|
2
2
|
import { generateKeyPairSigner } from '@solana/kit';
|
|
3
|
+
import { resolveProjectAccess } from './projectAccess.js';
|
|
3
4
|
export async function assign({ market, timeout, ipfsHash, node, payer }, { config, deps, client, getRequiredWallet, getStaticAccounts, getNosATA, }) {
|
|
4
5
|
try {
|
|
5
6
|
const wallet = getRequiredWallet();
|
|
@@ -12,7 +13,11 @@ export async function assign({ market, timeout, ipfsHash, node, payer }, { confi
|
|
|
12
13
|
getNosATA(nosPayer.address),
|
|
13
14
|
getStaticAccounts(),
|
|
14
15
|
]);
|
|
15
|
-
const vault = await
|
|
16
|
+
const [vault, projectAccess] = await Promise.all([
|
|
17
|
+
deps.solana.pda([market, config.nosTokenAddress], jobsProgram),
|
|
18
|
+
// the market settings, plus the wallet's access key NFT when the market is protected
|
|
19
|
+
resolveProjectAccess({ deps, client }, wallet.address, market, jobsProgram),
|
|
20
|
+
]);
|
|
16
21
|
// Convert IPFS hash to Solana bytes array
|
|
17
22
|
const ipfsJobBytes = ipfsHashToSolBytesArray(ipfsHash);
|
|
18
23
|
return client.getAssignInstruction({
|
|
@@ -26,6 +31,7 @@ export async function assign({ market, timeout, ipfsHash, node, payer }, { confi
|
|
|
26
31
|
vault: vault,
|
|
27
32
|
payer: nosPayer,
|
|
28
33
|
authority: wallet,
|
|
34
|
+
...projectAccess,
|
|
29
35
|
...staticAccounts,
|
|
30
36
|
}, {
|
|
31
37
|
programAddress: jobsProgram,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assign.js","sourceRoot":"","sources":["../../../../../src/services/programs/jobs/instructions/assign.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAwC,qBAAqB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"assign.js","sourceRoot":"","sources":["../../../../../src/services/programs/jobs/instructions/assign.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAwC,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAG1F,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAc1D,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAgB,EACxD,EACE,MAAM,EACN,IAAI,EACJ,MAAM,EACN,iBAAiB,EACjB,iBAAiB,EACjB,SAAS,GACgB;IAE3B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;QACnC,4CAA4C;QAC5C,MAAM,QAAQ,GAAG,KAAK,IAAI,MAAM,CAAC;QAEjC,wCAAwC;QACxC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,sBAAsB,EAAE,EAAE,WAAW,EAAE,GAAG,cAAc,EAAE,CAAC,GAChF,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,qBAAqB,EAAE;YACvB,qBAAqB,EAAE;YACvB,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC;YAC3B,iBAAiB,EAAE;SACpB,CAAC,CAAC;QACL,MAAM,CAAC,KAAK,EAAE,aAAa,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC/C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC,EAAE,WAAW,CAAC;YAC9D,qFAAqF;YACrF,oBAAoB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC;SAC5E,CAAC,CAAC;QAEH,0CAA0C;QAC1C,MAAM,YAAY,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC;QAEvD,OAAO,MAAM,CAAC,oBAAoB,CAChC;YACE,GAAG,EAAE,MAAM;YACX,GAAG,EAAE,MAAM;YACX,IAAI;YACJ,MAAM;YACN,OAAO,EAAE,IAAI,UAAU,CAAC,YAAY,CAAC;YACrC,OAAO;YACP,IAAI,EAAE,sBAAsB;YAC5B,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,QAAQ;YACf,SAAS,EAAE,MAAM;YACjB,GAAG,aAAa;YAChB,GAAG,cAAc;SAClB,EACD;YACE,cAAc,EAAE,WAAW;SAC5B,CACF,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,YAAY,GAAG,wCAAwC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QAChH,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;IAChC,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"close.d.ts","sourceRoot":"","sources":["../../../../../src/services/programs/jobs/instructions/close.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"close.d.ts","sourceRoot":"","sources":["../../../../../src/services/programs/jobs/instructions/close.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAG3D,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,iBAAiB,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEtE,MAAM,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAEvE,wBAAsB,KAAK,CACzB,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,WAAW,EAC9B,EACE,MAAM,EACN,IAAI,EACJ,MAAM,EACN,iBAAiB,EACjB,iBAAiB,EACjB,SAAS,GACV,EAAE,wBAAwB,GAC1B,OAAO,CAAC,gBAAgB,CAAC,CAkC3B"}
|
|
@@ -1,20 +1,25 @@
|
|
|
1
|
+
import { getMarketSettingsPda } from './projectAccess.js';
|
|
1
2
|
export async function close({ market, payer }, { config, deps, client, getRequiredWallet, getStaticAccounts, getNosATA, }) {
|
|
2
3
|
try {
|
|
3
4
|
const wallet = getRequiredWallet();
|
|
4
5
|
// Use provided payer or fall back to wallet
|
|
5
6
|
const nosPayer = payer ?? wallet;
|
|
6
|
-
// Get jobs program address, user ATA, and derive vault
|
|
7
|
+
// Get jobs program address, user ATA, and derive the vault and settings PDAs
|
|
7
8
|
const [{ jobsProgram }, userATA] = await Promise.all([
|
|
8
9
|
getStaticAccounts(),
|
|
9
10
|
getNosATA(nosPayer.address),
|
|
10
11
|
]);
|
|
11
|
-
const vault = await
|
|
12
|
-
|
|
12
|
+
const [vault, marketSettings] = await Promise.all([
|
|
13
|
+
deps.solana.pda([market, config.nosTokenAddress], jobsProgram),
|
|
14
|
+
getMarketSettingsPda(deps, market, jobsProgram),
|
|
15
|
+
]);
|
|
16
|
+
// Create the close instruction, the settings account is closed with the market when it exists
|
|
13
17
|
return client.getCloseInstruction({
|
|
14
18
|
market,
|
|
15
19
|
vault,
|
|
16
20
|
user: userATA,
|
|
17
21
|
authority: nosPayer,
|
|
22
|
+
marketSettings,
|
|
18
23
|
}, {
|
|
19
24
|
programAddress: jobsProgram,
|
|
20
25
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"close.js","sourceRoot":"","sources":["../../../../../src/services/programs/jobs/instructions/close.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"close.js","sourceRoot":"","sources":["../../../../../src/services/programs/jobs/instructions/close.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAW1D,MAAM,CAAC,KAAK,UAAU,KAAK,CACzB,EAAE,MAAM,EAAE,KAAK,EAAe,EAC9B,EACE,MAAM,EACN,IAAI,EACJ,MAAM,EACN,iBAAiB,EACjB,iBAAiB,EACjB,SAAS,GACgB;IAE3B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;QACnC,4CAA4C;QAC5C,MAAM,QAAQ,GAAG,KAAK,IAAI,MAAM,CAAC;QAEjC,6EAA6E;QAC7E,MAAM,CAAC,EAAE,WAAW,EAAE,EAAE,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACnD,iBAAiB,EAAE;YACnB,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC;SAC5B,CAAC,CAAC;QACH,MAAM,CAAC,KAAK,EAAE,cAAc,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAChD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC,EAAE,WAAW,CAAC;YAC9D,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC;SAChD,CAAC,CAAC;QAEH,8FAA8F;QAC9F,OAAO,MAAM,CAAC,mBAAmB,CAC/B;YACE,MAAM;YACN,KAAK;YACL,IAAI,EAAE,OAAO;YACb,SAAS,EAAE,QAAQ;YACnB,cAAc;SACf,EACD;YACE,cAAc,EAAE,WAAW;SAC5B,CACF,CAAC;IACJ,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,10 @@
|
|
|
1
|
+
import type { Address } from '@solana/kit';
|
|
2
|
+
import type { getCloseSettingsInstruction } from '@nosana/jobs-program';
|
|
3
|
+
import type { InstructionsHelperParams } from './types.js';
|
|
4
|
+
export type CloseMarketSettingsParams = {
|
|
5
|
+
market: Address;
|
|
6
|
+
};
|
|
7
|
+
export type CloseMarketSettingsInstruction = ReturnType<typeof getCloseSettingsInstruction>;
|
|
8
|
+
export type CloseMarketSettings = (params: CloseMarketSettingsParams) => Promise<CloseMarketSettingsInstruction>;
|
|
9
|
+
export declare function closeMarketSettings({ market }: CloseMarketSettingsParams, { deps, client, getRequiredWallet, getStaticAccounts }: InstructionsHelperParams): Promise<CloseMarketSettingsInstruction>;
|
|
10
|
+
//# sourceMappingURL=closeSettings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"closeSettings.d.ts","sourceRoot":"","sources":["../../../../../src/services/programs/jobs/instructions/closeSettings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAG3D,MAAM,MAAM,yBAAyB,GAAG;IACtC,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG,UAAU,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAE5F,MAAM,MAAM,mBAAmB,GAAG,CAChC,MAAM,EAAE,yBAAyB,KAC9B,OAAO,CAAC,8BAA8B,CAAC,CAAC;AAE7C,wBAAsB,mBAAmB,CACvC,EAAE,MAAM,EAAE,EAAE,yBAAyB,EACrC,EAAE,IAAI,EAAE,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,EAAE,wBAAwB,GAC/E,OAAO,CAAC,8BAA8B,CAAC,CAsBzC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { getMarketSettingsPda } from './projectAccess.js';
|
|
2
|
+
export async function closeMarketSettings({ market }, { deps, client, getRequiredWallet, getStaticAccounts }) {
|
|
3
|
+
try {
|
|
4
|
+
const wallet = getRequiredWallet();
|
|
5
|
+
const { jobsProgram } = await getStaticAccounts();
|
|
6
|
+
const marketSettings = await getMarketSettingsPda(deps, market, jobsProgram);
|
|
7
|
+
// Create the close settings instruction, the market is open to all projects afterwards
|
|
8
|
+
return client.getCloseSettingsInstruction({
|
|
9
|
+
market,
|
|
10
|
+
marketSettings,
|
|
11
|
+
authority: wallet,
|
|
12
|
+
}, {
|
|
13
|
+
programAddress: jobsProgram,
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
catch (err) {
|
|
17
|
+
const errorMessage = `Failed to create close settings instruction: ${err instanceof Error ? err.message : String(err)}`;
|
|
18
|
+
deps.logger.error(errorMessage);
|
|
19
|
+
throw new Error(errorMessage);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=closeSettings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"closeSettings.js","sourceRoot":"","sources":["../../../../../src/services/programs/jobs/instructions/closeSettings.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAY1D,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,EAAE,MAAM,EAA6B,EACrC,EAAE,IAAI,EAAE,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,EAA4B;IAEhF,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;QACnC,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,iBAAiB,EAAE,CAAC;QAClD,MAAM,cAAc,GAAG,MAAM,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QAE7E,uFAAuF;QACvF,OAAO,MAAM,CAAC,2BAA2B,CACvC;YACE,MAAM;YACN,cAAc;YACd,SAAS,EAAE,MAAM;SAClB,EACD;YACE,cAAc,EAAE,WAAW;SAC5B,CACF,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,YAAY,GAAG,gDAAgD,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QACxH,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;IAChC,CAAC;AACH,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export * from './assign.js';
|
|
2
2
|
export * from './close.js';
|
|
3
|
+
export * from './closeSettings.js';
|
|
3
4
|
export * from './complete.js';
|
|
4
5
|
export * from './delist.js';
|
|
5
6
|
export * from './end.js';
|
|
@@ -9,6 +10,8 @@ export * from './complete.js';
|
|
|
9
10
|
export * from './finish.js';
|
|
10
11
|
export * from './open.js';
|
|
11
12
|
export * from './quit.js';
|
|
13
|
+
export * from './setSettings.js';
|
|
14
|
+
export { getMarketSettingsPda } from './projectAccess.js';
|
|
12
15
|
export * from './work.js';
|
|
13
16
|
export * from './stop.js';
|
|
14
17
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/services/programs/jobs/instructions/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/services/programs/jobs/instructions/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export * from './assign.js';
|
|
2
2
|
export * from './close.js';
|
|
3
|
+
export * from './closeSettings.js';
|
|
3
4
|
export * from './complete.js';
|
|
4
5
|
export * from './delist.js';
|
|
5
6
|
export * from './end.js';
|
|
@@ -9,6 +10,8 @@ export * from './complete.js';
|
|
|
9
10
|
export * from './finish.js';
|
|
10
11
|
export * from './open.js';
|
|
11
12
|
export * from './quit.js';
|
|
13
|
+
export * from './setSettings.js';
|
|
14
|
+
export { getMarketSettingsPda } from './projectAccess.js';
|
|
12
15
|
export * from './work.js';
|
|
13
16
|
export * from './stop.js';
|
|
14
17
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/services/programs/jobs/instructions/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/services/programs/jobs/instructions/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../../../src/services/programs/jobs/instructions/list.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,iBAAiB,EAAyB,MAAM,aAAa,CAAC;AAE1F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../../../src/services/programs/jobs/instructions/list.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,iBAAiB,EAAyB,MAAM,aAAa,CAAC;AAE1F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAG3D,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,iBAAiB,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEpE,MAAM,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,UAAU,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;AAEpE,wBAAsB,IAAI,CACxB,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,UAAU,EAChD,EACE,MAAM,EACN,IAAI,EACJ,MAAM,EACN,iBAAiB,EACjB,iBAAiB,EACjB,SAAS,GACV,EAAE,wBAAwB,GAC1B,OAAO,CAAC,eAAe,CAAC,CA+C1B"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ipfsHashToSolBytesArray } from '@nosana/ipfs';
|
|
2
2
|
import { generateKeyPairSigner } from '@solana/kit';
|
|
3
|
+
import { resolveProjectAccess } from './projectAccess.js';
|
|
3
4
|
export async function list({ market, timeout, ipfsHash, payer }, { config, deps, client, getRequiredWallet, getStaticAccounts, getNosATA, }) {
|
|
4
5
|
try {
|
|
5
6
|
const wallet = getRequiredWallet();
|
|
@@ -12,7 +13,11 @@ export async function list({ market, timeout, ipfsHash, payer }, { config, deps,
|
|
|
12
13
|
getNosATA(nosPayer.address),
|
|
13
14
|
getStaticAccounts(),
|
|
14
15
|
]);
|
|
15
|
-
const vault = await
|
|
16
|
+
const [vault, projectAccess] = await Promise.all([
|
|
17
|
+
deps.solana.pda([market, config.nosTokenAddress], jobsProgram),
|
|
18
|
+
// the market settings, plus the wallet's access key NFT when the market is protected
|
|
19
|
+
resolveProjectAccess({ deps, client }, wallet.address, market, jobsProgram),
|
|
20
|
+
]);
|
|
16
21
|
// Convert IPFS hash to Solana bytes array
|
|
17
22
|
const ipfsJobBytes = ipfsHashToSolBytesArray(ipfsHash);
|
|
18
23
|
// Create the list instruction
|
|
@@ -26,6 +31,7 @@ export async function list({ market, timeout, ipfsHash, payer }, { config, deps,
|
|
|
26
31
|
vault: vault,
|
|
27
32
|
payer: nosPayer,
|
|
28
33
|
authority: wallet,
|
|
34
|
+
...projectAccess,
|
|
29
35
|
...staticAccounts,
|
|
30
36
|
}, {
|
|
31
37
|
programAddress: jobsProgram,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../../src/services/programs/jobs/instructions/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAwC,qBAAqB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../../src/services/programs/jobs/instructions/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAwC,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAI1F,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAa1D,MAAM,CAAC,KAAK,UAAU,IAAI,CACxB,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAc,EAChD,EACE,MAAM,EACN,IAAI,EACJ,MAAM,EACN,iBAAiB,EACjB,iBAAiB,EACjB,SAAS,GACgB;IAE3B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;QACnC,4CAA4C;QAC5C,MAAM,QAAQ,GAAG,KAAK,IAAI,MAAM,CAAC;QAEjC,wCAAwC;QACxC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,sBAAsB,EAAE,EAAE,WAAW,EAAE,GAAG,cAAc,EAAE,CAAC,GAChF,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,qBAAqB,EAAE;YACvB,qBAAqB,EAAE;YACvB,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC;YAC3B,iBAAiB,EAAE;SACpB,CAAC,CAAC;QACL,MAAM,CAAC,KAAK,EAAE,aAAa,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC/C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC,EAAE,WAAW,CAAC;YAC9D,qFAAqF;YACrF,oBAAoB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC;SAC5E,CAAC,CAAC;QAEH,0CAA0C;QAC1C,MAAM,YAAY,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC;QAEvD,8BAA8B;QAC9B,OAAO,MAAM,CAAC,kBAAkB,CAC9B;YACE,GAAG,EAAE,MAAM;YACX,GAAG,EAAE,MAAM;YACX,MAAM;YACN,OAAO,EAAE,IAAI,UAAU,CAAC,YAAY,CAAC;YACrC,OAAO;YACP,IAAI,EAAE,sBAAsB;YAC5B,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,QAAQ;YACf,SAAS,EAAE,MAAM;YACjB,GAAG,aAAa;YAChB,GAAG,cAAc;SAClB,EACD;YACE,cAAc,EAAE,WAAW;SAC5B,CACF,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,YAAY,GAAG,sCAAsC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9G,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;IAChC,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { Address } from '@solana/kit';
|
|
2
|
+
import type { ProgramDeps } from '../../../../types.js';
|
|
3
|
+
import type { InstructionsHelperParams } from './types.js';
|
|
4
|
+
/** Seed prefix of a market's `MarketSettingsAccount` PDA: `["settings", market]` */
|
|
5
|
+
export declare const MARKET_SETTINGS_SEED = "settings";
|
|
6
|
+
/**
|
|
7
|
+
* Derive the `MarketSettingsAccount` PDA of a market. An uninitialised PDA means the
|
|
8
|
+
* market is open to all projects.
|
|
9
|
+
*/
|
|
10
|
+
export declare function getMarketSettingsPda(deps: ProgramDeps, market: Address, jobsProgram: Address): Promise<Address>;
|
|
11
|
+
export type ProjectAccessAccounts = {
|
|
12
|
+
marketSettings: Address;
|
|
13
|
+
projectNft?: Address;
|
|
14
|
+
projectMetadata?: Address;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Resolve the accounts a project needs to post to a market. Every market takes its
|
|
18
|
+
* settings PDA. A protected market also needs proof that the project holds the market's
|
|
19
|
+
* access key: the wallet's token account of an NFT from that collection and its Metaplex
|
|
20
|
+
* metadata, both looked up from the wallet.
|
|
21
|
+
*
|
|
22
|
+
* @throws when the market is protected and the wallet holds no NFT of the access key collection
|
|
23
|
+
*/
|
|
24
|
+
export declare function resolveProjectAccess({ deps, client }: Pick<InstructionsHelperParams, 'deps' | 'client'>, owner: Address, market: Address, jobsProgram: Address): Promise<ProjectAccessAccounts>;
|
|
25
|
+
//# sourceMappingURL=projectAccess.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projectAccess.d.ts","sourceRoot":"","sources":["../../../../../src/services/programs/jobs/instructions/projectAccess.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAE3D,oFAAoF;AACpF,eAAO,MAAM,oBAAoB,aAAa,CAAC;AAE/C;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,WAAW,EACjB,MAAM,EAAE,OAAO,EACf,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,OAAO,CAAC,CAElB;AAED,MAAM,MAAM,qBAAqB,GAAG;IAClC,cAAc,EAAE,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CACxC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,wBAAwB,EAAE,MAAM,GAAG,QAAQ,CAAC,EACnE,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,OAAO,EACf,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,qBAAqB,CAAC,CAmBhC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { findAssociatedTokenPda, TOKEN_PROGRAM_ADDRESS } from '@solana-program/token';
|
|
2
|
+
import { findNftMetadataPda } from '../../../solana/nftMetadata.js';
|
|
3
|
+
/** Seed prefix of a market's `MarketSettingsAccount` PDA: `["settings", market]` */
|
|
4
|
+
export const MARKET_SETTINGS_SEED = 'settings';
|
|
5
|
+
/**
|
|
6
|
+
* Derive the `MarketSettingsAccount` PDA of a market. An uninitialised PDA means the
|
|
7
|
+
* market is open to all projects.
|
|
8
|
+
*/
|
|
9
|
+
export function getMarketSettingsPda(deps, market, jobsProgram) {
|
|
10
|
+
return deps.solana.pda([MARKET_SETTINGS_SEED, market], jobsProgram);
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Resolve the accounts a project needs to post to a market. Every market takes its
|
|
14
|
+
* settings PDA. A protected market also needs proof that the project holds the market's
|
|
15
|
+
* access key: the wallet's token account of an NFT from that collection and its Metaplex
|
|
16
|
+
* metadata, both looked up from the wallet.
|
|
17
|
+
*
|
|
18
|
+
* @throws when the market is protected and the wallet holds no NFT of the access key collection
|
|
19
|
+
*/
|
|
20
|
+
export async function resolveProjectAccess({ deps, client }, owner, market, jobsProgram) {
|
|
21
|
+
const marketSettings = await getMarketSettingsPda(deps, market, jobsProgram);
|
|
22
|
+
const settings = await client.fetchMaybeMarketSettingsAccount(deps.solana.rpc, marketSettings);
|
|
23
|
+
if (!settings.exists) {
|
|
24
|
+
return { marketSettings };
|
|
25
|
+
}
|
|
26
|
+
const { projectAccessKey } = settings.data;
|
|
27
|
+
const nft = await deps.solana.getNftFromCollection(owner, projectAccessKey);
|
|
28
|
+
if (!nft) {
|
|
29
|
+
throw new Error(`Market ${market} is protected: wallet ${owner} holds no access key NFT of collection ${projectAccessKey}`);
|
|
30
|
+
}
|
|
31
|
+
const [[projectNft], projectMetadata] = await Promise.all([
|
|
32
|
+
findAssociatedTokenPda({ mint: nft, owner, tokenProgram: TOKEN_PROGRAM_ADDRESS }),
|
|
33
|
+
findNftMetadataPda(nft),
|
|
34
|
+
]);
|
|
35
|
+
return { marketSettings, projectNft, projectMetadata };
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=projectAccess.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projectAccess.js","sourceRoot":"","sources":["../../../../../src/services/programs/jobs/instructions/projectAccess.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAEtF,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAGpE,oFAAoF;AACpF,MAAM,CAAC,MAAM,oBAAoB,GAAG,UAAU,CAAC;AAE/C;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAClC,IAAiB,EACjB,MAAe,EACf,WAAoB;IAEpB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,oBAAoB,EAAE,MAAM,CAAC,EAAE,WAAW,CAAC,CAAC;AACtE,CAAC;AAQD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,EAAE,IAAI,EAAE,MAAM,EAAqD,EACnE,KAAc,EACd,MAAe,EACf,WAAoB;IAEpB,MAAM,cAAc,GAAG,MAAM,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IAC7E,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,+BAA+B,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IAC/F,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QACrB,OAAO,EAAE,cAAc,EAAE,CAAC;IAC5B,CAAC;IAED,MAAM,EAAE,gBAAgB,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC;IAC3C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;IAC5E,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CACb,UAAU,MAAM,yBAAyB,KAAK,0CAA0C,gBAAgB,EAAE,CAC3G,CAAC;IACJ,CAAC;IACD,MAAM,CAAC,CAAC,UAAU,CAAC,EAAE,eAAe,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACxD,sBAAsB,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,qBAAqB,EAAE,CAAC;QACjF,kBAAkB,CAAC,GAAG,CAAC;KACxB,CAAC,CAAC;IACH,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC;AACzD,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Address } from '@solana/kit';
|
|
2
|
+
import type { getSetSettingsInstruction } from '@nosana/jobs-program';
|
|
3
|
+
import type { InstructionsHelperParams } from './types.js';
|
|
4
|
+
export type SetMarketSettingsParams = {
|
|
5
|
+
market: Address;
|
|
6
|
+
/** NFT collection whose holders may post jobs to the market */
|
|
7
|
+
projectAccessKey: Address;
|
|
8
|
+
};
|
|
9
|
+
export type SetMarketSettingsInstruction = ReturnType<typeof getSetSettingsInstruction>;
|
|
10
|
+
export type SetMarketSettings = (params: SetMarketSettingsParams) => Promise<SetMarketSettingsInstruction>;
|
|
11
|
+
export declare function setMarketSettings({ market, projectAccessKey }: SetMarketSettingsParams, { deps, client, getRequiredWallet, getStaticAccounts }: InstructionsHelperParams): Promise<SetMarketSettingsInstruction>;
|
|
12
|
+
//# sourceMappingURL=setSettings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setSettings.d.ts","sourceRoot":"","sources":["../../../../../src/services/programs/jobs/instructions/setSettings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAG3D,MAAM,MAAM,uBAAuB,GAAG;IACpC,MAAM,EAAE,OAAO,CAAC;IAChB,+DAA+D;IAC/D,gBAAgB,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG,UAAU,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAExF,MAAM,MAAM,iBAAiB,GAAG,CAC9B,MAAM,EAAE,uBAAuB,KAC5B,OAAO,CAAC,4BAA4B,CAAC,CAAC;AAE3C,wBAAsB,iBAAiB,CACrC,EAAE,MAAM,EAAE,gBAAgB,EAAE,EAAE,uBAAuB,EACrD,EAAE,IAAI,EAAE,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,EAAE,wBAAwB,GAC/E,OAAO,CAAC,4BAA4B,CAAC,CAuBvC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { getMarketSettingsPda } from './projectAccess.js';
|
|
2
|
+
export async function setMarketSettings({ market, projectAccessKey }, { deps, client, getRequiredWallet, getStaticAccounts }) {
|
|
3
|
+
try {
|
|
4
|
+
const wallet = getRequiredWallet();
|
|
5
|
+
const { jobsProgram } = await getStaticAccounts();
|
|
6
|
+
const marketSettings = await getMarketSettingsPda(deps, market, jobsProgram);
|
|
7
|
+
// Create the set settings instruction, the settings account is created when needed
|
|
8
|
+
return client.getSetSettingsInstruction({
|
|
9
|
+
market,
|
|
10
|
+
marketSettings,
|
|
11
|
+
projectAccessKey,
|
|
12
|
+
authority: wallet,
|
|
13
|
+
}, {
|
|
14
|
+
programAddress: jobsProgram,
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
catch (err) {
|
|
18
|
+
const errorMessage = `Failed to create set settings instruction: ${err instanceof Error ? err.message : String(err)}`;
|
|
19
|
+
deps.logger.error(errorMessage);
|
|
20
|
+
throw new Error(errorMessage);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=setSettings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setSettings.js","sourceRoot":"","sources":["../../../../../src/services/programs/jobs/instructions/setSettings.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAc1D,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,EAAE,MAAM,EAAE,gBAAgB,EAA2B,EACrD,EAAE,IAAI,EAAE,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,EAA4B;IAEhF,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;QACnC,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,iBAAiB,EAAE,CAAC;QAClD,MAAM,cAAc,GAAG,MAAM,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QAE7E,mFAAmF;QACnF,OAAO,MAAM,CAAC,yBAAyB,CACrC;YACE,MAAM;YACN,cAAc;YACd,gBAAgB;YAChB,SAAS,EAAE,MAAM;SAClB,EACD;YACE,cAAc,EAAE,WAAW;SAC5B,CACF,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,YAAY,GAAG,8CAA8C,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QACtH,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;IAChC,CAAC;AACH,CAAC"}
|
|
@@ -16,6 +16,14 @@ export interface StakeProgram {
|
|
|
16
16
|
* Create a stake instruction for creating/initializing a stake account
|
|
17
17
|
*/
|
|
18
18
|
stake: Instructions.CreateStake;
|
|
19
|
+
/**
|
|
20
|
+
* Create the instructions that top up the wallet's existing stake account by `amount`
|
|
21
|
+
* (NOS base units) and keep its staking rewards in step. In order:
|
|
22
|
+
* rewards `enter` (only when the wallet has no rewards account yet), pools `claimFee`
|
|
23
|
+
* for `pool` (default: `programs.rewardsPoolAddress`), stake `topup`, rewards `sync`.
|
|
24
|
+
* Send them together in one transaction.
|
|
25
|
+
*/
|
|
26
|
+
topup: Instructions.CreateTopup;
|
|
19
27
|
/**
|
|
20
28
|
* Derive the stake account PDA address for a given owner (defaults to wallet address)
|
|
21
29
|
*/
|
|
@@ -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,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,
|
|
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;;;;;;OAMG;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,CA2HzF"}
|
|
@@ -57,6 +57,9 @@ export function createStakeProgram(deps, config) {
|
|
|
57
57
|
async stake(params) {
|
|
58
58
|
return Instructions.stake(params, createInstructionsHelper());
|
|
59
59
|
},
|
|
60
|
+
async topup(params) {
|
|
61
|
+
return Instructions.topup(params, createInstructionsHelper());
|
|
62
|
+
},
|
|
60
63
|
async getAddress(owner) {
|
|
61
64
|
const resolvedOwner = owner ?? getRequiredWallet().address;
|
|
62
65
|
return deps.solana.pda(['stake', config.nosTokenAddress, resolvedOwner], programId);
|
|
@@ -1 +1 @@
|
|
|
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;
|
|
1
|
+
{"version":3,"file":"StakeProgram.js","sourceRoot":"","sources":["../../../../src/services/programs/stake/StakeProgram.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/services/programs/stake/instructions/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/services/programs/stake/instructions/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/services/programs/stake/instructions/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/services/programs/stake/instructions/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { Address } from '@solana/kit';
|
|
2
|
+
import type { getTopupInstruction } from '@nosana/stake-program';
|
|
3
|
+
import * as rewardsClient from '@nosana/rewards-program';
|
|
4
|
+
import * as poolsClient from '@nosana/pools-program';
|
|
5
|
+
import type { InstructionsHelperParams } from './types.js';
|
|
6
|
+
export type TopupParams = {
|
|
7
|
+
amount: number | bigint;
|
|
8
|
+
/**
|
|
9
|
+
* Pools program pool whose accrued emission is claimed into the rewards vault
|
|
10
|
+
* before the topup (a pool with claim type `AddFee` and the rewards vault as
|
|
11
|
+
* beneficiary). Defaults to `programs.rewardsPoolAddress` from the client config.
|
|
12
|
+
*/
|
|
13
|
+
pool?: Address;
|
|
14
|
+
};
|
|
15
|
+
export type EnterInstruction = ReturnType<typeof rewardsClient.getEnterInstruction>;
|
|
16
|
+
export type ClaimFeeInstruction = ReturnType<typeof poolsClient.getClaimFeeInstruction>;
|
|
17
|
+
export type TopupInstruction = ReturnType<typeof getTopupInstruction>;
|
|
18
|
+
export type SyncInstruction = ReturnType<typeof rewardsClient.getSyncInstruction>;
|
|
19
|
+
export type TopupInstructions = [ClaimFeeInstruction, TopupInstruction, SyncInstruction] | [EnterInstruction, ClaimFeeInstruction, TopupInstruction, SyncInstruction];
|
|
20
|
+
export type CreateTopup = (params: TopupParams) => Promise<TopupInstructions>;
|
|
21
|
+
export declare function topup(params: TopupParams, { config, deps, client, getRequiredWallet, getNosATA }: InstructionsHelperParams): Promise<TopupInstructions>;
|
|
22
|
+
//# sourceMappingURL=topup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"topup.d.ts","sourceRoot":"","sources":["../../../../../src/services/programs/stake/instructions/topup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,KAAK,aAAa,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,WAAW,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAE3D,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB;;;;OAIG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,mBAAmB,CAAC,CAAC;AACpF,MAAM,MAAM,mBAAmB,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,sBAAsB,CAAC,CAAC;AACxF,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC;AACtE,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,kBAAkB,CAAC,CAAC;AAGlF,MAAM,MAAM,iBAAiB,GACzB,CAAC,mBAAmB,EAAE,gBAAgB,EAAE,eAAe,CAAC,GACxD,CAAC,gBAAgB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,eAAe,CAAC,CAAC;AAE/E,MAAM,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAE9E,wBAAsB,KAAK,CACzB,MAAM,EAAE,WAAW,EACnB,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,iBAAiB,EAAE,SAAS,EAAE,EAAE,wBAAwB,GAC/E,OAAO,CAAC,iBAAiB,CAAC,CAsE5B"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import * as rewardsClient from '@nosana/rewards-program';
|
|
2
|
+
import * as poolsClient from '@nosana/pools-program';
|
|
3
|
+
export async function topup(params, { config, deps, client, getRequiredWallet, getNosATA }) {
|
|
4
|
+
try {
|
|
5
|
+
const wallet = getRequiredWallet();
|
|
6
|
+
const mint = config.nosTokenAddress;
|
|
7
|
+
const stakeProgram = config.stakeAddress;
|
|
8
|
+
const rewardsProgram = config.rewardsAddress;
|
|
9
|
+
const poolsProgram = config.poolsAddress;
|
|
10
|
+
const pool = params.pool ?? config.rewardsPoolAddress;
|
|
11
|
+
if (!pool) {
|
|
12
|
+
throw new Error('No rewards pool: pass `pool` or set `programs.rewardsPoolAddress` in the client config');
|
|
13
|
+
}
|
|
14
|
+
const [userAta, vault, stakePda, reward, reflection, rewardsVault, poolVault] = await Promise.all([
|
|
15
|
+
getNosATA(wallet.address),
|
|
16
|
+
deps.solana.pda(['vault', mint, wallet.address], stakeProgram),
|
|
17
|
+
deps.solana.pda(['stake', mint, wallet.address], stakeProgram),
|
|
18
|
+
deps.solana.pda(['reward', wallet.address], rewardsProgram),
|
|
19
|
+
deps.solana.pda(['reflection'], rewardsProgram),
|
|
20
|
+
deps.solana.pda([mint], rewardsProgram),
|
|
21
|
+
deps.solana.pda(['vault', pool], poolsProgram),
|
|
22
|
+
]);
|
|
23
|
+
const rewardAccount = await rewardsClient.fetchMaybeRewardAccount(deps.solana.rpc, reward);
|
|
24
|
+
const claimFeeInstruction = poolsClient.getClaimFeeInstruction({
|
|
25
|
+
vault: poolVault,
|
|
26
|
+
rewardsReflection: reflection,
|
|
27
|
+
rewardsVault,
|
|
28
|
+
pool,
|
|
29
|
+
authority: wallet,
|
|
30
|
+
rewardsProgram,
|
|
31
|
+
}, { programAddress: poolsProgram });
|
|
32
|
+
const topupInstruction = client.getTopupInstruction({
|
|
33
|
+
user: userAta,
|
|
34
|
+
vault,
|
|
35
|
+
stake: stakePda,
|
|
36
|
+
authority: wallet,
|
|
37
|
+
amount: params.amount,
|
|
38
|
+
}, { programAddress: stakeProgram });
|
|
39
|
+
const syncInstruction = rewardsClient.getSyncInstruction({ reward, stake: stakePda, reflection }, { programAddress: rewardsProgram });
|
|
40
|
+
if (rewardAccount.exists) {
|
|
41
|
+
return [claimFeeInstruction, topupInstruction, syncInstruction];
|
|
42
|
+
}
|
|
43
|
+
const enterInstruction = rewardsClient.getEnterInstruction({ reflection, stake: stakePda, reward, authority: wallet }, { programAddress: rewardsProgram });
|
|
44
|
+
return [enterInstruction, claimFeeInstruction, topupInstruction, syncInstruction];
|
|
45
|
+
}
|
|
46
|
+
catch (err) {
|
|
47
|
+
const errorMessage = `Failed to create topup instructions: ${err instanceof Error ? err.message : String(err)}`;
|
|
48
|
+
deps.logger.error(errorMessage);
|
|
49
|
+
throw new Error(errorMessage);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=topup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"topup.js","sourceRoot":"","sources":["../../../../../src/services/programs/stake/instructions/topup.ts"],"names":[],"mappings":"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"}
|