@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.
Files changed (70) hide show
  1. package/README.md +79 -8
  2. package/dist/config/defaultConfigs.d.ts.map +1 -1
  3. package/dist/config/defaultConfigs.js +2 -0
  4. package/dist/config/defaultConfigs.js.map +1 -1
  5. package/dist/config/types.d.ts +9 -0
  6. package/dist/config/types.d.ts.map +1 -1
  7. package/dist/index.d.ts +24 -4
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +10 -2
  10. package/dist/index.js.map +1 -1
  11. package/dist/services/programs/jobs/JobsProgram.d.ts +18 -0
  12. package/dist/services/programs/jobs/JobsProgram.d.ts.map +1 -1
  13. package/dist/services/programs/jobs/JobsProgram.js +27 -0
  14. package/dist/services/programs/jobs/JobsProgram.js.map +1 -1
  15. package/dist/services/programs/jobs/computeUnits.generated.d.ts +2 -0
  16. package/dist/services/programs/jobs/computeUnits.generated.d.ts.map +1 -1
  17. package/dist/services/programs/jobs/computeUnits.generated.js +2 -0
  18. package/dist/services/programs/jobs/computeUnits.generated.js.map +1 -1
  19. package/dist/services/programs/jobs/decode.d.ts.map +1 -1
  20. package/dist/services/programs/jobs/decode.js +6 -1
  21. package/dist/services/programs/jobs/decode.js.map +1 -1
  22. package/dist/services/programs/jobs/discriminators.d.ts.map +1 -1
  23. package/dist/services/programs/jobs/discriminators.js +3 -1
  24. package/dist/services/programs/jobs/discriminators.js.map +1 -1
  25. package/dist/services/programs/jobs/instructions/assign.d.ts.map +1 -1
  26. package/dist/services/programs/jobs/instructions/assign.js +7 -1
  27. package/dist/services/programs/jobs/instructions/assign.js.map +1 -1
  28. package/dist/services/programs/jobs/instructions/close.d.ts.map +1 -1
  29. package/dist/services/programs/jobs/instructions/close.js +8 -3
  30. package/dist/services/programs/jobs/instructions/close.js.map +1 -1
  31. package/dist/services/programs/jobs/instructions/closeSettings.d.ts +10 -0
  32. package/dist/services/programs/jobs/instructions/closeSettings.d.ts.map +1 -0
  33. package/dist/services/programs/jobs/instructions/closeSettings.js +22 -0
  34. package/dist/services/programs/jobs/instructions/closeSettings.js.map +1 -0
  35. package/dist/services/programs/jobs/instructions/index.d.ts +3 -0
  36. package/dist/services/programs/jobs/instructions/index.d.ts.map +1 -1
  37. package/dist/services/programs/jobs/instructions/index.js +3 -0
  38. package/dist/services/programs/jobs/instructions/index.js.map +1 -1
  39. package/dist/services/programs/jobs/instructions/list.d.ts.map +1 -1
  40. package/dist/services/programs/jobs/instructions/list.js +7 -1
  41. package/dist/services/programs/jobs/instructions/list.js.map +1 -1
  42. package/dist/services/programs/jobs/instructions/projectAccess.d.ts +25 -0
  43. package/dist/services/programs/jobs/instructions/projectAccess.d.ts.map +1 -0
  44. package/dist/services/programs/jobs/instructions/projectAccess.js +37 -0
  45. package/dist/services/programs/jobs/instructions/projectAccess.js.map +1 -0
  46. package/dist/services/programs/jobs/instructions/setSettings.d.ts +12 -0
  47. package/dist/services/programs/jobs/instructions/setSettings.d.ts.map +1 -0
  48. package/dist/services/programs/jobs/instructions/setSettings.js +23 -0
  49. package/dist/services/programs/jobs/instructions/setSettings.js.map +1 -0
  50. package/dist/services/programs/stake/StakeProgram.d.ts +8 -0
  51. package/dist/services/programs/stake/StakeProgram.d.ts.map +1 -1
  52. package/dist/services/programs/stake/StakeProgram.js +3 -0
  53. package/dist/services/programs/stake/StakeProgram.js.map +1 -1
  54. package/dist/services/programs/stake/instructions/index.d.ts +1 -0
  55. package/dist/services/programs/stake/instructions/index.d.ts.map +1 -1
  56. package/dist/services/programs/stake/instructions/index.js +1 -0
  57. package/dist/services/programs/stake/instructions/index.js.map +1 -1
  58. package/dist/services/programs/stake/instructions/topup.d.ts +22 -0
  59. package/dist/services/programs/stake/instructions/topup.d.ts.map +1 -0
  60. package/dist/services/programs/stake/instructions/topup.js +52 -0
  61. package/dist/services/programs/stake/instructions/topup.js.map +1 -0
  62. package/dist/services/solana/SolanaService.d.ts +16 -0
  63. package/dist/services/solana/SolanaService.d.ts.map +1 -1
  64. package/dist/services/solana/SolanaService.js +48 -1
  65. package/dist/services/solana/SolanaService.js.map +1 -1
  66. package/dist/services/solana/nftMetadata.d.ts +43 -0
  67. package/dist/services/solana/nftMetadata.d.ts.map +1 -0
  68. package/dist/services/solana/nftMetadata.js +60 -0
  69. package/dist/services/solana/nftMetadata.js.map +1 -0
  70. 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;AAe1F,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,CAa1E,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
+ {"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;AAE3D,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,CA0C5B"}
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 deps.solana.pda([market, config.nosTokenAddress], jobsProgram);
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;AAgB1F,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,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC,EAAE,WAAW,CAAC,CAAC;QAEnF,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,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
+ {"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;AAE3D,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,CA8B3B"}
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 PDA
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 deps.solana.pda([market, config.nosTokenAddress], jobsProgram);
12
- // Create the close instruction
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":"AAaA,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,2DAA2D;QAC3D,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,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC,EAAE,WAAW,CAAC,CAAC;QAEnF,+BAA+B;QAC/B,OAAO,MAAM,CAAC,mBAAmB,CAC/B;YACE,MAAM;YACN,KAAK;YACL,IAAI,EAAE,OAAO;YACb,SAAS,EAAE,QAAQ;SACpB,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"}
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;AAE3D,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,CA0C1B"}
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 deps.solana.pda([market, config.nosTokenAddress], jobsProgram);
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;AAgB1F,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,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC,EAAE,WAAW,CAAC,CAAC;QAEnF,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,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"}
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,CAuHzF"}
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":"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"}
1
+ {"version":3,"file":"StakeProgram.js","sourceRoot":"","sources":["../../../../src/services/programs/stake/StakeProgram.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,3 @@
1
1
  export * from './stake.js';
2
+ export * from './topup.js';
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -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,2 +1,3 @@
1
1
  export * from './stake.js';
2
+ export * from './topup.js';
2
3
  //# sourceMappingURL=index.js.map
@@ -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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"}