```\nfunction requestWithdraw(\n    Types.State storage state,\n    address from,\n    uint256 primaryAmount,\n    uint256 secondaryAmount\n)\n    external\n{\n    require(isWithdrawValid(state, msg.sender, from, primaryAmount, secondaryAmount), Errors.WITHDRAW_INVALID);\n    state.pendingPrimaryWithdraw[msg.sender] = primaryAmount;\n    state.pendingSecondaryWithdraw[msg.sender] = secondaryAmount;\n    state.withdrawExecutionTimestamp[msg.sender] = block.timestamp + state.withdrawTimeLock;\n    emit RequestWithdraw(msg.sender, primaryAmount, secondaryAmount, state.withdrawExecutionTimestamp[msg.sender]);\n}\n```\n