{"version":3,"file":"getStakeInstructions.cjs","sources":["../../../../src/staking/getStakeInstructions.ts"],"sourcesContent":["import {\n  generateKeyPairSigner,\n  Rpc,\n  SolanaRpcApi,\n  TransactionSigner,\n} from \"@solana/kit\";\n\nimport { getCreateAccountInstruction } from \"@solana-program/system\";\nimport {\n  getInitializeInstruction,\n  getDelegateStakeInstruction,\n} from \"@solana-program/stake\";\n\nimport {\n  HELIUS_VALIDATOR_ID,\n  STAKE_PROGRAM_ID,\n  STAKE_STATE_LEN,\n  StakeInstructionsResult,\n  SYSVAR_CLOCK,\n  SYSVAR_STAKE_HISTORY,\n  UNUSED_STAKE_CONFIG_ACC,\n} from \"./types\";\n\nexport const makeGetStakeInstructions = ({\n  rpc,\n}: {\n  rpc: Rpc<SolanaRpcApi>;\n}) => {\n  return async (\n    owner: TransactionSigner<string>,\n    amountSol: number\n  ): Promise<StakeInstructionsResult> => {\n    const rentExempt = await rpc\n      .getMinimumBalanceForRentExemption(BigInt(STAKE_STATE_LEN))\n      .send();\n\n    const lamports = rentExempt + BigInt(Math.round(amountSol * 1_000_000_000));\n    const stakeAccount = await generateKeyPairSigner();\n\n    const createIx = getCreateAccountInstruction({\n      payer: owner,\n      newAccount: stakeAccount,\n      lamports,\n      space: BigInt(STAKE_STATE_LEN),\n      programAddress: STAKE_PROGRAM_ID,\n    });\n\n    const initIx = getInitializeInstruction({\n      stake: stakeAccount.address,\n      arg0: { staker: owner.address, withdrawer: owner.address },\n      arg1: { unixTimestamp: 0n, epoch: 0n, custodian: owner.address },\n    });\n\n    const delegateIx = getDelegateStakeInstruction({\n      stake: stakeAccount.address,\n      vote: HELIUS_VALIDATOR_ID,\n      clockSysvar: SYSVAR_CLOCK,\n      stakeHistory: SYSVAR_STAKE_HISTORY,\n      unused: UNUSED_STAKE_CONFIG_ACC,\n      stakeAuthority: owner,\n    });\n\n    return {\n      instructions: [createIx, initIx, delegateIx],\n      stakeAccount,\n    };\n  };\n};\n"],"names":["STAKE_STATE_LEN","generateKeyPairSigner","getCreateAccountInstruction","STAKE_PROGRAM_ID","getInitializeInstruction","getDelegateStakeInstruction","HELIUS_VALIDATOR_ID","SYSVAR_CLOCK","SYSVAR_STAKE_HISTORY","UNUSED_STAKE_CONFIG_ACC"],"mappings":";;;;;;;MAuBa,wBAAwB,GAAG,CAAC,EACvC,GAAG,GAGJ,KAAI;AACH,IAAA,OAAO,OACL,KAAgC,EAChC,SAAiB,KACmB;QACpC,MAAM,UAAU,GAAG,MAAM;AACtB,aAAA,iCAAiC,CAAC,MAAM,CAACA,qBAAe,CAAC;AACzD,aAAA,IAAI,EAAE;AAET,QAAA,MAAM,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,UAAa,CAAC,CAAC;AAC3E,QAAA,MAAM,YAAY,GAAG,MAAMC,yBAAqB,EAAE;QAElD,MAAM,QAAQ,GAAGC,kCAA2B,CAAC;AAC3C,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,UAAU,EAAE,YAAY;YACxB,QAAQ;AACR,YAAA,KAAK,EAAE,MAAM,CAACF,qBAAe,CAAC;AAC9B,YAAA,cAAc,EAAEG,sBAAgB;AACjC,SAAA,CAAC;QAEF,MAAM,MAAM,GAAGC,8BAAwB,CAAC;YACtC,KAAK,EAAE,YAAY,CAAC,OAAO;AAC3B,YAAA,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,OAAO,EAAE;AAC1D,YAAA,IAAI,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,OAAO,EAAE;AACjE,SAAA,CAAC;QAEF,MAAM,UAAU,GAAGC,iCAA2B,CAAC;YAC7C,KAAK,EAAE,YAAY,CAAC,OAAO;AAC3B,YAAA,IAAI,EAAEC,yBAAmB;AACzB,YAAA,WAAW,EAAEC,kBAAY;AACzB,YAAA,YAAY,EAAEC,0BAAoB;AAClC,YAAA,MAAM,EAAEC,6BAAuB;AAC/B,YAAA,cAAc,EAAE,KAAK;AACtB,SAAA,CAAC;QAEF,OAAO;AACL,YAAA,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC;YAC5C,YAAY;SACb;AACH,IAAA,CAAC;AACH;;;;"}